Advertisement
YuvalGai

Untitled

Jun 27th, 2023
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.96 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE CANDIVORE.SEMANTIC_LAYER.T_PERKS_DASHBOARD()
  2. RETURNS VARCHAR(16777216)
  3. LANGUAGE JAVASCRIPT
  4. EXECUTE AS CALLER
  5. AS '
  6.  
  7. // Insert segmented data into T_PERKS_DASHBOARD table
  8. var my_sql_command = `
  9.  
  10.  
  11. CREATE OR REPLACE TABLE CANDIVORE.SEMANTIC_LAYER.T_PERKS_DASHBOARD AS
  12. select distinct match_end_date AS INTERVAL_DATE
  13. , arena_group
  14. , CASE
  15. WHEN trophies_cnt < 125 then ''0-125''
  16. WHEN trophies_cnt < 1400 then ''125-1400''
  17. WHEN trophies_cnt < 2000 then ''1400-2000''
  18. WHEN trophies_cnt < 3800 then ''2000-3800''
  19. WHEN trophies_cnt < 7000 then ''3800-7000''
  20. WHEN trophies_cnt < 16000 then ''7000-16000''
  21. WHEN trophies_cnt < 30000 then ''16000-30000''
  22. WHEN trophies_cnt >= 30000 then ''30000+''
  23. END as trophy_group
  24. , CASE
  25. WHEN trophies_cnt < 125 THEN ''0-125''
  26. WHEN trophies_cnt < 1400 THEN ''125-1400''
  27. WHEN trophies_cnt < 2000 THEN ''1400-2000''
  28. WHEN trophies_cnt < 3800 THEN ''2000-3800''
  29. WHEN trophies_cnt < 4500 THEN ''3800-4500''
  30. WHEN trophies_cnt < 5500 THEN ''4500-5500''
  31. WHEN trophies_cnt < 7000 THEN ''5500-7000''
  32. WHEN trophies_cnt < 10000 THEN ''7000-10000''
  33. WHEN trophies_cnt < 13000 THEN ''10000-13000''
  34. WHEN trophies_cnt < 16000 THEN ''13000-16000''
  35. WHEN trophies_cnt < 30000 THEN ''16000-30000''
  36. WHEN trophies_cnt >= 30000 THEN ''30000+''
  37. END AS trophy_group_2
  38. , ltv_group
  39. , is_payer
  40. , seniority_bin
  41. , pvp_mode
  42. , MATCH_TYPE_ID
  43. , CASE WHEN is_random_mixer = TRUE THEN ''Daily_Random_Mixer'' ELSE match_type END as MATCH_TYPE
  44. , MATCH_MODE
  45. , MODIFIER_1
  46. , MODIFIER_2
  47. , RESOURCE_SUB_TYPE
  48. , rival_resource_sub_type
  49. , RUMBLE_SIZE
  50. , rounds_cnt
  51. , perk_1_resource_name perk_used
  52. , SUM(ROUNDS_CNT) AS ROUNDS
  53. , SUM(MATCH_SCORE) AS MATCH_SCORE
  54. , SUM(MATCH_DURATION_SEC)/60 AS MATCH_DURATION_MINS
  55. , SUM(ABILITY_ACTIVATED_CNT) AS BOOSTER_ACTIVATIONS
  56. , SUM(ifnull(CS_RESYNCS,0)) AS RESYNCS
  57. , COUNT(distinct CASE WHEN CS_RESYNCS>0 THEN concat(match_id, user_id, rematch_cnt) END) AS RESYNC_MATCHES
  58. , SUM(ifnull(ERROR_RESYNCS,0)) AS ERROR_RESYNCS
  59. , COUNT(distinct CASE WHEN ERROR_RESYNCS>0 THEN concat(match_id, user_id, rematch_cnt) END) AS ERROR_RESYNC_MATCHES
  60. , SUM(Case when is_conceded = 1 and is_won = 0 and match_duration_sec = 0 then 1 end) AS CONCEDED_MATCHES
  61. , SUM(Case when is_conceded = 1 and is_won = 0 and match_duration_sec between 1 and 10 then 1 end) AS CONCEDED_MATCHES_1_10
  62. , SUM(Case when is_conceded = 1 and is_won = 0 and match_duration_sec between 10 and 60 then 1 end) AS CONCEDED_MATCHES_10_60
  63. , SUM(Case when is_conceded = 1 and is_won = 0 and match_duration_sec > 60 then 1 end) AS CONCEDED_MATCHES_AFTER_60sec
  64. , SUM(ifnull(rival_played_out_of_time,0)) AS OOT
  65. , COUNT(distinct CASE WHEN rival_played_out_of_time>0 THEN concat(match_id, user_id, rematch_cnt) END) AS OOT_MATCHES
  66. , COUNT(distinct concat(match_id, user_id, rematch_cnt)) as MATCHES
  67. , sum(is_won) as wins
  68. , AVG(MATCH_RANK) AS AVG_MATCH_RANK
  69.  
  70. FROM CANDIVORE.PROD.F_USER_MATCH
  71.  
  72. where is_bot = false
  73. and MATCH_END_DATE > DATEADD(DAY,-61,GETDATE())
  74. GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
  75.  
  76. union all
  77.  
  78. (select distinct match_end_date AS INTERVAL_DATE
  79. , arena_group
  80. , CASE
  81. WHEN trophies_cnt < 125 then ''0-125''
  82. WHEN trophies_cnt < 1400 then ''125-1400''
  83. WHEN trophies_cnt < 2000 then ''1400-2000''
  84. WHEN trophies_cnt < 3800 then ''2000-3800''
  85. WHEN trophies_cnt < 7000 then ''3800-7000''
  86. WHEN trophies_cnt < 16000 then ''7000-16000''
  87. WHEN trophies_cnt < 30000 then ''16000-30000''
  88. WHEN trophies_cnt >= 30000 then ''30000+''
  89. else Null
  90. END as trophy_group
  91. , CASE
  92. WHEN trophies_cnt < 125 THEN ''0-125''
  93. WHEN trophies_cnt < 1400 THEN ''125-1400''
  94. WHEN trophies_cnt < 2000 THEN ''1400-2000''
  95. WHEN trophies_cnt < 3800 THEN ''2000-3800''
  96. WHEN trophies_cnt < 4500 THEN ''3800-4500''
  97. WHEN trophies_cnt < 5500 THEN ''4500-5500''
  98. WHEN trophies_cnt < 7000 THEN ''5500-7000''
  99. WHEN trophies_cnt < 10000 THEN ''7000-10000''
  100. WHEN trophies_cnt < 13000 THEN ''10000-13000''
  101. WHEN trophies_cnt < 16000 THEN ''13000-16000''
  102. WHEN trophies_cnt < 30000 THEN ''16000-30000''
  103. WHEN trophies_cnt >= 30000 THEN ''30000+''
  104. END AS trophy_group_2
  105. , ltv_group
  106. , is_payer
  107. , seniority_bin
  108. , pvp_mode
  109. , MATCH_TYPE_ID
  110. , CASE WHEN is_random_mixer = TRUE THEN ''Daily_Random_Mixer'' ELSE match_type END as MATCH_TYPE
  111. , MATCH_MODE
  112. , MODIFIER_1
  113. , MODIFIER_2
  114. , RESOURCE_SUB_TYPE
  115. , rival_resource_sub_type
  116. , RUMBLE_SIZE
  117. , rounds_cnt
  118. , perk_2_resource_name perk_used
  119. , SUM(ROUNDS_CNT) AS ROUNDS
  120. , SUM(MATCH_SCORE) AS MATCH_SCORE
  121. , SUM(MATCH_DURATION_SEC)/60 AS MATCH_DURATION_MINS
  122. , SUM(ABILITY_ACTIVATED_CNT) AS BOOSTER_ACTIVATIONS
  123. , SUM(ifnull(CS_RESYNCS,0)) AS RESYNCS
  124. , COUNT(distinct CASE WHEN CS_RESYNCS>0 THEN concat(match_id, user_id, rematch_cnt) END) AS RESYNC_MATCHES
  125. , SUM(ifnull(ERROR_RESYNCS,0)) AS ERROR_RESYNCS
  126. , COUNT(distinct CASE WHEN ERROR_RESYNCS>0 THEN concat(match_id, user_id, rematch_cnt) END) AS ERROR_RESYNC_MATCHES
  127. , SUM(Case when is_conceded = 1 and is_won = 0 and match_duration_sec = 0 then 1 end) AS CONCEDED_MATCHES
  128. , SUM(Case when is_conceded = 1 and is_won = 0 and match_duration_sec between 1 and 10 then 1 end) AS CONCEDED_MATCHES_1_10
  129. , SUM(Case when is_conceded = 1 and is_won = 0 and match_duration_sec between 10 and 60 then 1 end) AS CONCEDED_MATCHES_10_60
  130. , SUM(Case when is_conceded = 1 and is_won = 0 and match_duration_sec > 60 then 1 end) AS CONCEDED_MATCHES_AFTER_60sec
  131. , SUM(ifnull(rival_played_out_of_time,0)) AS OOT
  132. , COUNT(distinct CASE WHEN rival_played_out_of_time>0 THEN concat(match_id, user_id, rematch_cnt) END) AS OOT_MATCHES
  133. , COUNT(distinct concat(match_id, user_id, rematch_cnt)) as MATCHES
  134. , sum(is_won) as wins
  135. , AVG(MATCH_RANK) AS AVG_MATCH_RANK
  136.  
  137. FROM CANDIVORE.PROD.F_USER_MATCH
  138.  
  139. where is_bot = false
  140. and MATCH_END_DATE > DATEADD(DAY,-61,GETDATE())
  141. GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)
  142. `
  143.  
  144.  
  145.  
  146. var statement = snowflake.createStatement({sqlText: my_sql_command});
  147. statement.execute();
  148. ';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement