Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 13.89 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE  sp_qc_persona_volumes_report()
  2.     RETURNS INTEGER
  3.     LANGUAGE NZPLSQL
  4. AS BEGIN_PROC
  5. --########################################################################
  6. -- Stored Procedure Name :    sp_qc_persona_volumes_report
  7. --
  8. -- Description           :    QC report for dim_emea_personas
  9. --
  10. -- Input parameter       :    None
  11. --
  12. -- Returns               :    0 if successful
  13. --                            255 if any errors
  14. --
  15. -- Called from            :   Tidal
  16. --
  17. -- Created By             :   Blues Mu
  18. -- Date                   :   2018-07-05
  19. --
  20. -- Mod log                :
  21.  
  22. --########################################################################
  23. DECLARE
  24.     vTaskComment    VARCHAR(500);
  25.     --users_rec record;
  26.        users_rec record AS spqcpersona;  --Migration for loop
  27. /* [COMPATIBILITY_ISSUE] "RECORD TYPE SUPPORT IS LIMITED". Line number in original file:33801 */
  28.     v_sql VARCHAR(8000);
  29.     v_sql_dyn VARCHAR(8000);
  30.     v_create_dt DATETIME;
  31.     v_batch_date DATETIME;
  32.     v_date DATETIME;
  33.     v_pre_rak INTEGER;
  34.     v_rak INTEGER;
  35.     v_pre_object VARCHAR(512);
  36.     v_object VARCHAR(512);
  37.     v_column_name VARCHAR(100);
  38.     v_count INTEGER;
  39.     v_column_str VARCHAR(6000);
  40.     vEndNow             DATETIME;
  41.     vBeginNow           DATETIME;
  42.    
  43. BEGIN
  44. vBeginNow       := (SELECT now() FROM SYSIBM.SYSDUMMY1 );
  45. v_create_dt :=now();
  46. /* [COMPATIBILITY_NOTE] "ANOTHER PROCEDURE BEING CALLED". Line number in original file:33819 */
  47. v_column_str := '';
  48.  
  49. SELECT MAX(batch_date)
  50. INTO v_batch_date
  51. FROM meta_ctl_batch;
  52.  
  53.  
  54.  
  55. DELETE FROM qc_persona_volumes_summary
  56. WHERE batch_date = v_batch_date;
  57.  
  58.  
  59.  
  60. vTaskComment    := 'create qc_persona_volumes_current table';
  61.  
  62. CALL sp_reset_tbl_if_exists('qc_persona_volumes_current'); /* Migration/sp_drop_if_exists replaced by sp_reset_tbl_if_exists(Reset Table instead of dropping it)*/  
  63.  
  64. --call sp_drop_if_exists('qc_persona_volumes_current');
  65.  
  66. /* [COMPATIBILITY_NOTE] "ANOTHER PROCEDURE BEING CALLED". Line number in original file:33834 */
  67. /*create table qc_persona_volumes_current
  68. (
  69.  reporting_order INTEGER,
  70.  reporting_column VARCHAR(500),
  71.  data_value VARCHAR(255),
  72.  output VARCHAR(100)
  73. )
  74. distribute on random
  75. ;*/
  76.  
  77. INSERT INTO qc_persona_volumes_current
  78. SELECT 1 AS reporting_order, 'Total_rows' AS reporting_column, 'COUNT OF' AS data_value, COUNT(1) AS output FROM dim_emea_personas
  79. UNION ALL
  80. SELECT 2 AS reporting_order, 'Count_distinct_dim_plat_person_id' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas
  81. UNION ALL
  82. SELECT 3 AS reporting_order, 'Total_P01 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P01 = 1
  83. UNION ALL
  84. SELECT 4 AS reporting_order, 'Total_P02 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P02 = 1
  85. UNION ALL
  86. SELECT 5 AS reporting_order, 'Total_P03 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P03 = 1
  87. UNION ALL
  88. SELECT 6 AS reporting_order, 'Total_P04 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P04 = 1
  89. UNION ALL
  90. SELECT 7 AS reporting_order, 'Total_P05 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P05 = 1
  91. UNION ALL
  92. SELECT 8 AS reporting_order, 'Total_P06 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P06 = 1
  93. UNION ALL
  94. SELECT 9 AS reporting_order, 'Total_P07 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P07 = 1
  95. UNION ALL
  96. SELECT 10 AS reporting_order, 'Total_P08 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P08 = 1
  97. UNION ALL
  98. SELECT 11 AS reporting_order, 'Total_P09 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P09 = 1
  99. UNION ALL
  100. SELECT 12 AS reporting_order, 'Total_P10 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P10 = 1
  101. UNION ALL
  102. SELECT 13 AS reporting_order, 'Total_P11 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P11 = 1
  103. UNION ALL
  104. SELECT 14 AS reporting_order, 'Total_P12 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P12 = 1
  105. UNION ALL
  106. SELECT 15 AS reporting_order, 'Total_P13 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P13 = 1
  107. UNION ALL
  108. SELECT 16 AS reporting_order, 'Total_P14 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P14 = 1
  109. UNION ALL
  110. SELECT 17 AS reporting_order, 'Total_P15 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P15 = 1
  111. UNION ALL
  112. SELECT 18 AS reporting_order, 'Total_P16 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P16 = 1
  113. UNION ALL
  114. SELECT 19 AS reporting_order, 'Total_P17 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P17 = 1
  115. UNION ALL
  116. SELECT 20 AS reporting_order, 'Total_P18 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P18 = 1
  117. UNION ALL
  118. SELECT 21 AS reporting_order, 'Total_P19 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P19 = 1
  119. UNION ALL
  120. SELECT 22 AS reporting_order, 'Total_P20 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P20 = 1
  121. UNION ALL
  122. SELECT 23 AS reporting_order, 'Total_P21 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P21 = 1
  123. UNION ALL
  124. SELECT 24 AS reporting_order, 'Total_P22 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P22 = 1
  125. UNION ALL
  126. SELECT 25 AS reporting_order, 'Total_P23 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P23 = 1
  127. UNION ALL
  128. SELECT 26 AS reporting_order, 'Total_P24 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P24 = 1
  129. UNION ALL
  130. SELECT 27 AS reporting_order, 'Total_P25 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P25 = 1
  131. UNION ALL
  132. SELECT 28 AS reporting_order, 'Total_P26 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P26 = 1
  133. UNION ALL
  134. SELECT 29 AS reporting_order, 'Total_P27 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P27 = 1
  135. UNION ALL
  136. SELECT 30 AS reporting_order, 'Total_P28 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P28 = 1
  137. UNION ALL
  138. SELECT 31 AS reporting_order, 'Total_P29 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P29 = 1
  139. UNION ALL
  140. SELECT 32 AS reporting_order, 'Total_P30 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P30 = 1
  141. UNION ALL
  142. SELECT 33 AS reporting_order, 'Total_P31 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P31 = 1
  143. UNION ALL
  144. SELECT 34 AS reporting_order, 'Total_P32 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P32 = 1
  145. UNION ALL
  146. SELECT 35 AS reporting_order, 'Total_P33 ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P33 = 1
  147. UNION ALL
  148. SELECT 36 AS reporting_order, 'Total_MAPPED ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas
  149.     WHERE    P01 = 1   OR P02 = 1  OR P03 = 1  OR P04 = 1  OR P05 = 1  OR P06 = 1  OR P07 = 1  OR P08 = 1  OR P09 = 1  OR P10 = 1  OR P11 = 1  OR P12 = 1  OR P13 = 1  OR P14 = 1  OR P15 = 1  OR P16 = 1  OR P17 = 1  OR P18 = 1  OR P19 = 1  OR P20 = 1  OR P21 = 1  OR P22 = 1  OR P23 = 1  OR P24 = 1  OR P25 = 1  OR P26 = 1  OR P27 = 1  OR P28 = 1  OR P29 = 1  OR P30 = 1  OR P31 = 1  OR P32 = 1  OR P33 = 1    
  150. UNION ALL
  151. SELECT 37 AS reporting_order, 'Total_UNMAPPED ' AS reporting_column, 'COUNT DISTINCT' AS data_value, COUNT(DISTINCT dim_plat_person_id) AS output FROM dim_emea_personas WHERE  P34 = 1
  152. ;
  153.  
  154.  
  155. vTaskComment    := 'insert into qc_persona_volumes_summary table';
  156. INSERT INTO qc_persona_volumes_summary
  157. SELECT
  158.     (SELECT MAX(batch_date) FROM meta_ctl_batch) AS batch_date,
  159.     reporting_order,
  160.     reporting_column,
  161.     nvl(data_value,'') AS data_value,
  162.     output,
  163.     v_create_dt AS create_dt,
  164.     CURRENT_USER AS create_user
  165. FROM qc_persona_volumes_current a
  166. ;
  167.  
  168. vTaskComment    := 'create tmp_create_dt_rank_1 table';
  169.  
  170. --call sp_drop_if_exists('tmp_create_dt_rank_1');
  171. CALL sp_reset_tbl_if_exists('tmp_create_dt_rank_1'); /* Migration/sp_drop_if_exists replaced by sp_reset_tbl_if_exists(Reset Table instead of dropping it)*/  
  172.  
  173.  
  174. /* [COMPATIBILITY_NOTE] "ANOTHER PROCEDURE BEING CALLED". Line number in original file:33937 */
  175. --create table tmp_create_dt_rank_1 as /*Migration/Create statement is replaced by Insert to insert data after creating TABLE */
  176. INSERT INTO tmp_create_dt_rank_1(create_dt,rak)
  177. (SELECT create_dt, rank() OVER(ORDER BY create_dt DESC) AS rak
  178. FROM (
  179.     SELECT DISTINCT create_dt
  180.     FROM qc_persona_volumes_summary
  181. )a) --WITH DATA
  182. ;
  183. /* [COMPATIBILITY_NOTE] "OLAP FUNCTION RESTRICTION". Line number in original file:33939 */
  184.  
  185. vTaskComment    := 'create tmp_qc_report_persona_volumes_rak_0 table'
  186.  
  187. CALL sp_reset_tbl_if_exists('tmp_qc_report_persona_volumes_rak_0'); /* Migration/sp_drop_if_exists replaced by sp_reset_tbl_if_exists(Reset Table instead of dropping it)*/  
  188.  
  189. --call sp_drop_if_exists('tmp_qc_report_persona_volumes_rak_0');
  190.  
  191. /* [COMPATIBILITY_NOTE] "ANOTHER PROCEDURE BEING CALLED". Line number in original file:33946 */
  192. --create table tmp_qc_report_persona_volumes_rak_0 as /*Migration/Create statement is replaced by Insert to insert data after creating TABLE */
  193.  
  194. INSERT INTO tmp_qc_report_persona_volumes_rak_0
  195. (SELECT
  196.     DISTINCT
  197.     reporting_order, reporting_column, data_value
  198. FROM qc_persona_volumes_summary) --WITH DATA
  199. ;
  200.  
  201.  
  202. vTaskComment    := 'begin Loop tmp_create_dt_rank_1 table ';
  203. v_sql := 'select create_dt, rak, ''date_''||to_char(create_dt,''YYYYMMDD'') as column_name from tmp_create_dt_rank_1 where rak<13 order by rak;';
  204.  
  205. FOR users_rec IN EXECUTE v_sql
  206. LOOP
  207.     v_date := users_rec.create_dt;
  208.     v_pre_rak := users_rec.rak - 1;
  209.     v_rak := users_rec.rak;
  210.     v_column_name=users_rec.column_name;   
  211.     vTaskComment    := 'v_object assignment';
  212.     v_pre_object='tmp_qc_report_persona_volumes_rak_'||v_pre_rak;
  213.     v_object='tmp_qc_report_persona_volumes_rak_'||v_rak;
  214.    
  215. EXECUTE IMMEDIATE 'sp_drop_if_exists('||quote_literal(v_object)||');';
  216.  
  217.    
  218. vTaskComment    := 'create tmp rank table';
  219.  
  220. v_sql_dyn='create table '||v_object||' as
  221.             select a.*, b.output as '||v_column_name||'
  222.             from '||v_pre_object||' a
  223.             left join qc_persona_volumes_summary b
  224.             on
  225.             a.reporting_column=b.reporting_column
  226.             and a.data_value=b.data_value
  227.             and b.create_dt='''||v_date||'''
  228.             ;';
  229.  
  230. EXECUTE IMMEDIATE v_sql_dyn;
  231.  
  232. EXECUTE IMMEDIATE 'EXECUTE sp_drop_if_exists('||quote_literal(v_pre_object)||');'
  233.  
  234. END LOOP;
  235.  
  236. CALL sp_reset_tbl_if_exists('qc_persona_volumes_report');
  237. --call sp_drop_if_exists('qc_persona_volumes_report');
  238.  
  239. /* [COMPATIBILITY_NOTE] "ANOTHER PROCEDURE BEING CALLED". Line number in original file:33988 */
  240.  
  241. EXECUTE IMMEDIATE 'alter table '||v_object||' rename to qc_persona_volumes_report;';   
  242.  
  243.  
  244.  
  245. vTaskComment := 'Insert Job Control Process Table and cleanup';
  246. -------------------------------migration---------------
  247. --drop tmp table
  248. CALL sp_reset_tbl_if_exists('qc_persona_volumes_current'); /* Migration/sp_drop_if_exists replaced by sp_reset_tbl_if_exists(Reset Table instead of dropping it)*/  
  249.  
  250. --call sp_drop_if_exists('qc_persona_volumes_current');
  251.  
  252. /* [COMPATIBILITY_NOTE] "ANOTHER PROCEDURE BEING CALLED". Line number in original file:33997 */
  253. CALL sp_reset_tbl_if_exists('tmp_create_dt_rank_1'); /* Migration/sp_drop_if_exists replaced by sp_reset_tbl_if_exists(Reset Table instead of dropping it)*/  
  254.  
  255. --call sp_drop_if_exists('tmp_create_dt_rank_1');
  256.  
  257. /* [COMPATIBILITY_NOTE] "ANOTHER PROCEDURE BEING CALLED". Line number in original file:33998 */
  258. CALL sp_reset_tbl_if_exists('tmp_qc_report_persona_volumes_rak_0'); /* Migration/sp_drop_if_exists replaced by sp_reset_tbl_if_exists(Reset Table instead of dropping it)*/  
  259.  
  260. --call sp_drop_if_exists('tmp_qc_report_persona_volumes_rak_0');
  261.  
  262. /* [COMPATIBILITY_NOTE] "ANOTHER PROCEDURE BEING CALLED". Line number in original file:33999 */
  263.  
  264. vEndNow :=(SELECT now() FROM SYSIBM.SYSDUMMY1 );
  265. CALL sp_log_batch_job('INSERT','SMB NA',-1,'sp_qc_persona_volumes_report','SMB',vBeginNow,-1,vEndNow,-1,'DONE','',0,0);
  266. /* [COMPATIBILITY_NOTE] "ANOTHER PROCEDURE BEING CALLED". Line number in original file:34002 */
  267.  
  268. RETURN 0;
  269.  
  270. EXCEPTION WHEN OTHERS THEN
  271. raise exception 'SP FAILED DUE TO ERROR %. Location: %', SQLERRM, vTaskComment;
  272. RETURN 255;
  273. END;
  274.  
  275. END_PROC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement