Advertisement
volday

Атрибутированный доход по ист-кан в сравн м//LC и FB 300619-

Sep 17th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 14.50 KB | None | 0 0
  1. --Атрибутированный доход по источникам и каналам в сравнении между моделями атрибуции GA Last Non-Direct Click и Funnel Based с 30 июня 2019 по 29 июля 2019
  2. SELECT
  3.     SOURCE,
  4.     medium,
  5.     sessions_count,
  6.     cost,
  7.     transactions_count,
  8.     _last_click_attribution_attributed_revenue_online AS _last_click_attribution_attributed_revenue_online,
  9.  
  10.  
  11.  
  12.         --Funnel Based
  13.         _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online
  14. ,
  15. _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue,
  16.  
  17.             _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online_change,
  18.                 _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_change,
  19.  
  20.  
  21.  
  22. FROM
  23. (
  24.  
  25.  
  26.  
  27.     SELECT
  28.         SOURCE AS SOURCE,
  29.         medium AS medium,
  30.         sessions_count,
  31.         transactions_count,
  32.         cost,
  33.         _last_click_attribution_attributed_revenue_online AS _last_click_attribution_attributed_revenue_online
  34. ,
  35. _last_click_attribution_attributed_revenue_online_summary AS
  36. _last_click_attribution_attributed_revenue_online_summary,
  37.  
  38.         sessions_count_summary,
  39.         transactions_count_summary,
  40.         cost_summary
  41.  
  42.         --Funnel Based
  43.         , _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online
  44. ,
  45. _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online_summary AS
  46. _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online_summary
  47. ,
  48. _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue
  49. ,
  50. _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_summary AS
  51. _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_summary,
  52.                 _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online_change,
  53.                 _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_change
  54.  
  55.     FROM
  56.     (
  57.  
  58.  
  59.     SELECT
  60.             COALESCE(t1.SOURCE, t2.SOURCE) AS SOURCE,
  61.             COALESCE(t1.medium, t2.medium) AS medium,
  62.         IFNULL(t1.cost, 0) AS cost,
  63.  
  64.         t1._last_click_attribution_attributed_revenue_online AS _last_click_attribution_attributed_revenue_online
  65. ,
  66. FIRST_VALUE(t1._last_click_attribution_attributed_revenue_online_summary) OVER() AS
  67. _last_click_attribution_attributed_revenue_online_summary,
  68.  
  69.         t1.cost_summary AS cost_summary,
  70.         t1.sessions_count AS sessions_count,
  71.         FIRST_VALUE(t1.sessions_count_summary) OVER() AS sessions_count_summary,
  72.         t1.transactions_count AS transactions_count,
  73.         FIRST_VALUE(t1.transactions_count_summary) OVER() AS transactions_count_summary
  74.  
  75.             --Funnel Based
  76.  
  77.             , t2._5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online
  78. ,
  79. FIRST_VALUE(t2._5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online_summary) OVER() AS
  80. _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online_summary
  81. ,
  82. t2._5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue
  83. ,
  84. FIRST_VALUE(t2._5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_summary) OVER() AS
  85. _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_summary,
  86.  
  87.  
  88.                 (t2._5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online - t1._last_click_attribution_attributed_revenue_online) / t1._last_click_attribution_attributed_revenue_online AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online_change,
  89.                 (t2._5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue - t1._last_click_attribution_attributed_revenue) / t1._last_click_attribution_attributed_revenue AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_change
  90.  
  91.  
  92.     FROM
  93.     (
  94.  
  95.  
  96.  
  97.     SELECT
  98.         *
  99.     FROM
  100.     (
  101.         SELECT
  102.             SOURCE,
  103.             medium,
  104.  
  105.                 attributed_revenue_online AS _last_click_attribution_attributed_revenue_online,
  106.                 attributed_revenue AS _last_click_attribution_attributed_revenue,
  107.                     SUM(_last_click_attribution_attributed_revenue_online) OVER() AS _last_click_attribution_attributed_revenue_online_summary,
  108.                     SUM(_last_click_attribution_attributed_revenue) OVER() AS _last_click_attribution_attributed_revenue_summary,
  109.  
  110.             IFNULL(cost, 0) AS cost,
  111.             SUM(cost) OVER() AS cost_summary,
  112.             sessions_count,
  113.             SUM(sessions_count) OVER() AS sessions_count_summary,
  114.             transactions_count,
  115.             SUM(transactions_count) OVER() AS transactions_count_summary
  116.         FROM
  117.         (
  118.             SELECT
  119.                         COALESCE(sessions.SOURCE, revenues.SOURCE) AS SOURCE,
  120.                         COALESCE(sessions.medium, revenues.medium) AS medium,
  121.                 SUM(revenues.attributed_revenue) AS attributed_revenue,
  122.                 SUM(revenues.attributed_revenue_online) AS attributed_revenue_online,
  123.                 SUM(revenues.VALUE) AS VALUE,
  124.                 SUM(revenues.value_online) AS value_online,
  125.                 SUM(costs.cost) AS cost,
  126.                 COUNT(DISTINCT summary.session_id, 1000000) AS sessions_count,
  127.                 SUM(revenues.transactions_count) AS transactions_count
  128.             FROM
  129.             (
  130.        
  131.     SELECT
  132.         sessionId AS session_id,
  133.         MIN(SEC_TO_TIMESTAMP(hits.TIME)) AS sessionTimestamp,
  134.             FIRST(trafficSource.SOURCE) AS SOURCE,
  135.             FIRST(trafficSource.medium) AS medium,
  136.  
  137.  
  138. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], DATE_ADD(TIMESTAMP('2019-06-30'), -30, 'DAY'), DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'), 1, 'DAY'))    GROUP EACH BY
  139.         session_id
  140.  
  141.  
  142.     HAVING sessionTimestamp BETWEEN DATE_ADD(TIMESTAMP('2019-06-30'), -30, 'DAY') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second')
  143.        
  144.             ) AS sessions
  145.             LEFT JOIN EACH
  146.             (
  147.        
  148.     SELECT
  149.         sessionId AS session_id,
  150.         MIN(SEC_TO_TIMESTAMP(hits.TIME)) AS sessionTimestamp,
  151.  
  152.  
  153. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], TIMESTAMP('2019-06-30'), DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'), 1, 'DAY'))    GROUP EACH BY
  154.         session_id
  155.  
  156.  
  157.     HAVING sessionTimestamp BETWEEN TIMESTAMP('2019-06-30') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second')
  158.        
  159.             ) AS summary
  160.             ON
  161.                 summary.session_id = sessions.session_id
  162.             LEFT JOIN EACH
  163.             (
  164.     SELECT
  165.         session_id,
  166.             FIRST(SOURCE) AS SOURCE,
  167.             FIRST(medium) AS medium,
  168.         SUM(VALUE) AS VALUE,
  169.         SUM(IF(transaction_source!=101, VALUE, 0)) AS value_online,
  170.         SUM(revenue * VALUE) AS attributed_revenue,
  171.         SUM(IF(transaction_source!=101, revenue, 0) * IF(transaction_source!=101, VALUE, 0)) AS attributed_revenue_online,
  172.         SUM(IF(active_step == 5, 1, 0)) AS transactions_count
  173.     FROM
  174.     (
  175.         SELECT
  176.             value_from_sid AS session_id,
  177.             1 AS VALUE,
  178.                     IFNULL(SOURCE, 'NULL') AS SOURCE,
  179.                     IFNULL(medium, 'NULL') AS medium,
  180.             revenue,
  181.             active_step,
  182.             MAX(IF(active_step == 5, data_source, NULL)) OVER(PARTITION BY transaction_id) AS transaction_source,
  183.     RANK() OVER(PARTITION BY transaction_id ORDER BY DATE DESC) AS rowf
  184.         FROM
  185.             [owox-140513:Attribution_FunnelBased.VALUES]
  186.         WHERE
  187.         DATE(_PARTITIONTIME) BETWEEN DATE(DATE_ADD(TIMESTAMP('2019-06-30'), -30,'DAY')) AND DATE(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'))
  188.         AND DATE(MSEC_TO_TIMESTAMP(transaction_time)) BETWEEN DATE(TIMESTAMP('2019-06-30')) AND DATE(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'))
  189.  
  190.                 AND active_step == 5
  191.     )
  192.     WHERE
  193.         rowf = 1
  194.     GROUP EACH BY
  195.         session_id
  196.             ) AS revenues
  197.             ON
  198.                 revenues.session_id = sessions.session_id
  199.             LEFT JOIN EACH
  200.             (
  201.        
  202.     SELECT
  203.         sessionId AS session_id,
  204.         SUM(trafficSource.attributedAdCost) AS cost
  205.  
  206. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], TIMESTAMP('2019-06-30'), DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'))    GROUP EACH BY
  207.         session_id
  208.        
  209.             ) AS costs
  210.             ON
  211.                 costs.session_id = sessions.session_id
  212.             GROUP EACH BY
  213.                 SOURCE,
  214.                 medium
  215.         )
  216.     )
  217.  
  218.     ) AS t1
  219.         FULL OUTER JOIN EACH
  220.         (
  221.  
  222.  
  223.  
  224.     SELECT
  225.         *
  226.     FROM
  227.     (
  228.         SELECT
  229.             SOURCE,
  230.             medium,
  231.  
  232.                 attributed_revenue_online AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online,
  233.                 attributed_revenue AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue,
  234.                     SUM(_5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online) OVER() AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_online_summary,
  235.                     SUM(_5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue) OVER() AS _5222fa8b1f644e9aa30ad723a5199319_attribution_attributed_revenue_summary,
  236.  
  237.             IFNULL(cost, 0) AS cost,
  238.             SUM(cost) OVER() AS cost_summary,
  239.             sessions_count,
  240.             SUM(sessions_count) OVER() AS sessions_count_summary,
  241.             transactions_count,
  242.             SUM(transactions_count) OVER() AS transactions_count_summary
  243.         FROM
  244.         (
  245.             SELECT
  246.                         COALESCE(revenues.SOURCE, sessions.SOURCE) AS SOURCE,
  247.                         COALESCE(revenues.medium, sessions.medium) AS medium,
  248.                 SUM(revenues.attributed_revenue) AS attributed_revenue,
  249.                 SUM(revenues.attributed_revenue_online) AS attributed_revenue_online,
  250.                 SUM(revenues.VALUE) AS VALUE,
  251.                 SUM(revenues.value_online) AS value_online,
  252.                 SUM(costs.cost) AS cost,
  253.                 COUNT(DISTINCT summary.session_id, 1000000) AS sessions_count,
  254.                 SUM(revenues.transactions_count) AS transactions_count
  255.             FROM
  256.             (
  257.        
  258.     SELECT
  259.         sessionId AS session_id,
  260.         MIN(SEC_TO_TIMESTAMP(hits.TIME)) AS sessionTimestamp,
  261.             FIRST(trafficSource.SOURCE) AS SOURCE,
  262.             FIRST(trafficSource.medium) AS medium,
  263.  
  264.  
  265. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], DATE_ADD(TIMESTAMP('2019-06-30'), -30, 'DAY'), DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'), 1, 'DAY'))    GROUP EACH BY
  266.         session_id
  267.  
  268.  
  269.     HAVING sessionTimestamp BETWEEN DATE_ADD(TIMESTAMP('2019-06-30'), -30, 'DAY') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second')
  270.        
  271.             ) AS sessions
  272.             LEFT JOIN EACH
  273.             (
  274.        
  275.     SELECT
  276.         sessionId AS session_id,
  277.         MIN(SEC_TO_TIMESTAMP(hits.TIME)) AS sessionTimestamp,
  278.  
  279.  
  280. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], TIMESTAMP('2019-06-30'), DATE_ADD(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'), 1, 'DAY'))    GROUP EACH BY
  281.         session_id
  282.  
  283.  
  284.     HAVING sessionTimestamp BETWEEN TIMESTAMP('2019-06-30') AND DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second')
  285.        
  286.             ) AS summary
  287.             ON
  288.                 summary.session_id = sessions.session_id
  289.             LEFT JOIN EACH
  290.             (
  291.     SELECT
  292.         session_id,
  293.             FIRST(SOURCE) AS SOURCE,
  294.             FIRST(medium) AS medium,
  295.         SUM(VALUE) AS VALUE,
  296.         SUM(IF(transaction_source!=101, VALUE, 0)) AS value_online,
  297.         SUM(revenue * VALUE) AS attributed_revenue,
  298.         SUM(IF(transaction_source!=101, revenue, 0) * IF(transaction_source!=101, VALUE, 0)) AS attributed_revenue_online,
  299.         SUM(IF(active_step == 5, 1, 0)) AS transactions_count
  300.     FROM
  301.     (
  302.         SELECT
  303.             session_id,
  304.             VALUE,
  305.                     IFNULL(SOURCE, 'NULL') AS SOURCE,
  306.                     IFNULL(medium, 'NULL') AS medium,
  307.             revenue,
  308.             active_step,
  309.             MAX(IF(active_step == 5, data_source, NULL)) OVER(PARTITION BY transaction_id) AS transaction_source,
  310.     RANK() OVER(PARTITION BY transaction_id ORDER BY DATE DESC) AS rowf
  311.         FROM
  312.             [owox-140513:Attribution_FunnelBased.VALUES]
  313.         WHERE
  314.         DATE(_PARTITIONTIME) BETWEEN DATE(DATE_ADD(TIMESTAMP('2019-06-30'), -30,'DAY')) AND DATE(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'))
  315.         AND DATE(MSEC_TO_TIMESTAMP(transaction_time)) BETWEEN DATE(TIMESTAMP('2019-06-30')) AND DATE(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'))
  316.  
  317.     )
  318.     WHERE
  319.         rowf = 1
  320.     GROUP EACH BY
  321.         session_id
  322.             ) AS revenues
  323.             ON
  324.                 revenues.session_id = sessions.session_id
  325.             LEFT JOIN EACH
  326.             (
  327.        
  328.     SELECT
  329.         sessionId AS session_id,
  330.         SUM(trafficSource.attributedAdCost) AS cost
  331.  
  332. FROM TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], TIMESTAMP('2019-06-30'), DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(TIMESTAMP('2019-07-29')), 1, 'day'), -1, 'second'))    GROUP EACH BY
  333.         session_id
  334.        
  335.             ) AS costs
  336.             ON
  337.                 costs.session_id = sessions.session_id
  338.             GROUP EACH BY
  339.                 SOURCE,
  340.                 medium
  341.         )
  342.     )
  343.  
  344.         ) AS t2
  345.         ON
  346.             t1.SOURCE = t2.SOURCE AND
  347.             t1.medium = t2.medium
  348.  
  349.  
  350.  
  351.  
  352.     )
  353.  
  354.  
  355.  
  356. )
  357.  
  358.         ORDER BY sessions_count DESC
  359.         LIMIT 2500
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement