Advertisement
kirzecy670

Untitled

Mar 12th, 2025
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.81 KB | None | 0 0
  1. WITH
  2.  
  3. reinstall AS (
  4.     SELECT DISTINCT uid
  5.     FROM stat.funnelTrack
  6.     WHERE dt >= '2023-06-01'
  7.         AND action IN (
  8.             'reinstall_detected',
  9.             'migration_gmd_received',
  10.             'migration_success_show'
  11.         )
  12.         OR (action IN ('bind_user', 'rebind_user')
  13.             AND visitParamExtractString(addJson, 'reason') IN ('moveGlobalToRu', 'migration', 'adid'))
  14. ),
  15.    
  16. rebind_user AS (
  17.     SELECT DISTINCT device_id AS uid
  18.     FROM billing.a_device_event
  19.     WHERE ts >= '2023-06-01'
  20.         AND type = 'rebind_user'
  21. ),
  22.  
  23. exp_users AS (
  24.     SELECT
  25.         ft.uid as uid,
  26.         MAX(visitParamExtractString(ft.addJson, 'option')) AS exp_group
  27.     FROM
  28.         stat.funnelTrack AS ft
  29.     LEFT ANTI JOIN reinstall AS ri ON ft.uid = ri.uid
  30.     LEFT ANTI JOIN rebind_user AS rb ON ft.uid = rb.uid
  31.     WHERE
  32.         ft.dt >= '2024-05-01'
  33.         AND ft.action = 'pteam_experiment_stop_places_on_map'
  34.     GROUP BY
  35.         ft.uid
  36.     HAVING exp_group in ('old', 'new')
  37. ),
  38.  
  39. payments AS (
  40. SELECT toDate(ContractCharge_TM) AS PaymentDate,
  41.        uid,
  42.        SUM(USDNet) AS TotalUSDNet,
  43.        SUM(USDNet) > 0 AS TotalPurchase,
  44.        SUM(IF(concat(Type, Value) IN ('purchase_minutes_1', 'purchase_minutes_180', 'purchase_minutes_30', 'purchase_minutes_90', 'subscription_minutes_30', 'subscription_minutes_365', 'subscription_minutes_7'), USDNet, 0)) AS MinutesUSDNet,
  45.        SUM(IF(USDNet > 0
  46.               AND concat(Type, Value) IN ('purchase_minutes_1', 'purchase_minutes_180', 'purchase_minutes_30', 'purchase_minutes_90', 'subscription_minutes_30', 'subscription_minutes_365', 'subscription_minutes_7'), 1, 0)) AS MinutesPurchase,
  47.        SUM(IF(concat(Type, Value) IN ('subscription_30', 'subscription_365'), USDNet, 0)) AS SubscriptionUSDNet,
  48.        SUM(IF(concat(Type, Value) IN ('subscription_30', 'subscription_365'), 1, 0)) AS SubscriptionPurchase,
  49.        SUM(IF(Sku LIKE '%care_plus%' OR Sku LIKE '%premium%', USDNet, 0)) AS PlusSubscriptionUSDNet,
  50.        SUM(IF(Sku LIKE '%care_plus%' OR Sku LIKE '%premium%', 1, 0)) AS PlusSubscriptionPurchase
  51. FROM analytics.money join exp_users using(uid)
  52. WHERE ChargeNumber >= 1
  53.   AND NOT was_refunded
  54.   AND USDNet >= 0.02
  55.   AND ContractCharge_TM >= '2024-01-01'
  56. GROUP BY PaymentDate, uid
  57. ),
  58.  
  59. funnelTrack_RawEvents AS (
  60. SELECT
  61.     dt AS EventDate,
  62.     uid,
  63.     countIf(action = 'open_function_zones') AS open_function_zones,
  64.     countIf(action = 'zones_screen') AS zones_screen,
  65.     countIf(action = 'zones_place_create') AS zones_place_create,
  66.     countIf(action = 'zones_pingo_popup_shown') AS zones_pingo_popup_shown,
  67.     countIf(action = 'zones_place_create_screen') AS zones_place_create_screen,
  68.     countIf(action = 'zones_place_create_click') AS zones_place_create_click,
  69.     countIf(action = 'zones_place_create_done') AS zones_place_create_done,
  70.     countIf(action = 'map_page_banner') AS map_page_banner
  71. FROM
  72.     stat.funnelTrack join exp_users using(uid)
  73. WHERE
  74.     dt >= '2024-05-01' AND dt < today()
  75.     AND action IN ('open_function_zones', 'zones_screen', 'zones_place_create',
  76.                    'zones_pingo_popup_shown', 'zones_place_create_screen', 'zones_place_create_click',
  77.                    'zones_place_create_done', 'map_page_banner')
  78. GROUP BY
  79.     EventDate, uid
  80. ),
  81.  
  82. events AS (
  83.     SELECT
  84.         e.uid as uid,
  85.         toDate(p.full_reg_datetime) AS FullRegDatetime,
  86.         toDate(e.dt) AS EventDate,
  87.         notEmpty(e.open) AS Open,
  88.         p.platform AS Platform,
  89.         p.region AS Region,
  90.         p.ip_country AS IPCountry
  91.     FROM analytics.parent_actions e
  92.     JOIN analytics.parent_properties p on e.uid = p.uid
  93.     JOIN exp_users a on e.uid = a.uid
  94.     WHERE e.dt >= '2024-05-01'
  95.           AND p.full_reg_datetime >= '2000-01-01'
  96.           AND p.is_full_register
  97.           AND p.uid IS NOT NULL
  98. )
  99.  
  100. SELECT
  101.     e1.Platform AS Platform,
  102.     e1.Region AS Region,
  103.     eu.exp_group AS exp_group,
  104.     toDate(e1.FullRegDatetime) AS RegistrationDate,
  105.     if(dateDiff('day', e1.FullRegDatetime, e1.EventDate) < 0, 0, dateDiff('day', e1.FullRegDatetime, e1.EventDate)) AS CohortDayLife,
  106.     uniqExact(e1.uid) AS OpenUsers,
  107.     -- Fact user metrics (core)
  108.     SUM(e1.Open) AS OpenApp,
  109.     SUM(cm.open_function_zones) AS OpenFuncZones,
  110.     SUM(cm.zones_screen) AS ZonesScreen,
  111.     SUM(cm.zones_place_create) AS ZonesPlaceCreate,
  112.     SUM(cm.zones_place_create_screen) AS ZonesPlaceCreateScreen,
  113.     SUM(cm.zones_place_create_click) AS ZonesPlaceCreateClick,
  114.     SUM(cm.zones_place_create_done) AS ZonesPlaceCreateDone,
  115.     SUM(cm.zones_pingo_popup_shown) AS ZonesPingoPopup,
  116.     SUM(cm.map_page_banner) AS OpenMapPageBanner,
  117.    
  118.     -- Real-time user metrics (core)
  119.     SUM(IF(e1.Open AND e2.Open, 1, NULL)) AS RTOpenUsers,
  120.     SUM(IF(cm.map_page_banner AND cm1.map_page_banner, 1, NULL)) AS RTOpenMapPageBannerUsers,
  121.    
  122.     -- Purchase metrics
  123.     SUM(payments.TotalUSDNet) AS TotalUSDNet,
  124.     SUM(payments.TotalPurchase) AS TotalPurchase,
  125.     SUM(payments.MinutesUSDNet) AS MinutesUSDNet,
  126.     SUM(payments.MinutesPurchase) AS MinutesPurchase,
  127.     SUM(payments.SubscriptionUSDNet) AS SubscriptionUSDNet,
  128.     SUM(payments.SubscriptionPurchase) AS SubscriptionPurchase,
  129.     SUM(payments.PlusSubscriptionUSDNet) AS PlusSubscriptionUSDNet,
  130.     SUM(payments.PlusSubscriptionPurchase) AS PlusSubscriptionPurchase
  131. FROM exp_users AS eu
  132. LEFT JOIN events e1 ON eu.uid = e1.uid
  133. LEFT JOIN events e2 ON e1.uid = e2.uid AND e2.EventDate = e1.EventDate + INTERVAL 1 DAY
  134. LEFT JOIN payments ON payments.uid = e1.uid AND payments.PaymentDate = e1.EventDate
  135. LEFT JOIN funnelTrack_RawEvents cm ON cm.uid = e1.uid AND cm.EventDate = e1.EventDate
  136. LEFT JOIN funnelTrack_RawEvents cm1 ON cm.uid = cm1.uid AND cm.EventDate = cm1.EventDate + INTERVAL 1 DAY
  137. GROUP BY 1, 2, 3, 4, 5 ORDER BY CohortDayLife, Platform, Region, exp_group
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement