Advertisement
YuvalGai

Untitled

Jun 27th, 2023
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.12 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE CANDIVORE.SEMANTIC_LAYER.SP_T_REVENUE()
  2. RETURNS VARCHAR(16777216)
  3. LANGUAGE JAVASCRIPT
  4. EXECUTE AS CALLER
  5. AS '
  6.  
  7. // Insert segmented data into CANDIVORE.SEMANTIC_LAYER.T_REVENUE table
  8. var my_sql_command = `
  9. CREATE OR REPLACE TABLE CANDIVORE.SEMANTIC_LAYER.T_REVENUE_DASHBOARD AS
  10. SELECT
  11. DATE(A.derived_tstamp) AS interval_date
  12. ,B.league
  13. ,B.trophy_group
  14. , CASE
  15. WHEN A.LT_PURCHASES_AMT > 0 THEN ''paying_user''
  16. ELSE ''non_paying_user''
  17. END Paying_user
  18. , B.LTV_group
  19. , B.ltv_group_30d
  20. , date_trunc(''MONTH'',DATE(A.first_install_dt)) AS monthly_cohort
  21. , B.country
  22. , B.platform
  23. , A.purchase_type
  24. , A.purchase_subtype
  25. , A.price_point
  26. , A.template_id
  27. , A.package
  28. , A.special_offer_id
  29. , A.sub_offer_id
  30. , CASE WHEN A.lt_purchases_amt = 1 THEN 1 ELSE 0 END ftds
  31. , CASE WHEN A.lt_purchases_amt = 2 THEN 1 ELSE 0 END stds
  32. , CASE WHEN A.lt_purchases_amt = 3 THEN 1 ELSE 0 END ttds
  33. , COUNT(A.iap_price) AS Purchases
  34. , SUM(A.iap_price) AS Revenue
  35. , COUNT(DISTINCT A.user_id) AS Active_Users
  36. FROM
  37. ((SELECT *, DATE(derived_tstamp) interval_Date FROM CANDIVORE.PROD.F_IN_APP_PURCHASE WHERE DATE(derived_tstamp) >= ''2022-10-01'') A
  38.  
  39. LEFT JOIN
  40.  
  41. (SELECT
  42. user_id
  43. , interval_date
  44. , country
  45. , LANGUAGE
  46. , platform
  47. , app_version
  48. , app_minor_version
  49. , ltv_group
  50. , DATE(first_install_dt) AS install_date
  51. , CASE
  52. WHEN trophies_cnt < 125 THEN ''0-125''
  53. WHEN trophies_cnt < 1400 THEN ''125-1400''
  54. WHEN trophies_cnt < 2000 THEN ''1400-2000''
  55. WHEN trophies_cnt < 3800 THEN ''2000-3800''
  56. WHEN trophies_cnt < 7000 THEN ''3800-7000''
  57. WHEN trophies_cnt < 16000 THEN ''7000-16000''
  58. WHEN trophies_cnt < 30000 THEN ''16000-30000''
  59. WHEN trophies_cnt >= 30000 THEN ''30000+''
  60. END AS trophy_group
  61. , CASE
  62. WHEN trophies_cnt < 125 THEN ''0-125''
  63. WHEN trophies_cnt < 1400 THEN ''125-1400''
  64. WHEN trophies_cnt < 2000 THEN ''1400-2000''
  65. WHEN trophies_cnt < 3800 THEN ''2000-3800''
  66. WHEN trophies_cnt < 4500 THEN ''3800-4500''
  67. WHEN trophies_cnt < 5500 THEN ''4500-5500''
  68. WHEN trophies_cnt < 7000 THEN ''5500-7000''
  69. WHEN trophies_cnt < 10000 THEN ''7000-10000''
  70. WHEN trophies_cnt < 13000 THEN ''10000-13000''
  71. WHEN trophies_cnt < 16000 THEN ''13000-16000''
  72. WHEN trophies_cnt < 30000 THEN ''16000-30000''
  73. WHEN trophies_cnt >= 30000 THEN ''30000+''
  74. END AS trophy_group_2
  75. ,CASE
  76. WHEN trophies_cnt < 800 THEN ''800''
  77. WHEN finish_arena<=13 THEN ''Studios''
  78. WHEN finish_arena<=22 THEN ''Master_League''
  79. WHEN finish_arena>=23 THEN ''Legends_League''
  80. END league
  81. ,case
  82. when iap_30d = 0 then ''0''
  83. when iap_30d <= 1 then ''Low (0-1)''
  84. when iap_30d <= 2 then ''Med (1-3)''
  85. when iap_30d <= 5 then ''High (3-8)''
  86. when iap_30d <= 15 then ''Very High (8-15)''
  87. when iap_30d > 15 then ''VIP (15+)''
  88. end ltv_group_30d
  89. FROM candivore.prod.daily_users_from_params WHERE interval_date >= ''2022-10-01'') B
  90.  
  91. ON A.user_id = B.user_id AND A.interval_date = B.interval_date)
  92.  
  93. GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
  94.  
  95.  
  96.  
  97. `
  98.  
  99.  
  100.  
  101. var statement = snowflake.createStatement({sqlText: my_sql_command});
  102. statement.execute();
  103. ';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement