Advertisement
volday

Цен-ь и атр-й дох- по камп&типам устр&типам польз&Город&Рег

Sep 17th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 24.68 KB | None | 0 0
  1. --Ценность и атрибутированный доход по кампаниям и типам устройств и типам пользователей и городам и регионам в сравнении между моделями атрибуции [New] Funnel Based with Completed Orders и GA Last Non-Direct Click с 1 июня 2019 по 30 июня 2019
  2. SELECT
  3.     SOURCE,
  4.     medium,
  5.     campaign,
  6.     device,
  7.     user_type,
  8.     city,
  9.     region,
  10.     sessions_count,
  11.     cost,
  12.     transactions_count,
  13.     _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online
  14. ,
  15. _38bce04635ee4d74960b4ae47fcc4be0_attribution_value AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value
  16. ,
  17. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online
  18. ,
  19. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue,
  20.  
  21.  
  22.  
  23.         --GA Last Non-Direct Click
  24.         _last_click_attribution_value_online AS _last_click_attribution_value_online
  25. ,
  26. _last_click_attribution_attributed_revenue_online AS _last_click_attribution_attributed_revenue_online,
  27.  
  28.             _last_click_attribution_value_online_change,
  29.                 _last_click_attribution_value_change,
  30.             _last_click_attribution_attributed_revenue_online_change,
  31.                 _last_click_attribution_attributed_revenue_change,
  32.  
  33.  
  34.  
  35. FROM
  36. (
  37.  
  38.  
  39.  
  40.     SELECT
  41.         SOURCE AS SOURCE,
  42.         medium AS medium,
  43.         campaign AS campaign,
  44.         device AS device,
  45.         user_type AS user_type,
  46.         city AS city,
  47.         region AS region,
  48.         sessions_count,
  49.         transactions_count,
  50.         cost,
  51.         _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online
  52. ,
  53. _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online_summary AS
  54. _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online_summary
  55. ,
  56. _38bce04635ee4d74960b4ae47fcc4be0_attribution_value AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value
  57. ,
  58. _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_summary AS
  59. _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_summary
  60. ,
  61. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online
  62. ,
  63. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online_summary AS
  64. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online_summary
  65. ,
  66. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue
  67. ,
  68. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_summary AS
  69. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_summary,
  70.  
  71.         sessions_count_summary,
  72.         transactions_count_summary,
  73.         cost_summary
  74.  
  75.         --GA Last Non-Direct Click
  76.         , _last_click_attribution_value_online AS _last_click_attribution_value_online
  77. ,
  78. _last_click_attribution_value_online_summary AS
  79. _last_click_attribution_value_online_summary
  80. ,
  81. _last_click_attribution_attributed_revenue_online AS _last_click_attribution_attributed_revenue_online
  82. ,
  83. _last_click_attribution_attributed_revenue_online_summary AS
  84. _last_click_attribution_attributed_revenue_online_summary,
  85.                 _last_click_attribution_value_online_change,
  86.                 _last_click_attribution_value_change,
  87.                 _last_click_attribution_attributed_revenue_online_change,
  88.                 _last_click_attribution_attributed_revenue_change
  89.  
  90.     FROM
  91.     (
  92.  
  93.  
  94.     SELECT
  95.             COALESCE(t1.SOURCE, t2.SOURCE) AS SOURCE,
  96.             COALESCE(t1.medium, t2.medium) AS medium,
  97.             COALESCE(t1.campaign, t2.campaign) AS campaign,
  98.             COALESCE(t1.device, t2.device) AS device,
  99.             COALESCE(t1.user_type, t2.user_type) AS user_type,
  100.             COALESCE(t1.city, t2.city) AS city,
  101.             COALESCE(t1.region, t2.region) AS region,
  102.         IFNULL(t1.cost, 0) AS cost,
  103.  
  104.         t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online
  105. ,
  106. FIRST_VALUE(t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online_summary) OVER() AS
  107. _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online_summary
  108. ,
  109. t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_value AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value
  110. ,
  111. FIRST_VALUE(t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_value_summary) OVER() AS
  112. _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_summary
  113. ,
  114. t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online
  115. ,
  116. FIRST_VALUE(t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online_summary) OVER() AS
  117. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online_summary
  118. ,
  119. t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue
  120. ,
  121. FIRST_VALUE(t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_summary) OVER() AS
  122. _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_summary,
  123.  
  124.         t1.cost_summary AS cost_summary,
  125.         t1.sessions_count AS sessions_count,
  126.         FIRST_VALUE(t1.sessions_count_summary) OVER() AS sessions_count_summary,
  127.         t1.transactions_count AS transactions_count,
  128.         FIRST_VALUE(t1.transactions_count_summary) OVER() AS transactions_count_summary
  129.  
  130.             --GA Last Non-Direct Click
  131.  
  132.             , t2._last_click_attribution_value_online AS _last_click_attribution_value_online
  133. ,
  134. FIRST_VALUE(t2._last_click_attribution_value_online_summary) OVER() AS
  135. _last_click_attribution_value_online_summary
  136. ,
  137. t2._last_click_attribution_attributed_revenue_online AS _last_click_attribution_attributed_revenue_online
  138. ,
  139. FIRST_VALUE(t2._last_click_attribution_attributed_revenue_online_summary) OVER() AS
  140. _last_click_attribution_attributed_revenue_online_summary,
  141.  
  142.  
  143.                 (t2._last_click_attribution_value_online - t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online) / t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online AS _last_click_attribution_value_online_change,
  144.                 (t2._last_click_attribution_value - t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_value) / t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_value AS _last_click_attribution_value_change,
  145.  
  146.                 (t2._last_click_attribution_attributed_revenue_online - t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online) / t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online AS _last_click_attribution_attributed_revenue_online_change,
  147.                 (t2._last_click_attribution_attributed_revenue - t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue) / t1._38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue AS _last_click_attribution_attributed_revenue_change
  148.  
  149.  
  150.     FROM
  151.     (
  152.  
  153.  
  154.  
  155.     SELECT
  156.         *
  157.     FROM
  158.     (
  159.         SELECT
  160.             SOURCE,
  161.             medium,
  162.             campaign,
  163.             device,
  164.             user_type,
  165.             city,
  166.             region,
  167.  
  168.                 value_online AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online,
  169.                 VALUE AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value,
  170.                     SUM(_38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online) OVER() AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_online_summary,
  171.                     SUM(_38bce04635ee4d74960b4ae47fcc4be0_attribution_value) OVER() AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_value_summary,
  172.                 attributed_revenue_online AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online,
  173.                 attributed_revenue AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue,
  174.                     SUM(_38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online) OVER() AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_online_summary,
  175.                     SUM(_38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue) OVER() AS _38bce04635ee4d74960b4ae47fcc4be0_attribution_attributed_revenue_summary,
  176.  
  177.             IFNULL(cost, 0) AS cost,
  178.             SUM(cost) OVER() AS cost_summary,
  179.             sessions_count,
  180.             SUM(sessions_count) OVER() AS sessions_count_summary,
  181.             transactions_count,
  182.             SUM(transactions_count) OVER() AS transactions_count_summary
  183.         FROM
  184.         (
  185.             SELECT
  186.                         COALESCE(revenues.SOURCE, sessions.SOURCE) AS SOURCE,
  187.                         COALESCE(revenues.medium, sessions.medium) AS medium,
  188.                         COALESCE(revenues.campaign, sessions.campaign) AS campaign,
  189.                         IFNULL(sessions.device, '(not set)') AS device,
  190.                         IFNULL(sessions.user_type, '(not set)') AS user_type,
  191.                         IFNULL(sessions.city, '(not set)') AS city,
  192.                         IFNULL(sessions.region, '(not set)') AS region,
  193.                 SUM(revenues.attributed_revenue) AS attributed_revenue,
  194.                 SUM(revenues.attributed_revenue_online) AS attributed_revenue_online,
  195.                 SUM(revenues.VALUE) AS VALUE,
  196.                 SUM(revenues.value_online) AS value_online,
  197.                 SUM(costs.cost) AS cost,
  198.                 COUNT(DISTINCT summary.session_id, 1000000) AS sessions_count,
  199.                 SUM(revenues.transactions_count) AS transactions_count
  200.             FROM
  201.             (
  202.         SELECT
  203.                 session_id
  204.                 ,
  205.                 MAX(SOURCE) AS SOURCE
  206. ,
  207.                 MAX(medium) AS medium
  208. ,
  209.                 MAX(campaign) AS campaign
  210. ,
  211.                 MAX(device) AS device
  212. ,
  213.                 MAX(user_type) AS user_type
  214. ,
  215.                 MAX(city) AS city
  216. ,
  217.                 MAX(region) AS region
  218.  
  219.         FROM
  220.         (
  221.     SELECT
  222.         sessionId AS session_id,
  223.         MIN(SEC_TO_TIMESTAMP(hits.TIME)) AS sessionTimestamp,
  224.             FIRST(trafficSource.SOURCE) AS SOURCE,
  225.             FIRST(trafficSource.medium) AS medium,
  226.             FIRST(trafficSource.campaign) AS campaign,
  227.             FIRST(device.deviceCategory) AS device,
  228.             FIRST(IF (visitNumber IS NULL, '(not set)', IF (visitNumber=1, 'New', 'Returning'))) AS user_type,
  229.             FIRST(geoNetwork.city) AS city,
  230.             FIRST(geoNetwork.region) AS region,
  231.  
  232.  
  233. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], DATE_ADD(TIMESTAMP('2019-06-01'), -30, 'DAY'), DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'), 1, 'DAY'))    GROUP EACH BY
  234.         session_id
  235.  
  236.  
  237.     HAVING sessionTimestamp BETWEEN DATE_ADD(TIMESTAMP('2019-06-01'), -30, 'DAY') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second')
  238.         ),
  239.         (
  240.     SELECT
  241.         CONCAT('offline', '.', STRING(IF(user_id IS NULL, 'null', user_id)), '_', STRING(TIMESTAMP_TO_SEC(TIMESTAMP(TIME)))) AS session_id,
  242.         MIN(TIMESTAMP(TIME)) AS sessionTimestamp,
  243.             FIRST('(not set)') AS SOURCE,
  244.             FIRST('offline') AS medium,
  245.             FIRST('(not set)') AS campaign,
  246.             FIRST('offline') AS device,
  247.             FIRST('(not set)') AS user_type,
  248.             FIRST('(not set)') AS city,
  249.             FIRST('(not set)') AS region,
  250.  
  251.  
  252. FROM [owox-140513:1c.completed_orders_view] WHERE TIMESTAMP(TIME) BETWEEN DATE_ADD(TIMESTAMP('2019-06-01'), -30, 'DAY') AND DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'), 1, 'DAY')    GROUP EACH BY
  253.         session_id
  254.  
  255.  
  256.     HAVING sessionTimestamp BETWEEN DATE_ADD(TIMESTAMP('2019-06-01'), -30, 'DAY') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second')
  257.         )
  258.     GROUP EACH BY
  259.         session_id
  260.             ) AS sessions
  261.             LEFT JOIN EACH
  262.             (
  263.         SELECT
  264.                 session_id
  265.                
  266.         FROM
  267.         (
  268.     SELECT
  269.         sessionId AS session_id,
  270.         MIN(SEC_TO_TIMESTAMP(hits.TIME)) AS sessionTimestamp,
  271.  
  272.  
  273. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], TIMESTAMP('2019-06-01'), DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'), 1, 'DAY'))    GROUP EACH BY
  274.         session_id
  275.  
  276.  
  277.     HAVING sessionTimestamp BETWEEN TIMESTAMP('2019-06-01') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second')
  278.         ),
  279.         (
  280.     SELECT
  281.         CONCAT('offline', '.', STRING(IF(user_id IS NULL, 'null', user_id)), '_', STRING(TIMESTAMP_TO_SEC(TIMESTAMP(TIME)))) AS session_id,
  282.         MIN(TIMESTAMP(TIME)) AS sessionTimestamp,
  283.  
  284.  
  285. FROM [owox-140513:1c.completed_orders_view] WHERE TIMESTAMP(TIME) BETWEEN TIMESTAMP('2019-06-01') AND DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'), 1, 'DAY')    GROUP EACH BY
  286.         session_id
  287.  
  288.  
  289.     HAVING sessionTimestamp BETWEEN TIMESTAMP('2019-06-01') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second')
  290.         )
  291.     GROUP EACH BY
  292.         session_id
  293.             ) AS summary
  294.             ON
  295.                 summary.session_id = sessions.session_id
  296.             LEFT JOIN EACH
  297.             (
  298.     SELECT
  299.         session_id,
  300.             FIRST(SOURCE) AS SOURCE,
  301.             FIRST(medium) AS medium,
  302.             FIRST(campaign) AS campaign,
  303.         SUM(VALUE) AS VALUE,
  304.         SUM(IF(transaction_source!=101, VALUE, 0)) AS value_online,
  305.         SUM(revenue * VALUE) AS attributed_revenue,
  306.         SUM(IF(transaction_source!=101, revenue, 0) * IF(transaction_source!=101, VALUE, 0)) AS attributed_revenue_online,
  307.         SUM(IF(active_step == 5, 1, 0)) AS transactions_count
  308.     FROM
  309.     (
  310.         SELECT
  311.             session_id,
  312.             VALUE,
  313.                     IFNULL(SOURCE, 'NULL') AS SOURCE,
  314.                     IFNULL(medium, 'NULL') AS medium,
  315.                     IFNULL(campaign, 'NULL') AS campaign,
  316.             revenue,
  317.             active_step,
  318.             MAX(IF(active_step == 5, data_source, NULL)) OVER(PARTITION BY transaction_id) AS transaction_source,
  319.     RANK() OVER(PARTITION BY transaction_id ORDER BY DATE DESC) AS rowf
  320.         FROM
  321.             [owox-140513:Funnel_Based_with_Completed_Orders.VALUES]
  322.         WHERE
  323.         DATE(_PARTITIONTIME) BETWEEN DATE(DATE_ADD(TIMESTAMP('2019-06-01'), -30,'DAY')) AND DATE(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'))
  324.         AND DATE(MSEC_TO_TIMESTAMP(transaction_time)) BETWEEN DATE(TIMESTAMP('2019-06-01')) AND DATE(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'))
  325.  
  326.     )
  327.     WHERE
  328.         rowf = 1
  329.     GROUP EACH BY
  330.         session_id
  331.             ) AS revenues
  332.             ON
  333.                 revenues.session_id = sessions.session_id
  334.             LEFT JOIN EACH
  335.             (
  336.        
  337.     SELECT
  338.         sessionId AS session_id,
  339.         SUM(trafficSource.attributedAdCost) AS cost
  340.  
  341. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], TIMESTAMP('2019-06-01'), DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'))    GROUP EACH BY
  342.         session_id
  343.        
  344.             ) AS costs
  345.             ON
  346.                 costs.session_id = sessions.session_id
  347.             GROUP EACH BY
  348.                 SOURCE,
  349.                 medium,
  350.                 campaign,
  351.                 device,
  352.                 user_type,
  353.                 city,
  354.                 region
  355.         )
  356.     )
  357.  
  358.     ) AS t1
  359.         FULL OUTER JOIN EACH
  360.         (
  361.  
  362.  
  363.  
  364.     SELECT
  365.         *
  366.     FROM
  367.     (
  368.         SELECT
  369.             SOURCE,
  370.             medium,
  371.             campaign,
  372.             device,
  373.             user_type,
  374.             city,
  375.             region,
  376.  
  377.                 value_online AS _last_click_attribution_value_online,
  378.                 VALUE AS _last_click_attribution_value,
  379.                     SUM(_last_click_attribution_value_online) OVER() AS _last_click_attribution_value_online_summary,
  380.                     SUM(_last_click_attribution_value) OVER() AS _last_click_attribution_value_summary,
  381.                 attributed_revenue_online AS _last_click_attribution_attributed_revenue_online,
  382.                 attributed_revenue AS _last_click_attribution_attributed_revenue,
  383.                     SUM(_last_click_attribution_attributed_revenue_online) OVER() AS _last_click_attribution_attributed_revenue_online_summary,
  384.                     SUM(_last_click_attribution_attributed_revenue) OVER() AS _last_click_attribution_attributed_revenue_summary,
  385.  
  386.             IFNULL(cost, 0) AS cost,
  387.             SUM(cost) OVER() AS cost_summary,
  388.             sessions_count,
  389.             SUM(sessions_count) OVER() AS sessions_count_summary,
  390.             transactions_count,
  391.             SUM(transactions_count) OVER() AS transactions_count_summary
  392.         FROM
  393.         (
  394.             SELECT
  395.                         COALESCE(sessions.SOURCE, revenues.SOURCE) AS SOURCE,
  396.                         COALESCE(sessions.medium, revenues.medium) AS medium,
  397.                         COALESCE(sessions.campaign, revenues.campaign) AS campaign,
  398.                         IFNULL(sessions.device, '(not set)') AS device,
  399.                         IFNULL(sessions.user_type, '(not set)') AS user_type,
  400.                         IFNULL(sessions.city, '(not set)') AS city,
  401.                         IFNULL(sessions.region, '(not set)') AS region,
  402.                 SUM(revenues.attributed_revenue) AS attributed_revenue,
  403.                 SUM(revenues.attributed_revenue_online) AS attributed_revenue_online,
  404.                 SUM(revenues.VALUE) AS VALUE,
  405.                 SUM(revenues.value_online) AS value_online,
  406.                 SUM(costs.cost) AS cost,
  407.                 COUNT(DISTINCT summary.session_id, 1000000) AS sessions_count,
  408.                 SUM(revenues.transactions_count) AS transactions_count
  409.             FROM
  410.             (
  411.         SELECT
  412.                 session_id
  413.                 ,
  414.                 MAX(SOURCE) AS SOURCE
  415. ,
  416.                 MAX(medium) AS medium
  417. ,
  418.                 MAX(campaign) AS campaign
  419. ,
  420.                 MAX(device) AS device
  421. ,
  422.                 MAX(user_type) AS user_type
  423. ,
  424.                 MAX(city) AS city
  425. ,
  426.                 MAX(region) AS region
  427.  
  428.         FROM
  429.         (
  430.     SELECT
  431.         sessionId AS session_id,
  432.         MIN(SEC_TO_TIMESTAMP(hits.TIME)) AS sessionTimestamp,
  433.             FIRST(trafficSource.SOURCE) AS SOURCE,
  434.             FIRST(trafficSource.medium) AS medium,
  435.             FIRST(trafficSource.campaign) AS campaign,
  436.             FIRST(device.deviceCategory) AS device,
  437.             FIRST(IF (visitNumber IS NULL, '(not set)', IF (visitNumber=1, 'New', 'Returning'))) AS user_type,
  438.             FIRST(geoNetwork.city) AS city,
  439.             FIRST(geoNetwork.region) AS region,
  440.  
  441.  
  442. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], DATE_ADD(TIMESTAMP('2019-06-01'), -30, 'DAY'), DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'), 1, 'DAY'))    GROUP EACH BY
  443.         session_id
  444.  
  445.  
  446.     HAVING sessionTimestamp BETWEEN DATE_ADD(TIMESTAMP('2019-06-01'), -30, 'DAY') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second')
  447.         ),
  448.         (
  449.     SELECT
  450.         CONCAT('offline', '.', STRING(IF(user_id IS NULL, 'null', user_id)), '_', STRING(TIMESTAMP_TO_SEC(TIMESTAMP(TIME)))) AS session_id,
  451.         MIN(TIMESTAMP(TIME)) AS sessionTimestamp,
  452.             FIRST('(not set)') AS SOURCE,
  453.             FIRST('offline') AS medium,
  454.             FIRST('(not set)') AS campaign,
  455.             FIRST('offline') AS device,
  456.             FIRST('(not set)') AS user_type,
  457.             FIRST('(not set)') AS city,
  458.             FIRST('(not set)') AS region,
  459.  
  460.  
  461. FROM [owox-140513:1c.completed_orders_view] WHERE TIMESTAMP(TIME) BETWEEN DATE_ADD(TIMESTAMP('2019-06-01'), -30, 'DAY') AND DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'), 1, 'DAY')    GROUP EACH BY
  462.         session_id
  463.  
  464.  
  465.     HAVING sessionTimestamp BETWEEN DATE_ADD(TIMESTAMP('2019-06-01'), -30, 'DAY') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second')
  466.         )
  467.     GROUP EACH BY
  468.         session_id
  469.             ) AS sessions
  470.             LEFT JOIN EACH
  471.             (
  472.         SELECT
  473.                 session_id
  474.                
  475.         FROM
  476.         (
  477.     SELECT
  478.         sessionId AS session_id,
  479.         MIN(SEC_TO_TIMESTAMP(hits.TIME)) AS sessionTimestamp,
  480.  
  481.  
  482. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], TIMESTAMP('2019-06-01'), DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'), 1, 'DAY'))    GROUP EACH BY
  483.         session_id
  484.  
  485.  
  486.     HAVING sessionTimestamp BETWEEN TIMESTAMP('2019-06-01') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second')
  487.         ),
  488.         (
  489.     SELECT
  490.         CONCAT('offline', '.', STRING(IF(user_id IS NULL, 'null', user_id)), '_', STRING(TIMESTAMP_TO_SEC(TIMESTAMP(TIME)))) AS session_id,
  491.         MIN(TIMESTAMP(TIME)) AS sessionTimestamp,
  492.  
  493.  
  494. FROM [owox-140513:1c.completed_orders_view] WHERE TIMESTAMP(TIME) BETWEEN TIMESTAMP('2019-06-01') AND DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'), 1, 'DAY')    GROUP EACH BY
  495.         session_id
  496.  
  497.  
  498.     HAVING sessionTimestamp BETWEEN TIMESTAMP('2019-06-01') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second')
  499.         )
  500.     GROUP EACH BY
  501.         session_id
  502.             ) AS summary
  503.             ON
  504.                 summary.session_id = sessions.session_id
  505.             LEFT JOIN EACH
  506.             (
  507.     SELECT
  508.         session_id,
  509.             FIRST(SOURCE) AS SOURCE,
  510.             FIRST(medium) AS medium,
  511.             FIRST(campaign) AS campaign,
  512.         SUM(VALUE) AS VALUE,
  513.         SUM(IF(transaction_source!=101, VALUE, 0)) AS value_online,
  514.         SUM(revenue * VALUE) AS attributed_revenue,
  515.         SUM(IF(transaction_source!=101, revenue, 0) * IF(transaction_source!=101, VALUE, 0)) AS attributed_revenue_online,
  516.         SUM(IF(active_step == 5, 1, 0)) AS transactions_count
  517.     FROM
  518.     (
  519.         SELECT
  520.             value_from_sid AS session_id,
  521.             1 AS VALUE,
  522.                     IFNULL(SOURCE, 'NULL') AS SOURCE,
  523.                     IFNULL(medium, 'NULL') AS medium,
  524.                     IFNULL(campaign, 'NULL') AS campaign,
  525.             revenue,
  526.             active_step,
  527.             MAX(IF(active_step == 5, data_source, NULL)) OVER(PARTITION BY transaction_id) AS transaction_source,
  528.     RANK() OVER(PARTITION BY transaction_id ORDER BY DATE DESC) AS rowf
  529.         FROM
  530.             [owox-140513:Funnel_Based_with_Completed_Orders.VALUES]
  531.         WHERE
  532.         DATE(_PARTITIONTIME) BETWEEN DATE(DATE_ADD(TIMESTAMP('2019-06-01'), -30,'DAY')) AND DATE(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'))
  533.         AND DATE(MSEC_TO_TIMESTAMP(transaction_time)) BETWEEN DATE(TIMESTAMP('2019-06-01')) AND DATE(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'))
  534.  
  535.                 AND active_step == 5
  536.     )
  537.     WHERE
  538.         rowf = 1
  539.     GROUP EACH BY
  540.         session_id
  541.             ) AS revenues
  542.             ON
  543.                 revenues.session_id = sessions.session_id
  544.             LEFT JOIN EACH
  545.             (
  546.        
  547.     SELECT
  548.         sessionId AS session_id,
  549.         SUM(trafficSource.attributedAdCost) AS cost
  550.  
  551. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], TIMESTAMP('2019-06-01'), DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-06-30')), 1, 'day'), -1, 'second'))    GROUP EACH BY
  552.         session_id
  553.        
  554.             ) AS costs
  555.             ON
  556.                 costs.session_id = sessions.session_id
  557.             GROUP EACH BY
  558.                 SOURCE,
  559.                 medium,
  560.                 campaign,
  561.                 device,
  562.                 user_type,
  563.                 city,
  564.                 region
  565.         )
  566.     )
  567.  
  568.         ) AS t2
  569.         ON
  570.             t1.SOURCE = t2.SOURCE AND
  571.             t1.medium = t2.medium AND
  572.             t1.campaign = t2.campaign AND
  573.             t1.device = t2.device AND
  574.             t1.user_type = t2.user_type AND
  575.             t1.city = t2.city AND
  576.             t1.region = t2.region
  577.  
  578.  
  579.  
  580.  
  581.     )
  582.  
  583.  
  584.  
  585. )
  586.  
  587.         ORDER BY sessions_count DESC
  588.         LIMIT 2500
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement