From 5750a1f682ffb53027f1ea922c5e41e22a1a421b Mon Sep 17 00:00:00 2001 From: Andrei Markin Date: Wed, 11 Oct 2023 16:32:26 +0400 Subject: [PATCH] Add support for custom conversions names in output tables Change-Id: I5df917f7f02b38d239ffad95bbb99b7707d35b74 --- bq_queries/ad_video_performance.sql | 20 ++++++++++++++++++++ bq_queries/video_performance.sql | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/bq_queries/ad_video_performance.sql b/bq_queries/ad_video_performance.sql index 5c0bbc8..e03846c 100644 --- a/bq_queries/ad_video_performance.sql +++ b/bq_queries/ad_video_performance.sql @@ -110,6 +110,18 @@ WITH ANY_VALUE(youtube_video_duration) AS youtube_video_duration FROM `{bq_dataset}.ad_matching` GROUP BY 1 + ), + CustomConvSplit AS ( + SELECT + date, + ad_id, + {% for custom_conversion in custom_conversions %} + {% for conversion_alias, conversion_name in custom_conversion.items() %} + SUM(IF(conversion_name IN ('{{conversion_name}}'), all_conversions, 0)) AS conversions_{{conversion_alias}}, + {% endfor %} + {% endfor %} + FROM `{bq_dataset}.conversion_split` AS AP + GROUP BY 1,2 ) SELECT PARSE_DATE("%Y-%m-%d", AP.date) AS day, @@ -145,6 +157,11 @@ SELECT SUM(AP.impressions) AS impressions, SUM(AP.all_conversions) AS all_conversions, SUM(AP.conversions) AS conversions, + {% for custom_conversion in custom_conversions %} + {% for conversion_alias, conversion_name in custom_conversion.items() %} + SUM(COALESCE(CCS.conversions_{{conversion_alias}}, 0)) AS conversions_{{conversion_alias}}, + {% endfor %} + {% endfor %} SUM(AP.video_views) AS video_views, SUM(AP.view_through_conversions) AS view_through_conversions, SUM(AP.engagements) AS engagements, @@ -154,6 +171,9 @@ INNER JOIN AdMatchingTable AS AM ON AP.ad_id = AM.ad_id LEFT JOIN `{bq_dataset}.video_headlines_call_to_actions` AS V ON AP.ad_id = V.ad_id +LEFT JOIN CustomConvSplit AS CCS + ON AP.ad_id = CCS.ad_id + AND AP.date = CCS.date LEFT JOIN MappingTable AS M ON AP.ad_group_id = M.ad_group_id LEFT JOIN `{bq_dataset}.asset_mapping` AS Assets diff --git a/bq_queries/video_performance.sql b/bq_queries/video_performance.sql index a4d7750..f6a6397 100644 --- a/bq_queries/video_performance.sql +++ b/bq_queries/video_performance.sql @@ -13,6 +13,18 @@ -- limitations under the License. CREATE OR REPLACE TABLE `{output_dataset}.video_performance` AS ( +WITH CustomConvSplit AS ( + SELECT + date, + ad_id, + {% for custom_conversion in custom_conversions %} + {% for conversion_alias, conversion_name in custom_conversion.items() %} + SUM(IF(conversion_name IN ('{{conversion_name}}'), all_conversions, 0)) AS conversions_{{conversion_alias}}, + {% endfor %} + {% endfor %} + FROM `{bq_dataset}.conversion_split` AS AP + GROUP BY 1,2 + ) SELECT PARSE_DATE("%Y-%m-%d", AP.date) AS day, M.account_id, @@ -31,9 +43,17 @@ SELECT SUM(AP.conversions) AS conversions, SUM(AP.video_views) AS video_views, SUM(AP.view_through_conversions) AS view_through_conversions, + {% for custom_conversion in custom_conversions %} + {% for conversion_alias, conversion_name in custom_conversion.items() %} + SUM(COALESCE(CCS.conversions_{{conversion_alias}}, 0)) AS conversions_{{conversion_alias}}, + {% endfor %} + {% endfor %} SUM(AP.engagements) AS engagements, ROUND(SUM(AP.cost) / 1e6) AS cost FROM `{bq_dataset}.ad_performance` AS AP INNER JOIN `{bq_dataset}.mapping` AS M ON AP.ad_group_id = M.ad_group_id +LEFT JOIN CustomConvSplit AS CCS + ON AP.ad_id = CCS.ad_id + AND AP.date = CCS.date GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);