Advertisement
volday

Цен-ь и атриб-й доход по камп в сравн м/мод GA LC и FBC с 1

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