0% found this document useful (0 votes)
43 views

1.) SP - Log - End - Etl - Job - Execution: Ltrim Rtrim

This document contains stored procedures used for logging Extract, Transform, Load (ETL) job executions in SQL Server. The procedures log details of ETL jobs like start time, end time, target tables, success/failure, row counts, and errors to database tables for monitoring and auditing purposes. Key procedures include logging the start of a job, end of a job, updating counts during a job, and logging at the file or table level.

Uploaded by

mhkuppal
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views

1.) SP - Log - End - Etl - Job - Execution: Ltrim Rtrim

This document contains stored procedures used for logging Extract, Transform, Load (ETL) job executions in SQL Server. The procedures log details of ETL jobs like start time, end time, target tables, success/failure, row counts, and errors to database tables for monitoring and auditing purposes. Key procedures include logging the start of a job, end of a job, updating counts during a job, and logging at the file or table level.

Uploaded by

mhkuppal
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

1.

) sp_log_end_etl_job_execution
USE [landing]
GO
/****** Object: StoredProcedure [dbo].[sp_log_end_file_etl_job_execution]
Script Date: 09/16/2010 16:28:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--exec sp_LOG_end_etl_job_execution 38,2006,'2010-03-16 00:00:00',103


ALTER procedure [dbo].[sp_log_end_file_etl_job_execution]
@TARGET varchar(100)
,@JOB_ID varchar(50)
,@ENDTIME datetime
,@JOB_STATUS varchar(50)
,@ERROR_ROWS int
AS

--working variables
declare @job int
declare @file_id varchar(50)
declare @TABLE varchar(100)
DECLARE @cursor CURSOR
DECLARE @vjob_status varchar(50)
DECLARE @vjob_id int

--*
set @job=@JOB_ID
--*
set @vjob_status=(select case when ltrim(rtrim(@job_status))=103 then 1 else 0
end)

-->UPDATE dbo.ETL_JOB_EXECUTION
UPDATE Reporting.DBO.ETL_JOB_EXECUTION
SET EXECUTION_STOP=@ENDTIME,SUCCESSFUL_PROCESSING_IND=@vjob_status
WHERE JOB_ID=@job
--*

SET @cursor = CURSOR FOR


Select distinct
A.FILE_ID,A.JOB_ID,A.TARGET_NAME
from Reporting.dbo.FILE_ETL_JOB_HIST A inner join Reporting.DBO.
[FILE_HIST] B
ON A.FILE_ID=B.FILE_ID WHERE A.TARGET_NAME=@TARGET
AND A.job_id=@job
order by
A.FILE_ID
OPEN @cursor

FETCH NEXT FROM @cursor INTO @FILE_ID,@vJOB_ID,@TARGET

WHILE @@FETCH_STATUS <> -1


BEGIN
--*
set @TABLE=@TARGET
EXEC dbo.sp_log_end_file_etl_job_hist_execution
@file_id,@vjob_status,@vjob_id,@TABLE,@ERROR_ROWS
-- ============
-- end cursor body
-- ============
FETCH NEXT FROM @cursor INTO @File_id, @vjob_id,@TARGET
END
CLOSE @cursor
DEALLOCATE @cursor

2.) sp_log_end_file_etl_job_hist_execution
USE [landing]
GO
/****** Object: StoredProcedure [dbo].
[sp_log_end_file_etl_job_hist_execution] Script Date: 09/16/2010 16:59:04
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--exec sp_log_end_file_etl_job_hist_execution 15,1,83,Land_Cognito,0
ALTER procedure [dbo].[sp_log_end_file_etl_job_hist_execution]
@file_id varchar(50)
,@vjob_status varchar(1)
,@vjob_id varchar(50)
,@target varchar(100)
,@error_rows varchar(50)
AS
--*
--Note etl user login needs min read access to all user db's for scan
--*
DECLARE @value int
DECLARE @SQLString nvarchar(500)
DECLARE @sql varchar(500)
DECLARE @variable_string nvarchar(500)
DECLARE @ParmDefinition nvarchar(500)
DECLARE @name varchar(50)

set @sql='
UPDATE Reporting.DBO.FILE_ETL_JOB_HIST
SET TARGET_ROWCOUNT=(SELECT COUNT(*) as CNT FROM '+@target+'
where file_id='+@file_id+' group by file_id)
,SUCCESSFUL_PROCESSING_IND='+@vjob_status+',ERROR_ROWCOUNT='+@error_rows
+'
WHERE FILE_ID='+@file_id+' AND JOB_ID='+@vjob_id+'
AND TARGET_NAME='''+@target+''''
exec (@sql)

--select top 10 * from FILE_ETL_JOB_HIST

/*
*/

3.) sp_log_end_file_etl_job_execution
USE [landing]
GO
/****** Object: StoredProcedure [dbo].[sp_log_end_etl_job_execution]
Script Date: 09/16/2010 17:00:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--exec sp_log_end_etl_job_execution 1,'5/24/2010',1,'cognito',0
ALTER procedure [dbo].[sp_log_end_etl_job_execution]
@JOB_ID varchar(255),
@ENDTIME datetime,
@JOB_STATUS varchar(255),
@TARGET varchar(100),
@ERROR_ROWS int
/*
@JOB_ID =job_id from ETL_JOB_EXECUTION
@ENDTIME =datetime of completion
@JOB_STATUS =job status as derived by success or failure
@TARGET varchar(100)=target table
@ERROR_ROWS =total error rows applied to target
*/

AS

--working variables
declare @job int
declare @TABLE_FINAL_ROW_COUNT varchar(50)
declare @cnt_sql varchar(2000)
DECLARE @vjob_status int

-->Fetch job_id
SET @JOB=@JOB_ID

-->
set @vjob_status=(select case when ltrim(rtrim(@job_status))=103 then 1 else 0
end)

-->TABLE LOGGING

SET @cnt_sql='SET '+@TABLE_FINAL_ROW_COUNT+'=(select COUNT(*) from


'+@target+')'
exec(@cnt_sql)
UPDATE operations.dbo.ETL_TABLE_PROCESSING
SET TABLE_FINAL_ROW_COUNT=@TABLE_FINAL_ROW_COUNT,
ERROR_ROW_COUNT=@ERROR_ROWS,
SUCCESSFUL_PROCESSING_IND=@vjob_status
WHERE TABLE_NAME=@TARGET and JOB_ID=@job

-->UPDATE dbo.ETL_JOB_EXECUTION
UPDATE operations.dbo.ETL_JOB_EXECUTION
SET EXECUTION_STOP=@ENDTIME,SUCCESSFUL_PROCESSING_IND=@vjob_status
WHERE JOB_ID=@job

4.) sp_log_start_etl_job_execution
USE [landing]
GO
/****** Object: StoredProcedure [dbo].[sp_log_start_etl_job_execution]
Script Date: 09/16/2010 17:00:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[sp_log_start_etl_job_execution]
@SRCROWS int=null,
@FILE_ID int=null,
@WORKFLOW_JOB_ID varchar(255),
@STARTTIME datetime,
@TARGET varchar(100)=null,
@TABLE varchar(100)=null,
@MAPPING_NAME varchar(255),
@STAGE_CODE varchar(100),
@GROUP_ID int,
@JOB_ID_RETURN int OUTPUT
AS
/*
@SRCROWS: count of source input rows
@FILE_ID: file_id
@WORKFLOW_JOB_ID:
@STARTTIME: start time for workflow run
@TARGET: table target name
@TABLE: table source name
@MAPPING_NAME: etl mapping name
@STAGE_CODE: etl stage of execution
@GROUP_ID: master job (group) id, grouped step(s) of work
##RETURN VARS##
@JOB_ID: etl step execution job id, singular step of work
*/

--working variables
declare @job int
declare @TABLE_INITIAL_ROW_COUNT int
declare @cnt_sql varchar(2000)

-->INSERT dbo.ETL_JOB_EXECUTION
INSERT INTO operations.dbo.ETL_JOB_EXECUTION
(GROUP_ID,JOB_NAME,EXECUTION_START)
VALUES (@group_id,@workflow_job_id,@STARTTIME)

--*
SET @job=(SELECT JOB_ID FROM operations.dbo.ETL_JOB_EXECUTION
WHERE GROUP_ID=@group_id AND JOB_NAME=@WORKFLOW_JOB_ID and
EXECUTION_START=@STARTTIME)

--> INSERT dbo.INFORMATICA_JOB


INSERT INTO operations.dbo.INFORMATICA_JOB
(JOB_ID,WORKFLOW_RUN_ID,MAPPING_NAME)
VALUES (@JOB,@workflow_job_id,@MAPPING_NAME)

-->TABLE LOGGING
IF NOT EXISTS (SELECT JOB_ID,TABLE_NAME FROM
operations.dbo.ETL_TABLE_PROCESSING WHERE JOB_ID=@job AND TABLE_NAME=@TARGET)
BEGIN

INSERT INTO operations.dbo.ETL_TABLE_PROCESSING


