Advertisement
YuvalGai

Untitled

May 9th, 2023 (edited)
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.59 KB | None | 0 0
  1. CREATE OR REPLACE VIEW SNOWPLOW.DERIVED."v_INTERVAL_SESSION_INVENTORY_SUB_TYPE"(
  2.     USER_ID,
  3.     INTERVAL_DATE_TIME,
  4.     LAST_SESSION_ID,
  5.     RESOURCE_TYPE,
  6.     RESOURCE_TYPE_ID,
  7.     RESOURCE_SUB_TYPE,
  8.     RESOURCE_SUB_TYPE_ID,
  9.     BOOSTER_TIER_GROUP,
  10.     BOOSTER_TIER_GROUP_ID,
  11.     RESOURCE_STATUS,
  12.     LTV_GROUP,
  13.     SENIORITY_BIN,
  14.     ENGAGEMENT_GROUP,
  15.     ARENA_GROUP,
  16.     TROPHY_GROUP,
  17.     START_SESSION_RESOURCE_COUNT
  18. ) AS
  19.  
  20. SELECT user_id
  21.         , interval_date_time
  22.         , last_session_id
  23.         , Resource_Type
  24.         , Resource_Type_id
  25.         -- , IFNULL(case when Resource_Name_Id = 'AlbumPage' then 'AlbumPage'
  26.         --          when Resource_Type = 'Sticker' then concat(Resource_Status,Resource_Type)
  27.         --          when Resource_Type = 'OnFire' then Resource_Name_Id
  28.         --          when Resource_Type = 'Ticket' then Resource_Name
  29.         --          else Resource_Type end,'None') as Resource_Type
  30.         ,IFNULL(CASE WHEN Resource_Type IN ('Booster', 'Perk') THEN Resource_Sub_Type ELSE Resource_Name_Id END,'None') AS Resource_Sub_Type
  31.         , Resource_Sub_Type_Id
  32.  
  33.         -- ,IFNULL(case when Resource_Type in ('Booster', 'Perk') then Resource_Sub_Type
  34.         --                  when Resource_Sub_Type = 'Sticker' then concat(Resource_Status,Resource_Sub_Type)
  35.         --                  else Resource_Name_Id end,'None') as Resource_Sub_Type
  36.  
  37.         -- ,IFNULL(case when Resource_Name_Id = 'AlbumPage' then 'AlbumPage'
  38.         --                  when Resource_Sub_Type = 'Sticker' then concat(Resource_Status,Resource_Sub_Type)
  39.         --                  when Resource_Sub_Type = 'OnFire' then Resource_Name_Id
  40.         --                  when Resource_Sub_Type = 'Ticket' then Resource_Name_Id
  41.         --                  else Resource_Sub_Type end,'None') as Resource_Sub_Type
  42.  
  43.         , Booster_Tier_Group
  44.         , Booster_Tier_Group_Id
  45.         , Resource_Status
  46.         , LTV_Group
  47.         , Seniority_Bin
  48.         , Engagement_Group
  49.         , Arena_Group
  50.         , trophy_group
  51.         , SUM(CASE WHEN Resource_Name_Id = 'OnFireTime' THEN Start_Session_Resource_Count/3600 ELSE Start_Session_Resource_Count END) AS Start_Session_Resource_Count
  52. --sum(Start_Session_Resource_Count) as Start_Session_Resource_Count
  53. FROM (SELECT
  54.      I.User_Id
  55.     ,S.Interval_Date_Time
  56.     ,S.Last_Session_Id
  57.     ,IFNULL(R.Resource_Type_Id,-1) AS Resource_Type_Id                                 
  58.     ,IFNULL(R.Resource_Type,'None') AS Resource_Type
  59.     ,IFNULL(R.Resource_Sub_Type_Id,-1) AS Resource_Sub_Type_Id
  60.     ,IFNULL(R.Resource_Sub_Type,'None') AS Resource_Sub_Type
  61.     -- ,IFNULL(R.Resource_Id,-1) as Resource_Id
  62.     ,I.Resource_Name AS Resource_Name_Id
  63.     -- ,IFNULL(R.Resource_Display_Name,I.Resource_Name) as Resource_Display_Name
  64.     , I.Resource_Name
  65.     ,IFNULL(R.Booster_Tier_Group,-1) AS Booster_Tier_Group_Id
  66.     ,IFNULL(R.Booster_Tier_Group_Name,'None') AS Booster_Tier_Group
  67.     ,INITCAP(I.Resource_Status) AS Resource_Status
  68.     ,I.Start_Session_Resource_CNT AS Start_Session_Resource_Count
  69.     ,S.LTV_Group
  70.     -- ,S.Seniority
  71.     ,S.Seniority_Bin
  72.     ,S.Engagement_Group
  73.     -- ,S.Is_Payer
  74.     -- ,S.Arena_Index,
  75.     ,S.Arena_Group
  76.     ,CASE
  77.     WHEN S.arena_index <=1 THEN '0-125'
  78.     WHEN S.arena_index <=6 THEN '125-1400'
  79.     WHEN S.arena_index <=8 THEN '1400-2000'
  80.     WHEN S.arena_index <=13 THEN '2000-3800'
  81.     WHEN S.arena_index <=16 THEN '3800-7000'
  82.     WHEN S.arena_index <=19 THEN '7000-16000'
  83.     WHEN S.arena_index <=22 THEN '16000-30000'
  84.     WHEN S.arena_index >=23 THEN '30000+'
  85. END trophy_group
  86. FROM SNOWPLOW.DERIVED.USER_SESSION_INVENTORY I
  87. INNER JOIN SNOWPLOW.DERIVED.INTERVAL_LAST_SESSION_PER_USER S
  88.         ON (S.USER_ID = I.USER_ID AND I.SESSION_ID = S.Last_Session_Id )
  89. LEFT JOIN (
  90.     SELECT
  91.          Resource_Id
  92.         ,Resource_Name
  93.         ,Resource_Display_Name
  94.         ,Resource_Type_Id
  95.         ,Resource_Type
  96.         ,Resource_Sub_Type_Id
  97.         ,Resource_Sub_Type
  98.         ,Booster_Tier_Group
  99.         ,Booster_Tier_Group_Name
  100.         ,ROW_NUMBER() OVER (PARTITION BY Resource_Name,RESOURCE_TYPE ORDER BY Resource_Version DESC) AS RN
  101.     FROM SNOWPLOW.DERIVED.DIM_RESOURCE_VERSION
  102.     WHERE (resource_UI_order > -1 OR resource_UI_order IS NULL)
  103.     ) R ON (LOWER(I.Resource_Name) = LOWER(R.Resource_Name,R.Resource_Type) AND R.RN = 1 AND LOWER(ifnull(I.RESOURCE_TYPE,'n/a')) = LOWER(ifnull(R.RESOURCE_TYPE,'n/a')))
  104. WHERE CASE WHEN R.Resource_Type != 'OnFire' THEN Start_Session_Resource_Count > 0 ELSE Start_Session_Resource_Count>=0 END
  105. AND Resource_Name_Id NOT IN ('Nuke','TapTime')  AND R.Resource_Type != 'None'  )
  106. GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement