From cb145187854b0af8f1baf89a4b3a131c18fa7099 Mon Sep 17 00:00:00 2001 From: Roelant Vos Date: Fri, 7 Aug 2020 12:06:38 +1000 Subject: [PATCH 1/5] Added load window. --- .gitignore | 2 + .../Direct_Framework/Direct_Framework.jfm | Bin 16384 -> 16384 bytes .../Direct_Framework/Direct_Framework.sqlproj | 1 + .../omd.CreateBatchInstance.sql | 5 +- .../omd.CreateLoadWindow.sql | 96 ++++++++++++++++++ .../omd.CreateModuleInstance.sql | 2 +- 6 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateLoadWindow.sql diff --git a/.gitignore b/.gitignore index 9b7bb67..7905caa 100644 --- a/.gitignore +++ b/.gitignore @@ -242,3 +242,5 @@ ModelManifest.xml .fake/ .vscode +020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm +*.jfm diff --git a/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm b/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm index 8de0a2520d205ff18dc66152b3695c91123e76c7..a46be6e8af001529c24f260818c83942670b3007 100644 GIT binary patch delta 672 zcmZo@U~Fh$WKH<~Er5AqqkIe_0|SGJ4vQdr1uv7a1_L`sg&~6i8xxS;$^n!D0|e7E2uI$OlDQI5@rJV1?(S2Ao(8% zN+$;?`Z01$UZ|*OJ9RNo;15JA17j!zgsob&Y6SxW4@lS;DE}8I46+s^zYHP=ae|c7TCF zg{^XlIZzq|>?a4Rh)({b^j2Ylg9HQP)Uape|KGp=_hQ=ps6EV|fC~OFIK~D?zj_)v z`MT)W>^ofc|NmbQaUi)KY(;_!>*O>QX+{TNa?zCr E0MN($zyJUM delta 658 zcmZo@U~Fh$WL-7ogC_IDM)?><1_lNb9Tq|M3SK5fP9_od3Vj}SZV;`=0+a#+2%nh+ zLJP9E2zjeP)SBzS)WB#1dErek{hJpuNi%Jp&6Fz3y=9@q_4i5wcOxDPPHdE#tg0Yg zFV)1Mp|py@F8+4^hX2`FKk6pz4U~#Jbf^D=0kcQw+y|=^7>pa3`4!S)7}%CEwKo>C z2HtWD4dMJ+`v3o`RZ=S$>l_58y5-McOj&kJnQJ!t)IO%)v6T?4B&tg2Fm{h3Wq@Dfl?qjAmCdt z`M;vL`-3G6KR<{th}JVBsr1_ovZ9tLM1lc@p7 z1{uF$a;%a}3KLi{%nFc35ZDC7D?kjO1|$F#QG*CEI{>Zt0%n8stpTwd`2RAoIxsM( zu)aQE4wMD~`^gJc#3p}MdZVzwL56{03d6d`4O&r53swY&@-Tk_D)__TID_d=(7LIU h|0}!lf-Hf6_5YbC2dZc)L&GQwCXPw3049)RX#lL~-{1fM diff --git a/020_DIRECT_Framework/Direct_Framework/Direct_Framework.sqlproj b/020_DIRECT_Framework/Direct_Framework/Direct_Framework.sqlproj index 3b5f016..bb85546 100644 --- a/020_DIRECT_Framework/Direct_Framework/Direct_Framework.sqlproj +++ b/020_DIRECT_Framework/Direct_Framework/Direct_Framework.sqlproj @@ -141,6 +141,7 @@ + diff --git a/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateBatchInstance.sql b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateBatchInstance.sql index 59cf91a..c3ca6dc 100644 --- a/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateBatchInstance.sql +++ b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateBatchInstance.sql @@ -1,5 +1,4 @@ - -/* +/* Process: Create Batch Instance Input: - Batch Code @@ -16,7 +15,7 @@ Usage: */ CREATE PROCEDURE [omd].[CreateBatchInstance] - @BatchCode VARCHAR(255), -- The name of the module, as identified in the BATCH_CODE attribute in the BATCH table. + @BatchCode VARCHAR(255), -- The name of the Batch, as identified in the BATCH_CODE attribute in the BATCH table. @Debug VARCHAR(1) = 'N', @ExecutionRuntimeId VARCHAR(255) = 'N/A', @BatchInstanceId INT = NULL OUTPUT diff --git a/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateLoadWindow.sql b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateLoadWindow.sql new file mode 100644 index 0000000..5d99623 --- /dev/null +++ b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateLoadWindow.sql @@ -0,0 +1,96 @@ +/* +Process: Create Load Window +Input: + - Module Code OR Module Id (Id is chosen if both provided) + - Debug flag Y/N +Returns: + - Load Window Start Date/Time + - Load Window End Date/Time +Usage: + <> +*/ + +CREATE PROCEDURE [omd].[CreateLoadWindow] + @ModuleCode VARCHAR(255) = 'N/A', -- The name of the Module, as identified in the MODULE_CODE attribute in the MODULE table. + @ModuleId INT = 0, -- The Module Id, based on the name (see above) + @Debug VARCHAR(1) = 'N', + @LoadWindowStartDateTime INT = NULL OUTPUT, + @LoadWindowEndDateTime INT = NULL OUTPUT +AS +BEGIN + + -- Local variables + DECLARE @ModuleInstanceId INT; + + -- Exception handling + IF @ModuleCode = 'N/A' AND @ModuleId = 0 + THROW 50000,'Either the Module Code or the Module Id should be provided, but not both.',1 + + If @ModuleCode != 'N/A' + BEGIN + SELECT @ModuleId = omd.GetModuleIdByName(@ModuleCode); + + IF @Debug = 'Y' + PRINT 'For Module Code '+@ModuleCode+' the following Module Id was found in omd.MODULE: '+CONVERT(VARCHAR(10),@ModuleId); + END + + + + -- Set new load window using Module Id + BEGIN TRY + + IF + ( + SELECT + COALESCE + ( + (SELECT TOP 1 + NEXT_RUN_INDICATOR + FROM omd.MODULE_INSTANCE main + WHERE + main.MODULE_ID= + AND main.MODULE_INSTANCE_ID <> > + ORDER BY main.MODULE_INSTANCE_ID DESC) + , 'S') -- If there is no Module Instance Id + ) != 'R' + + INSERT INTO omd.[SOURCE_CONTROL] + ( + [MODULE_INSTANCE_ID] + ,[INSERT_DATETIME] + ,[INTERVAL_START_DATETIME] + ,[INTERVAL_END_DATETIME] + ,[INTERVAL_START_IDENTIFIER] + ,[INTERVAL_END_IDENTIFIER] + ) + VALUES + ( + @ModuleInstanceId + ,SYSDATETIME() + ,( + SELECT CONVERT(varchar,ISNULL(MAX(INTERVAL_END_DATETIME),'1900-01-01'),121) AS INTERVAL_START_DATETIME + FROM omd.SOURCE_CONTROL A + JOIN omd.MODULE_INSTANCE B ON (A.MODULE_INSTANCE_ID=B.MODULE_INSTANCE_ID) + WHERE B.MODULE_ID = ? + ) -- Maps to INTERVAL_START_DATETIME which is the last datetime of the previous window. + , ( + SELECT COALESCE(MAX(OMD_INSERT_DATETIME),'1900-01-01') + FROM [150_Persistent_Staging_Area].[dbo].[HSTG_PROFILER_CUSTOMER_PERSONAL] hstg + JOIN omd.MODULE_INSTANCE modinst ON hstg.OMD_INSERT_MODULE_INSTANCE_ID=modinst.MODULE_INSTANCE_ID + WHERE EXECUTION_STATUS_CODE='S' + ) -- Maps to INTERVAL_END_DATETIME + ,NULL --INTERVAL_START_IDENTIFIER + ,NULL --INTERVAL_END_IDENTIFIER + ) + + + + IF @Debug = 'Y' + PRINT 'A new Batch Instance Id '+CONVERT(VARCHAR(10),@BatchInstanceId)+' has been created for Batch Code: '+@BatchCode; + + END TRY + BEGIN CATCH + THROW + END CATCH + +END \ No newline at end of file diff --git a/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateModuleInstance.sql b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateModuleInstance.sql index 2145ce1..cb94655 100644 --- a/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateModuleInstance.sql +++ b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateModuleInstance.sql @@ -16,7 +16,7 @@ Usage: */ CREATE PROCEDURE omd.CreateModuleInstance - @ModuleCode VARCHAR(255), -- The name of the module, as identified in the MODULE_CODE attribute in the MODULE table. + @ModuleCode VARCHAR(255), -- The name of the Module, as identified in the MODULE_CODE attribute in the MODULE table. @Debug VARCHAR(1) = 'N', @ExecutionRuntimeId VARCHAR(255) = 'N/A', @BatchInstanceId INT = 0, -- The Batch Instance Id, if the Module is run from a Batch. From 79c1d4fc1cb6465772ee757731143c561ad13c90 Mon Sep 17 00:00:00 2001 From: Roelant Vos Date: Fri, 7 Aug 2020 13:12:05 +1000 Subject: [PATCH 2/5] Updated load window script --- .gitignore | 1 + .../Direct_Framework/Direct_Framework.jfm | Bin 16384 -> 16384 bytes .../Functions/omd.GetLoadWindowDateTimes.sql | 9 +- .../omd.CreateLoadWindow.sql | 181 ++++++++++-------- 4 files changed, 110 insertions(+), 81 deletions(-) diff --git a/.gitignore b/.gitignore index 7905caa..bea7878 100644 --- a/.gitignore +++ b/.gitignore @@ -244,3 +244,4 @@ ModelManifest.xml .vscode 020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm *.jfm +*.jfm diff --git a/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm b/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm index a46be6e8af001529c24f260818c83942670b3007..a2319e4071c30a01f3f91d2fd556660957fe6364 100644 GIT binary patch delta 602 zcmZo@U~Fh$WSxICxt@7qqkIe_0|SGJ4vQdr1uv5k8xuQ6#Yq-3Ze}2D&jOSJ0|;Lp zDz48mU%P%GMD0Zpm>L*;FMV1tO#kMEOwvr7XEUYBa(~t3d~|^60Mj!W(TR;xlT{U@ z>*bm_G?Z2`*j;^ne#8G)RX6Gulm<)vY`W9`!GPH#bnb^$3Jk^#%zO%IF$`==nc5wT zSp#pmhlX%|E&cz0)%trY80#Gbrn=?NU`knbOqpvI`_x1RPJ4#v6_;kY?wjD>z!L&; z($&&`6XjJI!z3$LT>S#%huxdI0pirj`xWFFr%t}Fpvu@VnN`tBgjoS7ApnwO0+RoM zAT)e(u%a&`&*X)Qindo514aITq=A4j6avClty;B$fdL#+!a(`IKw*%*AbFq^NDc`2 z7EJ!HDCY6}!4ihQA7mIr>zR?1eqcDrz~EHh%Wwc_F;L5Ds9Zz>P^Se012Y2;gENrH z)Bt3I%rBT6t0WB!%E?tq#s*qI86aSG0O|ty4`Rj|5F?cP-#m5)1_l-O$}Q$VX%MiV zyii4K@@J(t3JV-$7#OF9zbgO#HveDEs{2t>m@fep{9$m4O`MzcZ0h9y%7Kie7E2uI$OlDQI5@7=Q1?(S2Ao(8% zO2Z}xEBZ2WOkSv{XghT=P~;CpF9TyJ1ca?xwQ20 znEYQ+%;VXFB@DkGNHB>1V@6W?f#Dzn!=ZW)h6V-(CZLwpP`QW%piUD824rJm#s;cD86aSC0O|ty4`Rj|5W|7}-!8TT3=Ar4l}pTl(jZ_z zd7+Bf -*/ + DECLARE + @LoadWindowStartDateTime datetime2(7), + @LoadWindowEndDateTime datetime2(7) -CREATE PROCEDURE [omd].[CreateLoadWindow] - @ModuleCode VARCHAR(255) = 'N/A', -- The name of the Module, as identified in the MODULE_CODE attribute in the MODULE table. - @ModuleId INT = 0, -- The Module Id, based on the name (see above) - @Debug VARCHAR(1) = 'N', - @LoadWindowStartDateTime INT = NULL OUTPUT, - @LoadWindowEndDateTime INT = NULL OUTPUT -AS -BEGIN + EXEC [omd].[CreateLoadWindow] + @ModuleInstanceId = <>, + @Debug = N'Y', + @LoadWindowStartDateTime = @LoadWindowStartDateTime OUTPUT, + @LoadWindowEndDateTime = @LoadWindowEndDateTime OUTPUT - -- Local variables - DECLARE @ModuleInstanceId INT; - - -- Exception handling - IF @ModuleCode = 'N/A' AND @ModuleId = 0 - THROW 50000,'Either the Module Code or the Module Id should be provided, but not both.',1 + SELECT @LoadWindowStartDateTime as N'@LoadWindowStartDateTime', + @LoadWindowEndDateTime as N'@LoadWindowEndDateTime' +*/ - If @ModuleCode != 'N/A' - BEGIN - SELECT @ModuleId = omd.GetModuleIdByName(@ModuleCode); - - IF @Debug = 'Y' - PRINT 'For Module Code '+@ModuleCode+' the following Module Id was found in omd.MODULE: '+CONVERT(VARCHAR(10),@ModuleId); - END + -- Local variables (Module Id and source Data Object) + DECLARE @ModuleId INT = [omd].[GetModuleIdByModuleInstanceId](@ModuleInstanceId); + DECLARE @TableCode VARCHAR(255); + SELECT @TableCode = DATA_OBJECT_TARGET FROM omd.MODULE WHERE MODULE_ID = @ModuleId; + DECLARE @PreviousModuleInstanceOutcome VARCHAR(MAX); + DECLARE @SqlStatement VARCHAR(MAX); + -- Exception handling + IF @ModuleId = NULL OR @ModuleId = 0 + THROW 50000,'The Module Id could not be retrieved based on the Module Instance Id.',1 - -- Set new load window using Module Id - BEGIN TRY + IF @Debug = 'Y' + BEGIN + PRINT 'For Module Instance Id '+CONVERT(VARCHAR(10),@ModuleInstanceId)+' the following Module Id was found in omd.MODULE: '+CONVERT(VARCHAR(10),@ModuleId)+'.'; + PRINT 'For Module Id '+CONVERT(VARCHAR(10),@ModuleId)+' the Source Data Object is '+@TableCode+'.'; + END - IF - ( - SELECT - COALESCE + SELECT @PreviousModuleInstanceOutcome = + COALESCE + ( ( - (SELECT TOP 1 - NEXT_RUN_INDICATOR - FROM omd.MODULE_INSTANCE main - WHERE - main.MODULE_ID= - AND main.MODULE_INSTANCE_ID <> > - ORDER BY main.MODULE_INSTANCE_ID DESC) - , 'S') -- If there is no Module Instance Id - ) != 'R' + SELECT TOP 1 + NEXT_RUN_INDICATOR + FROM omd.MODULE_INSTANCE main + WHERE + main.MODULE_ID = @ModuleId + AND main.MODULE_INSTANCE_ID <> @ModuleInstanceId + ORDER BY main.MODULE_INSTANCE_ID DESC + ) + , 'S') -- If there is no Module Instance Id, the process will resolve to succeeded. - INSERT INTO omd.[SOURCE_CONTROL] - ( - [MODULE_INSTANCE_ID] - ,[INSERT_DATETIME] - ,[INTERVAL_START_DATETIME] - ,[INTERVAL_END_DATETIME] - ,[INTERVAL_START_IDENTIFIER] - ,[INTERVAL_END_IDENTIFIER] - ) - VALUES - ( - @ModuleInstanceId - ,SYSDATETIME() - ,( - SELECT CONVERT(varchar,ISNULL(MAX(INTERVAL_END_DATETIME),'1900-01-01'),121) AS INTERVAL_START_DATETIME - FROM omd.SOURCE_CONTROL A - JOIN omd.MODULE_INSTANCE B ON (A.MODULE_INSTANCE_ID=B.MODULE_INSTANCE_ID) - WHERE B.MODULE_ID = ? - ) -- Maps to INTERVAL_START_DATETIME which is the last datetime of the previous window. - , ( - SELECT COALESCE(MAX(OMD_INSERT_DATETIME),'1900-01-01') - FROM [150_Persistent_Staging_Area].[dbo].[HSTG_PROFILER_CUSTOMER_PERSONAL] hstg - JOIN omd.MODULE_INSTANCE modinst ON hstg.OMD_INSERT_MODULE_INSTANCE_ID=modinst.MODULE_INSTANCE_ID - WHERE EXECUTION_STATUS_CODE='S' - ) -- Maps to INTERVAL_END_DATETIME - ,NULL --INTERVAL_START_IDENTIFIER - ,NULL --INTERVAL_END_IDENTIFIER - ) - + IF @Debug = 'Y' + PRINT 'The previous Module Instance Id was evaluated as: '+@PreviousModuleInstanceOutcome+'.'; + -- If the most recent run prior to the active Instance Id (now) is not failed, continue. + IF @PreviousModuleInstanceOutcome = 'R' + BEGIN + IF @Debug = 'Y' + PRINT 'The previous Module Instance was a failure, so no new load window is set until this is resolved .'; + GOTO EndOfProcedure + END + ELSE + BEGIN + BEGIN TRY + + SET @SqlStatement = ' + INSERT INTO omd.[SOURCE_CONTROL] + ( + [MODULE_INSTANCE_ID] + ,[INSERT_DATETIME] + ,[INTERVAL_START_DATETIME] + ,[INTERVAL_END_DATETIME] + ,[INTERVAL_START_IDENTIFIER] + ,[INTERVAL_END_IDENTIFIER] + ) + VALUES + ( + '+CONVERT(VARCHAR(10),@ModuleInstanceId)+' + ,SYSDATETIME() + ,( + SELECT CONVERT(varchar,ISNULL(MAX(INTERVAL_END_DATETIME),''1900-01-01''),121) AS INTERVAL_START_DATETIME + FROM omd.SOURCE_CONTROL A + JOIN omd.MODULE_INSTANCE B ON (A.MODULE_INSTANCE_ID=B.MODULE_INSTANCE_ID) + WHERE B.MODULE_ID = '+CONVERT(VARCHAR(10),@ModuleId)+' + ) -- Maps to INTERVAL_START_DATETIME which is the last datetime of the previous window. + , ( + SELECT COALESCE(MAX(LOAD_DATETIME),''1900-01-01'') + FROM '+@TableCode+' sdo + JOIN omd.MODULE_INSTANCE modinst ON sdo.ETL_INSERT_RUN_ID=modinst.MODULE_INSTANCE_ID + WHERE modinst.EXECUTION_STATUS_CODE=''S'' + ) -- Maps to INTERVAL_END_DATETIME + ,NULL --INTERVAL_START_IDENTIFIER + ,NULL --INTERVAL_END_IDENTIFIER + )' + + IF @Debug='Y' + PRINT 'Load Window SQL statement is: '+@SqlStatement; + + EXEC (@SqlStatement); + + -- Retrieve values for return + SELECT @LoadWindowStartDateTime = [omd].[GetLoadWindowDateTimes](@ModuleId,1); + SELECT @LoadWindowEndDateTime = [omd].[GetLoadWindowDateTimes](@ModuleId,2); - IF @Debug = 'Y' - PRINT 'A new Batch Instance Id '+CONVERT(VARCHAR(10),@BatchInstanceId)+' has been created for Batch Code: '+@BatchCode; + END TRY + BEGIN CATCH + THROW + END CATCH + END - END TRY - BEGIN CATCH - THROW - END CATCH - + EndOfProcedure: + -- End label END \ No newline at end of file From 9895804d0c3e412a74f47132b4732e39b379779f Mon Sep 17 00:00:00 2001 From: Roelant Vos Date: Fri, 7 Aug 2020 20:07:44 +1000 Subject: [PATCH 3/5] Some minor tweaks on create load window --- .gitignore | 4 ++++ .../Direct_Framework/Direct_Framework.jfm | Bin 16384 -> 16384 bytes .../omd.CreateLoadWindow.sql | 20 ++++++++++-------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index bea7878..afe8941 100644 --- a/.gitignore +++ b/.gitignore @@ -245,3 +245,7 @@ ModelManifest.xml 020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm *.jfm *.jfm +*.jfm +020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm +*.jfm +*.jfm diff --git a/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm b/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm index a2319e4071c30a01f3f91d2fd556660957fe6364..d0889cba7523010bc8dd1c5f59f31037f869d447 100644 GIT binary patch delta 548 zcmZo@U~Fh$WPO|T;Sux1M)_z)1_lNb9Tq|M3SK5dK^At7ii>QT${awt6et4$5Pm2F zgid8xbL;0Th}xU#Ff}lGzT)I9Q2m=1GRZJ)p3Rgh%UvAtfw_;dk8$c&(TR;xlT{U@ z`NW$zG?Z2`*j;^ne#8IQll>GVg7_8ELKxVVG97O$W(|yT4-Mh`TKfP0s`d9)Fz$B{ znCg~4gDGX%F=MV->{AmNIPDp7S6rIqx^IDd15XIZ`m3e?C+ey)hD%nhxcUXiPrG+_ z@(u+x#;cR>E2uIan9QnZCCq35ln?-^W(Jb~fgp8qkfI+W%jAWMingJPfdYR(vOvHX z3ISoOR;^mWz`y|#QwGZa1qy@g1Ie$0$N_n58z%o(6!Ummu!P~?1sMjhz062TKQJ6* zU}&m8%HY7jzy#E?8Y&l&0Muy%bPEFygCmg1bO6W(nLlB2tdca71M}o6C1V3^pbQW& zIskQn`~@*%4Turd|8E|90|SE!d*u{!pfm{BPhO}ZHuH)0;>4K;1pYQE$jK!$^Vtx8UIgiS4jiwNl;-0#@P=k0H>e5lK=n! delta 543 zcmZo@U~Fh$WSxICxt@7qqkIe_0|SGJ4vQdr1uv5k8xuQ6#Yq-3Ze}2D&jOSJ0|;Lp zDz48mU%P%GMD0Zpm>L*;FMV1tO#kMEOwvr7XEUYBa(~t3d~|^60Mj!W(TR;xlT{U@ z`Q(~7G?Z2`*j;^ne#8G)ll>GVg7_5DVi?$#GPOGvvj*OB4-Mh`TKfP0s`d9)FxEQ= zOm)kj!IZM>m@?Na_Nj>soc0XSD=y7)-8aF%fhPoH|JBle6XjJI!z3$LT>S#%huxby zd53};5eSk_7_B zPzVTHwQAK01_p3&2m|H+0);{Lf#iWwAUPo5TQK>*qL|0?2TK_Kevn}ht!GA3`hnpf z1A|k2FT(+#y+AFip>h!kK%Ev049pBX49-9%Qv;9fr9r@c@F#*0ZUT|0}mM{+`^flE&Boj4dH)05g8IMgRZ+ diff --git a/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateLoadWindow.sql b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateLoadWindow.sql index 235c449..8dcf036 100644 --- a/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateLoadWindow.sql +++ b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.CreateLoadWindow.sql @@ -20,7 +20,7 @@ Usage: @LoadWindowEndDateTime datetime2(7) EXEC [omd].[CreateLoadWindow] - @ModuleInstanceId = <>, + @ModuleInstanceId = '', @Debug = N'Y', @LoadWindowStartDateTime = @LoadWindowStartDateTime OUTPUT, @LoadWindowEndDateTime = @LoadWindowEndDateTime OUTPUT @@ -32,7 +32,13 @@ Usage: -- Local variables (Module Id and source Data Object) DECLARE @ModuleId INT = [omd].[GetModuleIdByModuleInstanceId](@ModuleInstanceId); DECLARE @TableCode VARCHAR(255); - SELECT @TableCode = DATA_OBJECT_TARGET FROM omd.MODULE WHERE MODULE_ID = @ModuleId; + SELECT @TableCode = DATA_OBJECT_SOURCE FROM omd.MODULE WHERE MODULE_ID = @ModuleId; + + IF @Debug = 'Y' + BEGIN + PRINT 'For Module Instance Id '+CONVERT(VARCHAR(10),@ModuleInstanceId)+' the following Module Id was found in omd.MODULE: '+CONVERT(VARCHAR(10),@ModuleId)+'.'; + PRINT 'For Module Id '+CONVERT(VARCHAR(10),@ModuleId)+' the Source Data Object is '+@TableCode+'.'; + END DECLARE @PreviousModuleInstanceOutcome VARCHAR(MAX); DECLARE @SqlStatement VARCHAR(MAX); @@ -41,11 +47,7 @@ Usage: IF @ModuleId = NULL OR @ModuleId = 0 THROW 50000,'The Module Id could not be retrieved based on the Module Instance Id.',1 - IF @Debug = 'Y' - BEGIN - PRINT 'For Module Instance Id '+CONVERT(VARCHAR(10),@ModuleInstanceId)+' the following Module Id was found in omd.MODULE: '+CONVERT(VARCHAR(10),@ModuleId)+'.'; - PRINT 'For Module Id '+CONVERT(VARCHAR(10),@ModuleId)+' the Source Data Object is '+@TableCode+'.'; - END + SELECT @PreviousModuleInstanceOutcome = COALESCE @@ -56,7 +58,7 @@ Usage: FROM omd.MODULE_INSTANCE main WHERE main.MODULE_ID = @ModuleId - AND main.MODULE_INSTANCE_ID <> @ModuleInstanceId + AND main.MODULE_INSTANCE_ID != @ModuleInstanceId ORDER BY main.MODULE_INSTANCE_ID DESC ) , 'S') -- If there is no Module Instance Id, the process will resolve to succeeded. @@ -68,7 +70,7 @@ Usage: IF @PreviousModuleInstanceOutcome = 'R' BEGIN IF @Debug = 'Y' - PRINT 'The previous Module Instance was a failure, so no new load window is set until this is resolved .'; + PRINT 'The previous Module Instance was a failure, so no new load window is set until this is resolved - end of procedure.'; GOTO EndOfProcedure END ELSE From 8e8a03d67f164716bcdd84a5af4c4cbde2ea402c Mon Sep 17 00:00:00 2001 From: Roelant Vos Date: Wed, 12 Aug 2020 10:15:18 +1000 Subject: [PATCH 4/5] Added row count to UpdateModuleInstance --- .gitignore | 1 + .../Direct_Framework/Direct_Framework.jfm | Bin 16384 -> 16384 bytes .../omd.UpdateModuleInstance.sql | 6 ++++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index afe8941..7ab5808 100644 --- a/.gitignore +++ b/.gitignore @@ -249,3 +249,4 @@ ModelManifest.xml 020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm *.jfm *.jfm +020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm diff --git a/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm b/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm index d0889cba7523010bc8dd1c5f59f31037f869d447..eac88ae8c6d4ba0c87ebbeeb3a7c15b8eadc840a 100644 GIT binary patch delta 605 zcmZo@U~Fh$WZks=+BfEjjq)*!3=9k=IxK?h6}(Jl5*%C{71?a&Rvu)F%-f5ZRRQ8(%~lm<&x9=g;2!GPH#bnb^$3Jk^#%=`*z5e#fgnT|IW zvj)y`4-Mh`TKfP0s`d9)F#dNCnCg~4gDGX%F=4KG>{AmNcQT${awt6et4$5Pm2F zgid8xbL;0Th}xU#Ff}lGzT)I9Q2m=1GRZJ)p3Rgh%UvAtfw_;dk8$c&(TR;xlT{U@ z>&2TmG?Z2`*j;^ne#8IQRX6Gulm<)vY`W9`!GPH#bnb^$3Jk^#%=`*zAq;FwnT|IW zvj#@FhlX%|E&cz0)%trY8238}Om)kj!IZM>m@(HZ_Nj>soc0X4D=y7)-M7HKfhPpy zqN}CgaAmA8A$#I zg4D@DihhhNlNTx~+J-I$3jBd+Wnc`2fUs4oR;^%Q-~b6L1Lgk$g+bPWW?xwFfcFyb*zTUMI-<<+5nxxz{B7OWHKE9 zvO&gAm>jDl!^k|jO3Bzj8z=z;j1E9eAkRUJSOa22_5Yj4-oU`1!d^MW94HL}_LCQ? zh)w>ilmzr}m~yAW0|yZX#;KvN%KyJz|8LH|`%yEPF9DVPVQ`8qx|a3)>g4~*fsDnI U1652J|4(jLX<+;hjL;ua0APT~k^lez diff --git a/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.UpdateModuleInstance.sql b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.UpdateModuleInstance.sql index c3b741f..07f9c73 100644 --- a/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.UpdateModuleInstance.sql +++ b/020_DIRECT_Framework/Direct_Framework/Stored Procedures/omd.UpdateModuleInstance.sql @@ -16,6 +16,8 @@ Usage: CREATE PROCEDURE [omd].[UpdateModuleInstance] @ModuleInstanceId INT, @EventCode VARCHAR(10) = 'None', + @RowCountSelect INT = 0, + @RowCountInsert INT = 0, @Debug VARCHAR(1) = 'Y' AS @@ -56,9 +58,9 @@ BEGIN BEGIN BEGIN TRY IF @Debug='Y' - PRINT 'Setting Module Instance '+CONVERT(VARCHAR(10),@ModuleInstanceId)+' to '+@EventCode+'.'; + PRINT 'Setting Module Instance '+CONVERT(VARCHAR(10),@ModuleInstanceId)+' to '+@EventCode+' and row count '+CONVERT(VARCHAR(10),@RowCountInsert)+'.'; - UPDATE omd.MODULE_INSTANCE SET EXECUTION_STATUS_CODE = 'S', NEXT_RUN_INDICATOR = 'P', END_DATETIME=GETDATE() WHERE MODULE_INSTANCE_ID = @ModuleInstanceId + UPDATE omd.MODULE_INSTANCE SET EXECUTION_STATUS_CODE = 'S', NEXT_RUN_INDICATOR = 'P', END_DATETIME=GETDATE(), ROWS_INPUT = @RowCountSelect, ROWS_INSERTED = @RowCountInsert WHERE MODULE_INSTANCE_ID = @ModuleInstanceId END TRY BEGIN CATCH THROW From 7a099f733be02ce5111e572c1a1f4596e3ce6512 Mon Sep 17 00:00:00 2001 From: Roelant Vos Date: Tue, 15 Sep 2020 17:09:52 +1000 Subject: [PATCH 5/5] Added GetModuleAreaByModuleId function. Returns Area based on ModuleId. --- .../Direct_Framework/Direct_Framework.jfm | Bin 16384 -> 16384 bytes .../Direct_Framework/Direct_Framework.sqlproj | 1 + .../Functions/GetModuleAreaByModuleId.sql | 26 ++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 020_DIRECT_Framework/Direct_Framework/Functions/GetModuleAreaByModuleId.sql diff --git a/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm b/020_DIRECT_Framework/Direct_Framework/Direct_Framework.jfm index eac88ae8c6d4ba0c87ebbeeb3a7c15b8eadc840a..bade89487e3e623bbc7047375ca66ddf2acd9110 100644 GIT binary patch delta 542 zcmZo@U~Fh$Wc|Fi>pJtqM)?><1_lNb9Tq|M3SK5nMKNB^3Rym8We|Os4JZW$5dLB| z2)&W*QvD2Lh+0>Dm>L-UKl)b$O#kMEOwvr7XEUYBax=F^2;LOCDYo^o*u+Mu$*Ky{ z^vHjVO9W22!JG+faHH5 z2o0SatmwG~$fL;Se)*&eXgO0!2 delta 534 zcmZo@U~Fh$WZks=+BfEjjq)*!3=9k=IxK?h6}(Jl5*%C{71?a&Rvu)F%-f5ZRRQ8(%~lm<&x9=g;2!GPH#bnb^$3Jk^#%=`*z5e#fgnT|IW zvj)y`4-Mh`TKfP0s`d9)F#dNCnCg~4gDGX%F=4KG>{AmNcacJgET#u9IGV5$T+!5$=E;>C;RcIRWCy~|5xT`6b0Ib34oDwR|)_ZS-5rp diff --git a/020_DIRECT_Framework/Direct_Framework/Direct_Framework.sqlproj b/020_DIRECT_Framework/Direct_Framework/Direct_Framework.sqlproj index bb85546..64f0214 100644 --- a/020_DIRECT_Framework/Direct_Framework/Direct_Framework.sqlproj +++ b/020_DIRECT_Framework/Direct_Framework/Direct_Framework.sqlproj @@ -142,6 +142,7 @@ + diff --git a/020_DIRECT_Framework/Direct_Framework/Functions/GetModuleAreaByModuleId.sql b/020_DIRECT_Framework/Direct_Framework/Functions/GetModuleAreaByModuleId.sql new file mode 100644 index 0000000..5ddc560 --- /dev/null +++ b/020_DIRECT_Framework/Direct_Framework/Functions/GetModuleAreaByModuleId.sql @@ -0,0 +1,26 @@ +CREATE FUNCTION omd.GetModuleAreaByModuleId +( + @ModuleId INT -- The identifier of the Module (PK). +) +RETURNS VARCHAR(255) AS + +-- ============================================= +-- Function: Get Module Area (by Id) +-- Description: Takes the module id as input and returns the area code as registered in the framework +-- ============================================= + +BEGIN + -- Declare ouput variable + + DECLARE @ModuleArea VARCHAR(255) = + ( + SELECT module.AREA_CODE + FROM omd.MODULE module + WHERE MODULE_ID = @ModuleId + ) + + SET @ModuleArea = COALESCE(@ModuleArea,'N/A') + + -- Return the result of the function + RETURN @ModuleArea +END \ No newline at end of file