(JOB_ID,TABLE_NAME,TABLE_INITIAL_ROW_COUNT)
VALUES (@job,@TARGET,@SRCROWS)
END

-->RETURN VARS
SELECT @JOB_ID_RETURN=@JOB

5.) sp_log_start_file_etl_job_execution
USE [landing]
GO
/****** Object: StoredProcedure [dbo].[sp_log_start_file_etl_job_execution]
Script Date: 09/16/2010 17:01:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[sp_log_start_file_etl_job_execution]
@SRCROWS int=null,
@file_id int=null,
@job_id varchar(255),
@STARTTIME datetime,
@TARGET varchar(100),
@MAPPING_NAME varchar(255)=NULL,
@STAGE_CODE varchar(100)=NULL
AS
/*
If file_id is null, then the logging procedure will skip file style logging
and execute as table style logging.

*/
--working variables
declare @group_type_id int
declare @group_id int
declare @job int
declare @TABLE_INITIAL_ROW_COUNT varchar(50)
declare @cnt_sql varchar(2000)

-->INSERT dbo.JOB_GROUP_TYPE
IF NOT EXISTS (SELECT GROUP_TYPE_CODE FROM operations.dbo.JOB_GROUP_TYPE WHERE
GROUP_TYPE_CODE=@job_id)
BEGIN
INSERT INTO operations.dbo.JOB_GROUP_TYPE
(GROUP_TYPE_CODE,GROUP_TYPE_DESCRIPTION)
VALUES (@job_id,'workflow run id')
END
--*
set @group_type_id=(SELECT GROUP_TYPE_CODE FROM operations.dbo.JOB_GROUP_TYPE
WHERE GROUP_TYPE_CODE=@job_id)
-->INSERT dbo.JOB_GROUP
IF NOT EXISTS (SELECT GROUP_TYPE_CODE FROM operations.dbo.JOB_GROUP WHERE
GROUP_TYPE_CODE=@group_type_id)
BEGIN
INSERT INTO operations.dbo.JOB_GROUP (GROUP_TYPE_CODE,EXECUTION_START)
VALUES (@group_type_id,@STARTTIME)
END
--*
set @group_id=(SELECT GROUP_ID FROM operations.dbo.JOB_GROUP WHERE
GROUP_TYPE_CODE=@group_type_id)
-->INSERT dbo.ETL_JOB_EXECUTION
IF NOT EXISTS (SELECT GROUP_ID FROM operations.dbo.ETL_JOB_EXECUTION WHERE
GROUP_ID=@group_id)
BEGIN
INSERT INTO operations.dbo.ETL_JOB_EXECUTION
(GROUP_ID,JOB_NAME,EXECUTION_START)
VALUES (@group_id,@job_id,@STARTTIME)
END
--*
set @job=(SELECT JOB_ID FROM operations.dbo.ETL_JOB_EXECUTION WHERE
GROUP_ID=@group_id)
--> INSERT dbo.INFORMATICA_JOB
IF NOT EXISTS (SELECT JOB_ID FROM operations.dbo.INFORMATICA_JOB WHERE
JOB_ID=@job)
BEGIN
INSERT INTO operations.dbo.INFORMATICA_JOB (JOB_ID,MAPPING_NAME)
VALUES (@job,@MAPPING_NAME)
END

-->FILE LOGGING
-->INSERT dbo.FILE_ETL_JOB_HIST
IF @STAGE_CODE IN ('PRELAND','LAND','KL_IN','KL_OUT')
BEGIN
IF NOT EXISTS (SELECT JOB_ID,FILE_ID,STAGE_CODE,TARGET_NAME FROM
operations.dbo.FILE_ETL_JOB_HIST WHERE FILE_ID=@file_id AND JOB_ID=@job AND
STAGE_CODE=@STAGE_CODE AND TARGET_NAME=@TARGET)
BEGIN
INSERT INTO operations.dbo.FILE_ETL_JOB_HIST
(FILE_ID,JOB_ID,STAGE_CODE,SOURCE_ROWCOUNT,TARGET_NAME)
VALUES (@file_id,@job,@STAGE_CODE,@SRCROWS,@TARGET)
END
END

-->TABLE LOGGING
-->INSERT ETL_TABLE_PROCESSING
IF @STAGE_CODE IN ('WH')
BEGIN
IF NOT EXISTS (SELECT JOB_ID,TABLE_NAME FROM
operations.dbo.ETL_TABLE_PROCESSING WHERE JOB_ID=@job AND TABLE_NAME=@TARGET)
BEGIN
SET @cnt_sql='
SET '+@TABLE_INITIAL_ROW_COUNT+'=(select COUNT(*) from '+@target+')'
exec (@cnt_sql)
INSERT INTO operations.dbo.ETL_TABLE_PROCESSING
(JOB_ID,TABLE_NAME,TABLE_INITIAL_ROW_COUNT)
VALUES (@job,@TARGET,@TABLE_INITIAL_ROW_COUNT)
END
END

6. ) sp_log_update_etl_job_execution
USE [landing]
GO
/****** Object: StoredProcedure [dbo].[sp_log_update_etl_job_execution]
Script Date: 09/16/2010 17:01:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[sp_log_update_etl_job_execution]
@UPDATE_ROWS INT=NULL,
@INSERT_ROWS INT=NULL,
@DELETE_ROWS INT=NULL,
@ERROR_ROWS INT=NULL,
@JOB_ID varchar(50),
@TARGET varchar(100)=NULL
AS
/*
@UPDATE_ROWS=number of updated rows on target
@INSERT_ROWS INT=number of inserted rows on target
@DELETE_ROWS INT=number of deleted rows on target
@ERROR_ROWS INT=number of error rows on target
@JOB_ID=job execution id on operations.dbo.ETL_TABLE_PROCESSING
@TARGET varchar(100)=target name
*/

--working variables
declare @job int

SET @JOB=@JOB_ID

-->TABLE LOGGING
-->UPDATE ETL_TABLE_PROCESSING
IF @INSERT_ROWS IS NOT NULL
BEGIN
UPDATE operations.dbo.ETL_TABLE_PROCESSING
SET NUM_RECORDS_INSERT=@INSERT_ROWS
WHERE TABLE_NAME =@TARGET AND JOB_ID=@JOB
END
IF @UPDATE_ROWS IS NOT NULL
BEGIN
UPDATE operations.dbo.ETL_TABLE_PROCESSING
SET NUM_RECORDS_UPDATE=@UPDATE_ROWS
WHERE TABLE_NAME =@TARGET AND JOB_ID=@JOB
END

IF @DELETE_ROWS IS NOT NULL


BEGIN
UPDATE operations.dbo.ETL_TABLE_PROCESSING
SET NUM_RECORDS_DELETE=@DELETE_ROWS
WHERE TABLE_NAME =@TARGET AND JOB_ID=@JOB
END

7.) BUILD_KL_IN_VIEW
USE [landing]
GO
/****** Object: StoredProcedure [dbo].[BUILD_KL_IN_VIEW] Script Date:
09/16/2010 17:07:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--exec BUILD_KL_IN_VIEW 1,'KL_3_5_IN'


ALTER PROCEDURE [dbo].[BUILD_KL_IN_VIEW]
@batch_id bigint ,@sql_select_desc varchar(9)=NULL
AS
--

IF NULLIF(@sql_select_desc, '') IS NULL


BEGIN
SET @sql_select_desc='KL_3_5_IN'
END
--
IF EXISTS (SELECT * FROM landing.sys.views WHERE object_id =
OBJECT_ID(N'[landing].[dbo].[v_KL_IN]'))
DROP VIEW [dbo].[v_KL_IN]
-- dynamic sql variables
DECLARE @nsql VARCHAR(MAX)
, @sql VARCHAR(MAX)
, @sql_error INT
, @proc_error INT
, @row_count INT
, @crlf CHAR(2)
, @quote CHAR(1)
, @tab CHAR(1)
, @lkpsql varchar(max)

SET @crlf = CHAR(13) + CHAR(10)


SET @quote = CHAR(39)
SET @tab = CHAR(9)
SET @lkpsql=(select SQLSELECT FROM operations..etl_dynamic_sqlcall where
sql_select_desc=@sql_select_desc)
DECLARE @source_column_list VARCHAR(MAX)
, @source_pivot_list VARCHAR(MAX)

SET @source_column_list = ''

SELECT @source_column_list = @source_column_list


+ @crlf + @tab + ' UNION ALL ' +
'SELECT '+@lkpsql+' FROM [' + batch_table + ']'
FROM
(Select [table_name] as batch_table from
operations.dbo.ETL_PARAM_KL_SOURCE_TABLES
)sub

SET @source_column_list = SUBSTRING(@source_column_list, 15,


LEN(@source_column_list))

--filter?
declare @filter nvarchar(100)
set @filter='inner join dbo.filter_250_zips on input_postal_code=zip_code'

--print @source_column_list
SET @nsql='CREATE VIEW v_KL_IN AS '+@source_column_list+''--'+@filter+''
print @nsql
EXECUTE (@nsql)

You might also like