mozilla / bigquery-etl

Bigquery ETL
https://mozilla.github.io/bigquery-etl
Mozilla Public License 2.0
253 stars 100 forks source link

Add topic selection fields to newtab_visits #6004

Closed m-d-bowerman closed 1 month ago

m-d-bowerman commented 2 months ago

Checklist for reviewer:

For modifications to schemas in restricted namespaces (see CODEOWNERS):

┆Issue is synchronized with this Jira Task

dataops-ci-bot commented 2 months ago

Integration report for "Add topic selection fields to newtab_visits"

sql.diff

Click to expand! ```diff diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_org/www_site_downloads/view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_org/www_site_downloads/view.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_org/www_site_downloads/view.sql 2024-08-01 20:47:19.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_org/www_site_downloads/view.sql 2024-08-01 20:47:26.000000000 +0000 @@ -5,5 +5,3 @@ * FROM `moz-fx-data-shared-prod.mozilla_org_derived.www_site_downloads_v2` -WHERE - `date` >= '2023-10-01' --filter out data earlier since downloads not fully set up before this date diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-01 20:47:19.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-01 20:47:26.000000000 +0000 @@ -54,7 +54,8 @@ IF(event_name = "opened", mozfun.map.get_key(event_details, "source"), NULL) ) AS newtab_open_source, LOGICAL_OR(event_name IN ("click", "issued", "save")) AS had_non_impression_engagement, - LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement + LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement, + ANY_VALUE(metrics.string_list.newtab_selected_topics) AS newtab_selected_topics, FROM events_unnested GROUP BY @@ -240,16 +241,43 @@ event_name = 'save' AND mozfun.map.get_key(event_details, "is_sponsored") != "true" ) AS organic_pocket_saves, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") = "true" + ) AS sponsored_pocket_dismissals, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") != "true" + ) AS organic_pocket_dismissals, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_up") = "true" + ) AS pocket_thumbs_up, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_down") = "true" + ) AS pocket_thumbs_down, + mozfun.map.get_key(event_details, "received_rank") AS pocket_received_rank, + mozfun.map.get_key( + event_details, + "scheduled_corpus_item_id" + ) AS pocket_scheduled_corpus_item_id, + mozfun.map.get_key(event_details, "topic") AS pocket_topic, + mozfun.map.get_key(event_details, "matches_selected_topic") AS pocket_matches_selected_topic, FROM events_unnested WHERE event_category = 'pocket' - AND event_name IN ('impression', 'click', 'save') + AND event_name IN ('impression', 'click', 'save', 'dismiss') GROUP BY newtab_visit_id, pocket_story_position, pocket_tile_id, - pocket_recommendation_id + pocket_recommendation_id, + pocket_received_rank, + pocket_scheduled_corpus_item_id, + pocket_topic, + pocket_matches_selected_topic ), pocket_summary AS ( SELECT @@ -371,6 +399,53 @@ GROUP BY newtab_visit_id ), +topic_selection_events AS ( + SELECT + mozfun.map.get_key(event_details, "newtab_visit_id") AS newtab_visit_id, + mozfun.map.get_key(event_details, "previous_topics") AS previous_topics, + mozfun.map.get_key(event_details, "topics") AS topics, + COUNTIF(event_name = 'topic_selection_open') AS topic_selection_open, + COUNTIF(event_name = 'topic_selection_dismiss') AS topic_selection_dismiss, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") = "true" + ) AS topic_selection_topics_first_saved, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") != "true" + ) AS topic_selection_topics_updated, + FROM + events_unnested + WHERE + event_category = 'newtab' + AND event_name IN ( + 'topic_selection_dismiss', + 'topic_selection_open', + 'topic_selection_topics_saved' + ) + GROUP BY + newtab_visit_id, + previous_topics, + topics +), +topic_selection_summary AS ( + SELECT + newtab_visit_id, + ARRAY_AGG( + STRUCT( + previous_topics, + topics, + topic_selection_open, + topic_selection_dismiss, + topic_selection_topics_first_saved, + topic_selection_topics_updated + ) + ) AS topic_selection_interactions + FROM + topic_selection_events + GROUP BY + newtab_visit_id +), combined_newtab_activity AS ( SELECT * @@ -391,6 +466,9 @@ LEFT JOIN weather_summary USING (newtab_visit_id) + LEFT JOIN + topic_selection_summary + USING (newtab_visit_id) WHERE -- Keep only rows with interactions, unless we receive a valid newtab.opened event. -- This is meant to drop only interactions that only have a newtab.closed event on the same partition @@ -401,6 +479,7 @@ OR pocket_interactions IS NOT NULL OR wallpaper_interactions IS NOT NULL OR weather_interactions IS NOT NULL + OR topic_selection_interactions IS NOT NULL ), client_profile_info AS ( SELECT diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-01 20:47:19.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-01 20:47:26.000000000 +0000 @@ -107,6 +107,9 @@ - mode: NULLABLE name: had_non_search_engagement type: BOOLEAN +- mode: REPEATED + name: newtab_selected_topics + type: STRING - fields: - mode: NULLABLE name: search_engine @@ -221,6 +224,30 @@ - name: pocket_recommendation_id type: STRING mode: NULLABLE + - mode: NULLABLE + name: sponsored_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: organic_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_up + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_down + type: INTEGER + - mode: NULLABLE + name: pocket_received_rank + type: INTEGER + - name: pocket_scheduled_corpus_item_id + type: STRING + mode: NULLABLE + - name: pocket_topic + type: STRING + mode: NULLABLE + - name: pocket_matches_selected_topic + type: STRING + mode: NULLABLE mode: REPEATED name: pocket_interactions type: RECORD @@ -283,3 +310,28 @@ - name: weather_widget_change_display_to_simple type: INTEGER mode: NULLABLE +- name: newtab_selected_topics + type: STRING + mode: REPEATED +- name: topic_selection_interactions + type: RECORD + mode: REPEATED + fields: + - name: previous_topics + type: STRING + mode: NULLABLE + - name: topics + type: STRING + mode: NULLABLE + - name: topic_selection_open + type: INTEGER + mode: NULLABLE + - name: topic_selection_dismiss + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_first_saved + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_updated + type: INTEGER + mode: NULLABLE ```

Link to full diff

dataops-ci-bot commented 2 months ago

Integration report for "Remove duplicate from schema"

sql.diff

Click to expand! ```diff diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_org/www_site_downloads/view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_org/www_site_downloads/view.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_org/www_site_downloads/view.sql 2024-08-01 20:59:13.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_org/www_site_downloads/view.sql 2024-08-01 20:59:27.000000000 +0000 @@ -5,5 +5,3 @@ * FROM `moz-fx-data-shared-prod.mozilla_org_derived.www_site_downloads_v2` -WHERE - `date` >= '2023-10-01' --filter out data earlier since downloads not fully set up before this date diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-01 20:59:13.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-01 20:59:27.000000000 +0000 @@ -54,7 +54,8 @@ IF(event_name = "opened", mozfun.map.get_key(event_details, "source"), NULL) ) AS newtab_open_source, LOGICAL_OR(event_name IN ("click", "issued", "save")) AS had_non_impression_engagement, - LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement + LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement, + ANY_VALUE(metrics.string_list.newtab_selected_topics) AS newtab_selected_topics, FROM events_unnested GROUP BY @@ -240,16 +241,43 @@ event_name = 'save' AND mozfun.map.get_key(event_details, "is_sponsored") != "true" ) AS organic_pocket_saves, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") = "true" + ) AS sponsored_pocket_dismissals, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") != "true" + ) AS organic_pocket_dismissals, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_up") = "true" + ) AS pocket_thumbs_up, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_down") = "true" + ) AS pocket_thumbs_down, + mozfun.map.get_key(event_details, "received_rank") AS pocket_received_rank, + mozfun.map.get_key( + event_details, + "scheduled_corpus_item_id" + ) AS pocket_scheduled_corpus_item_id, + mozfun.map.get_key(event_details, "topic") AS pocket_topic, + mozfun.map.get_key(event_details, "matches_selected_topic") AS pocket_matches_selected_topic, FROM events_unnested WHERE event_category = 'pocket' - AND event_name IN ('impression', 'click', 'save') + AND event_name IN ('impression', 'click', 'save', 'dismiss') GROUP BY newtab_visit_id, pocket_story_position, pocket_tile_id, - pocket_recommendation_id + pocket_recommendation_id, + pocket_received_rank, + pocket_scheduled_corpus_item_id, + pocket_topic, + pocket_matches_selected_topic ), pocket_summary AS ( SELECT @@ -371,6 +399,53 @@ GROUP BY newtab_visit_id ), +topic_selection_events AS ( + SELECT + mozfun.map.get_key(event_details, "newtab_visit_id") AS newtab_visit_id, + mozfun.map.get_key(event_details, "previous_topics") AS previous_topics, + mozfun.map.get_key(event_details, "topics") AS topics, + COUNTIF(event_name = 'topic_selection_open') AS topic_selection_open, + COUNTIF(event_name = 'topic_selection_dismiss') AS topic_selection_dismiss, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") = "true" + ) AS topic_selection_topics_first_saved, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") != "true" + ) AS topic_selection_topics_updated, + FROM + events_unnested + WHERE + event_category = 'newtab' + AND event_name IN ( + 'topic_selection_dismiss', + 'topic_selection_open', + 'topic_selection_topics_saved' + ) + GROUP BY + newtab_visit_id, + previous_topics, + topics +), +topic_selection_summary AS ( + SELECT + newtab_visit_id, + ARRAY_AGG( + STRUCT( + previous_topics, + topics, + topic_selection_open, + topic_selection_dismiss, + topic_selection_topics_first_saved, + topic_selection_topics_updated + ) + ) AS topic_selection_interactions + FROM + topic_selection_events + GROUP BY + newtab_visit_id +), combined_newtab_activity AS ( SELECT * @@ -391,6 +466,9 @@ LEFT JOIN weather_summary USING (newtab_visit_id) + LEFT JOIN + topic_selection_summary + USING (newtab_visit_id) WHERE -- Keep only rows with interactions, unless we receive a valid newtab.opened event. -- This is meant to drop only interactions that only have a newtab.closed event on the same partition @@ -401,6 +479,7 @@ OR pocket_interactions IS NOT NULL OR wallpaper_interactions IS NOT NULL OR weather_interactions IS NOT NULL + OR topic_selection_interactions IS NOT NULL ), client_profile_info AS ( SELECT diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-01 20:59:13.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-01 20:59:27.000000000 +0000 @@ -221,6 +221,30 @@ - name: pocket_recommendation_id type: STRING mode: NULLABLE + - mode: NULLABLE + name: sponsored_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: organic_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_up + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_down + type: INTEGER + - mode: NULLABLE + name: pocket_received_rank + type: INTEGER + - name: pocket_scheduled_corpus_item_id + type: STRING + mode: NULLABLE + - name: pocket_topic + type: STRING + mode: NULLABLE + - name: pocket_matches_selected_topic + type: STRING + mode: NULLABLE mode: REPEATED name: pocket_interactions type: RECORD @@ -283,3 +307,28 @@ - name: weather_widget_change_display_to_simple type: INTEGER mode: NULLABLE +- name: newtab_selected_topics + type: STRING + mode: REPEATED +- name: topic_selection_interactions + type: RECORD + mode: REPEATED + fields: + - name: previous_topics + type: STRING + mode: NULLABLE + - name: topics + type: STRING + mode: NULLABLE + - name: topic_selection_open + type: INTEGER + mode: NULLABLE + - name: topic_selection_dismiss + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_first_saved + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_updated + type: INTEGER + mode: NULLABLE ```

Link to full diff

dataops-ci-bot commented 2 months ago

Integration report for "Add new metric to test schema"

sql.diff

Click to expand! ```diff diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-02 18:06:12.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-02 18:06:19.000000000 +0000 @@ -54,7 +54,8 @@ IF(event_name = "opened", mozfun.map.get_key(event_details, "source"), NULL) ) AS newtab_open_source, LOGICAL_OR(event_name IN ("click", "issued", "save")) AS had_non_impression_engagement, - LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement + LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement, + ANY_VALUE(metrics.string_list.newtab_selected_topics) AS newtab_selected_topics, FROM events_unnested GROUP BY @@ -240,16 +241,43 @@ event_name = 'save' AND mozfun.map.get_key(event_details, "is_sponsored") != "true" ) AS organic_pocket_saves, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") = "true" + ) AS sponsored_pocket_dismissals, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") != "true" + ) AS organic_pocket_dismissals, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_up") = "true" + ) AS pocket_thumbs_up, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_down") = "true" + ) AS pocket_thumbs_down, + mozfun.map.get_key(event_details, "received_rank") AS pocket_received_rank, + mozfun.map.get_key( + event_details, + "scheduled_corpus_item_id" + ) AS pocket_scheduled_corpus_item_id, + mozfun.map.get_key(event_details, "topic") AS pocket_topic, + mozfun.map.get_key(event_details, "matches_selected_topic") AS pocket_matches_selected_topic, FROM events_unnested WHERE event_category = 'pocket' - AND event_name IN ('impression', 'click', 'save') + AND event_name IN ('impression', 'click', 'save', 'dismiss') GROUP BY newtab_visit_id, pocket_story_position, pocket_tile_id, - pocket_recommendation_id + pocket_recommendation_id, + pocket_received_rank, + pocket_scheduled_corpus_item_id, + pocket_topic, + pocket_matches_selected_topic ), pocket_summary AS ( SELECT @@ -371,6 +399,53 @@ GROUP BY newtab_visit_id ), +topic_selection_events AS ( + SELECT + mozfun.map.get_key(event_details, "newtab_visit_id") AS newtab_visit_id, + mozfun.map.get_key(event_details, "previous_topics") AS previous_topics, + mozfun.map.get_key(event_details, "topics") AS topics, + COUNTIF(event_name = 'topic_selection_open') AS topic_selection_open, + COUNTIF(event_name = 'topic_selection_dismiss') AS topic_selection_dismiss, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") = "true" + ) AS topic_selection_topics_first_saved, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") != "true" + ) AS topic_selection_topics_updated, + FROM + events_unnested + WHERE + event_category = 'newtab' + AND event_name IN ( + 'topic_selection_dismiss', + 'topic_selection_open', + 'topic_selection_topics_saved' + ) + GROUP BY + newtab_visit_id, + previous_topics, + topics +), +topic_selection_summary AS ( + SELECT + newtab_visit_id, + ARRAY_AGG( + STRUCT( + previous_topics, + topics, + topic_selection_open, + topic_selection_dismiss, + topic_selection_topics_first_saved, + topic_selection_topics_updated + ) + ) AS topic_selection_interactions + FROM + topic_selection_events + GROUP BY + newtab_visit_id +), combined_newtab_activity AS ( SELECT * @@ -391,6 +466,9 @@ LEFT JOIN weather_summary USING (newtab_visit_id) + LEFT JOIN + topic_selection_summary + USING (newtab_visit_id) WHERE -- Keep only rows with interactions, unless we receive a valid newtab.opened event. -- This is meant to drop only interactions that only have a newtab.closed event on the same partition @@ -401,6 +479,7 @@ OR pocket_interactions IS NOT NULL OR wallpaper_interactions IS NOT NULL OR weather_interactions IS NOT NULL + OR topic_selection_interactions IS NOT NULL ), client_profile_info AS ( SELECT diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-02 18:06:12.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-02 18:06:19.000000000 +0000 @@ -221,6 +221,30 @@ - name: pocket_recommendation_id type: STRING mode: NULLABLE + - mode: NULLABLE + name: sponsored_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: organic_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_up + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_down + type: INTEGER + - mode: NULLABLE + name: pocket_received_rank + type: INTEGER + - name: pocket_scheduled_corpus_item_id + type: STRING + mode: NULLABLE + - name: pocket_topic + type: STRING + mode: NULLABLE + - name: pocket_matches_selected_topic + type: STRING + mode: NULLABLE mode: REPEATED name: pocket_interactions type: RECORD @@ -283,3 +307,28 @@ - name: weather_widget_change_display_to_simple type: INTEGER mode: NULLABLE +- name: newtab_selected_topics + type: STRING + mode: REPEATED +- name: topic_selection_interactions + type: RECORD + mode: REPEATED + fields: + - name: previous_topics + type: STRING + mode: NULLABLE + - name: topics + type: STRING + mode: NULLABLE + - name: topic_selection_open + type: INTEGER + mode: NULLABLE + - name: topic_selection_dismiss + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_first_saved + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_updated + type: INTEGER + mode: NULLABLE ```

Link to full diff

dataops-ci-bot commented 2 months ago

Integration report for "Fix event name in test yaml"

sql.diff

Click to expand! ```diff diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-02 18:43:56.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-02 18:43:56.000000000 +0000 @@ -54,7 +54,8 @@ IF(event_name = "opened", mozfun.map.get_key(event_details, "source"), NULL) ) AS newtab_open_source, LOGICAL_OR(event_name IN ("click", "issued", "save")) AS had_non_impression_engagement, - LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement + LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement, + ANY_VALUE(metrics.string_list.newtab_selected_topics) AS newtab_selected_topics, FROM events_unnested GROUP BY @@ -240,16 +241,43 @@ event_name = 'save' AND mozfun.map.get_key(event_details, "is_sponsored") != "true" ) AS organic_pocket_saves, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") = "true" + ) AS sponsored_pocket_dismissals, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") != "true" + ) AS organic_pocket_dismissals, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_up") = "true" + ) AS pocket_thumbs_up, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_down") = "true" + ) AS pocket_thumbs_down, + mozfun.map.get_key(event_details, "received_rank") AS pocket_received_rank, + mozfun.map.get_key( + event_details, + "scheduled_corpus_item_id" + ) AS pocket_scheduled_corpus_item_id, + mozfun.map.get_key(event_details, "topic") AS pocket_topic, + mozfun.map.get_key(event_details, "matches_selected_topic") AS pocket_matches_selected_topic, FROM events_unnested WHERE event_category = 'pocket' - AND event_name IN ('impression', 'click', 'save') + AND event_name IN ('impression', 'click', 'save', 'dismiss') GROUP BY newtab_visit_id, pocket_story_position, pocket_tile_id, - pocket_recommendation_id + pocket_recommendation_id, + pocket_received_rank, + pocket_scheduled_corpus_item_id, + pocket_topic, + pocket_matches_selected_topic ), pocket_summary AS ( SELECT @@ -371,6 +399,53 @@ GROUP BY newtab_visit_id ), +topic_selection_events AS ( + SELECT + mozfun.map.get_key(event_details, "newtab_visit_id") AS newtab_visit_id, + mozfun.map.get_key(event_details, "previous_topics") AS previous_topics, + mozfun.map.get_key(event_details, "topics") AS topics, + COUNTIF(event_name = 'topic_selection_open') AS topic_selection_open, + COUNTIF(event_name = 'topic_selection_dismiss') AS topic_selection_dismiss, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") = "true" + ) AS topic_selection_topics_first_saved, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") != "true" + ) AS topic_selection_topics_updated, + FROM + events_unnested + WHERE + event_category = 'newtab' + AND event_name IN ( + 'topic_selection_dismiss', + 'topic_selection_open', + 'topic_selection_topics_saved' + ) + GROUP BY + newtab_visit_id, + previous_topics, + topics +), +topic_selection_summary AS ( + SELECT + newtab_visit_id, + ARRAY_AGG( + STRUCT( + previous_topics, + topics, + topic_selection_open, + topic_selection_dismiss, + topic_selection_topics_first_saved, + topic_selection_topics_updated + ) + ) AS topic_selection_interactions + FROM + topic_selection_events + GROUP BY + newtab_visit_id +), combined_newtab_activity AS ( SELECT * @@ -391,6 +466,9 @@ LEFT JOIN weather_summary USING (newtab_visit_id) + LEFT JOIN + topic_selection_summary + USING (newtab_visit_id) WHERE -- Keep only rows with interactions, unless we receive a valid newtab.opened event. -- This is meant to drop only interactions that only have a newtab.closed event on the same partition @@ -401,6 +479,7 @@ OR pocket_interactions IS NOT NULL OR wallpaper_interactions IS NOT NULL OR weather_interactions IS NOT NULL + OR topic_selection_interactions IS NOT NULL ), client_profile_info AS ( SELECT diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-02 18:43:56.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-02 18:43:56.000000000 +0000 @@ -221,6 +221,30 @@ - name: pocket_recommendation_id type: STRING mode: NULLABLE + - mode: NULLABLE + name: sponsored_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: organic_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_up + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_down + type: INTEGER + - mode: NULLABLE + name: pocket_received_rank + type: INTEGER + - name: pocket_scheduled_corpus_item_id + type: STRING + mode: NULLABLE + - name: pocket_topic + type: STRING + mode: NULLABLE + - name: pocket_matches_selected_topic + type: STRING + mode: NULLABLE mode: REPEATED name: pocket_interactions type: RECORD @@ -283,3 +307,28 @@ - name: weather_widget_change_display_to_simple type: INTEGER mode: NULLABLE +- name: newtab_selected_topics + type: STRING + mode: REPEATED +- name: topic_selection_interactions + type: RECORD + mode: REPEATED + fields: + - name: previous_topics + type: STRING + mode: NULLABLE + - name: topics + type: STRING + mode: NULLABLE + - name: topic_selection_open + type: INTEGER + mode: NULLABLE + - name: topic_selection_dismiss + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_first_saved + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_updated + type: INTEGER + mode: NULLABLE ```

Link to full diff

dataops-ci-bot commented 2 months ago

Integration report for "Test yaml fix"

sql.diff

Click to expand! ```diff diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-02 19:26:09.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-02 19:26:11.000000000 +0000 @@ -54,7 +54,8 @@ IF(event_name = "opened", mozfun.map.get_key(event_details, "source"), NULL) ) AS newtab_open_source, LOGICAL_OR(event_name IN ("click", "issued", "save")) AS had_non_impression_engagement, - LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement + LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement, + ANY_VALUE(metrics.string_list.newtab_selected_topics) AS newtab_selected_topics, FROM events_unnested GROUP BY @@ -240,16 +241,43 @@ event_name = 'save' AND mozfun.map.get_key(event_details, "is_sponsored") != "true" ) AS organic_pocket_saves, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") = "true" + ) AS sponsored_pocket_dismissals, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") != "true" + ) AS organic_pocket_dismissals, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_up") = "true" + ) AS pocket_thumbs_up, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_down") = "true" + ) AS pocket_thumbs_down, + mozfun.map.get_key(event_details, "received_rank") AS pocket_received_rank, + mozfun.map.get_key( + event_details, + "scheduled_corpus_item_id" + ) AS pocket_scheduled_corpus_item_id, + mozfun.map.get_key(event_details, "topic") AS pocket_topic, + mozfun.map.get_key(event_details, "matches_selected_topic") AS pocket_matches_selected_topic, FROM events_unnested WHERE event_category = 'pocket' - AND event_name IN ('impression', 'click', 'save') + AND event_name IN ('impression', 'click', 'save', 'dismiss') GROUP BY newtab_visit_id, pocket_story_position, pocket_tile_id, - pocket_recommendation_id + pocket_recommendation_id, + pocket_received_rank, + pocket_scheduled_corpus_item_id, + pocket_topic, + pocket_matches_selected_topic ), pocket_summary AS ( SELECT @@ -371,6 +399,53 @@ GROUP BY newtab_visit_id ), +topic_selection_events AS ( + SELECT + mozfun.map.get_key(event_details, "newtab_visit_id") AS newtab_visit_id, + mozfun.map.get_key(event_details, "previous_topics") AS previous_topics, + mozfun.map.get_key(event_details, "topics") AS topics, + COUNTIF(event_name = 'topic_selection_open') AS topic_selection_open, + COUNTIF(event_name = 'topic_selection_dismiss') AS topic_selection_dismiss, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") = "true" + ) AS topic_selection_topics_first_saved, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") != "true" + ) AS topic_selection_topics_updated, + FROM + events_unnested + WHERE + event_category = 'newtab' + AND event_name IN ( + 'topic_selection_dismiss', + 'topic_selection_open', + 'topic_selection_topics_saved' + ) + GROUP BY + newtab_visit_id, + previous_topics, + topics +), +topic_selection_summary AS ( + SELECT + newtab_visit_id, + ARRAY_AGG( + STRUCT( + previous_topics, + topics, + topic_selection_open, + topic_selection_dismiss, + topic_selection_topics_first_saved, + topic_selection_topics_updated + ) + ) AS topic_selection_interactions + FROM + topic_selection_events + GROUP BY + newtab_visit_id +), combined_newtab_activity AS ( SELECT * @@ -391,6 +466,9 @@ LEFT JOIN weather_summary USING (newtab_visit_id) + LEFT JOIN + topic_selection_summary + USING (newtab_visit_id) WHERE -- Keep only rows with interactions, unless we receive a valid newtab.opened event. -- This is meant to drop only interactions that only have a newtab.closed event on the same partition @@ -401,6 +479,7 @@ OR pocket_interactions IS NOT NULL OR wallpaper_interactions IS NOT NULL OR weather_interactions IS NOT NULL + OR topic_selection_interactions IS NOT NULL ), client_profile_info AS ( SELECT diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-02 19:26:09.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-02 19:26:11.000000000 +0000 @@ -221,6 +221,30 @@ - name: pocket_recommendation_id type: STRING mode: NULLABLE + - mode: NULLABLE + name: sponsored_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: organic_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_up + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_down + type: INTEGER + - mode: NULLABLE + name: pocket_received_rank + type: INTEGER + - name: pocket_scheduled_corpus_item_id + type: STRING + mode: NULLABLE + - name: pocket_topic + type: STRING + mode: NULLABLE + - name: pocket_matches_selected_topic + type: STRING + mode: NULLABLE mode: REPEATED name: pocket_interactions type: RECORD @@ -283,3 +307,28 @@ - name: weather_widget_change_display_to_simple type: INTEGER mode: NULLABLE +- name: newtab_selected_topics + type: STRING + mode: REPEATED +- name: topic_selection_interactions + type: RECORD + mode: REPEATED + fields: + - name: previous_topics + type: STRING + mode: NULLABLE + - name: topics + type: STRING + mode: NULLABLE + - name: topic_selection_open + type: INTEGER + mode: NULLABLE + - name: topic_selection_dismiss + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_first_saved + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_updated + type: INTEGER + mode: NULLABLE ```

Link to full diff

dataops-ci-bot commented 2 months ago

Integration report for "Add visit id to test case"

sql.diff

Click to expand! ```diff diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/dags/bqetl_cloudflare_browser_market_share.py /tmp/workspace/generated-sql/dags/bqetl_cloudflare_browser_market_share.py --- /tmp/workspace/main-generated-sql/dags/bqetl_cloudflare_browser_market_share.py 2024-08-02 20:08:31.000000000 +0000 +++ /tmp/workspace/generated-sql/dags/bqetl_cloudflare_browser_market_share.py 2024-08-02 20:10:06.000000000 +0000 @@ -51,25 +51,6 @@ tags=tags, ) as dag: - checks__warn_cloudflare_derived__browser_usage__v1 = bigquery_dq_check( - task_id="checks__warn_cloudflare_derived__browser_usage__v1", - source_table="browser_usage_v1", - dataset_id="cloudflare_derived", - project_id="moz-fx-data-shared-prod", - is_dq_check_fail=False, - owner="kwindau@mozilla.com", - email=["kwindau@mozilla.com"], - depends_on_past=False, - arguments=[ - "--date", - "{{ds}}", - "--cloudflare_api_token", - "{{ var.value.cloudflare_auth_token}}", - ], - parameters=["dte:DATE:{{ds}}"], - retries=0, - ) - cloudflare_derived__browser_usage__v1 = GKEPodOperator( task_id="cloudflare_derived__browser_usage__v1", arguments=[ @@ -86,7 +67,3 @@ owner="kwindau@mozilla.com", email=["kwindau@mozilla.com"], ) - - checks__warn_cloudflare_derived__browser_usage__v1.set_upstream( - cloudflare_derived__browser_usage__v1 - ) diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/dags/bqetl_cloudflare_device_market_share.py /tmp/workspace/generated-sql/dags/bqetl_cloudflare_device_market_share.py --- /tmp/workspace/main-generated-sql/dags/bqetl_cloudflare_device_market_share.py 2024-08-02 20:08:31.000000000 +0000 +++ /tmp/workspace/generated-sql/dags/bqetl_cloudflare_device_market_share.py 2024-08-02 20:10:07.000000000 +0000 @@ -51,25 +51,6 @@ tags=tags, ) as dag: - checks__warn_cloudflare_derived__device_usage__v1 = bigquery_dq_check( - task_id="checks__warn_cloudflare_derived__device_usage__v1", - source_table="device_usage_v1", - dataset_id="cloudflare_derived", - project_id="moz-fx-data-shared-prod", - is_dq_check_fail=False, - owner="kwindau@mozilla.com", - email=["kwindau@mozilla.com"], - depends_on_past=False, - arguments=[ - "--date", - "{{ds}}", - "--cloudflare_api_token", - "{{ var.value.cloudflare_auth_token}}", - ], - parameters=["dte:DATE:{{ds}}"], - retries=0, - ) - cloudflare_derived__device_usage__v1 = GKEPodOperator( task_id="cloudflare_derived__device_usage__v1", arguments=[ @@ -86,7 +67,3 @@ owner="kwindau@mozilla.com", email=["kwindau@mozilla.com"], ) - - checks__warn_cloudflare_derived__device_usage__v1.set_upstream( - cloudflare_derived__device_usage__v1 - ) diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/dags/bqetl_cloudflare_os_market_share.py /tmp/workspace/generated-sql/dags/bqetl_cloudflare_os_market_share.py --- /tmp/workspace/main-generated-sql/dags/bqetl_cloudflare_os_market_share.py 2024-08-02 20:08:31.000000000 +0000 +++ /tmp/workspace/generated-sql/dags/bqetl_cloudflare_os_market_share.py 2024-08-02 20:10:06.000000000 +0000 @@ -51,25 +51,6 @@ tags=tags, ) as dag: - checks__warn_cloudflare_derived__os_usage__v1 = bigquery_dq_check( - task_id="checks__warn_cloudflare_derived__os_usage__v1", - source_table="os_usage_v1", - dataset_id="cloudflare_derived", - project_id="moz-fx-data-shared-prod", - is_dq_check_fail=False, - owner="kwindau@mozilla.com", - email=["kwindau@mozilla.com"], - depends_on_past=False, - arguments=[ - "--date", - "{{ds}}", - "--cloudflare_api_token", - "{{ var.value.cloudflare_auth_token}}", - ], - parameters=["dte:DATE:{{ds}}"], - retries=0, - ) - cloudflare_derived__os_usage__v1 = GKEPodOperator( task_id="cloudflare_derived__os_usage__v1", arguments=[ @@ -86,7 +67,3 @@ owner="kwindau@mozilla.com", email=["kwindau@mozilla.com"], ) - - checks__warn_cloudflare_derived__os_usage__v1.set_upstream( - cloudflare_derived__os_usage__v1 - ) Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_errors_v1: checks.sql Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_v1: checks.sql Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_errors_v1: checks.sql Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_v1: checks.sql Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_errors_v1: checks.sql Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_v1: checks.sql diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_errors_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_errors_v1/checks.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_errors_v1/checks.sql 2024-08-02 20:02:43.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_errors_v1/checks.sql 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#warn -{{ is_unique(["dte", "location", "user_type", "device_type", "operating_system"]) }} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_errors_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_errors_v1/metadata.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_errors_v1/metadata.yaml 2024-08-02 20:04:29.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_errors_v1/metadata.yaml 2024-08-02 20:04:53.000000000 +0000 @@ -22,6 +22,4 @@ - role: roles/bigquery.dataViewer members: - workgroup:mozilla-confidential -references: - checks.sql: - - .. +references: {} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_v1/checks.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_v1/checks.sql 2024-08-02 20:02:43.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_v1/checks.sql 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#warn -{{ is_unique(["dte", "device_type", "user_type", "location", "browser", "operating_system"]) }} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_v1/metadata.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_v1/metadata.yaml 2024-08-02 20:04:29.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/browser_usage_v1/metadata.yaml 2024-08-02 20:04:53.000000000 +0000 @@ -30,6 +30,4 @@ - role: roles/bigquery.dataViewer members: - workgroup:mozilla-confidential -references: - checks.sql: - - .. +references: {} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_errors_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_errors_v1/checks.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_errors_v1/checks.sql 2024-08-02 20:02:43.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_errors_v1/checks.sql 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#warn -{{ is_unique(["dte", "location"]) }} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_errors_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_errors_v1/metadata.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_errors_v1/metadata.yaml 2024-08-02 20:04:29.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_errors_v1/metadata.yaml 2024-08-02 20:04:53.000000000 +0000 @@ -19,6 +19,4 @@ - role: roles/bigquery.dataViewer members: - workgroup:mozilla-confidential -references: - checks.sql: - - .. +references: {} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_v1/checks.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_v1/checks.sql 2024-08-02 20:02:43.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_v1/checks.sql 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#warn -{{ is_unique(["dte", "location", "user_type"]) }} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_v1/metadata.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_v1/metadata.yaml 2024-08-02 20:04:29.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/device_usage_v1/metadata.yaml 2024-08-02 20:04:53.000000000 +0000 @@ -29,6 +29,4 @@ - role: roles/bigquery.dataViewer members: - workgroup:mozilla-confidential -references: - checks.sql: - - .. +references: {} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_errors_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_errors_v1/checks.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_errors_v1/checks.sql 2024-08-02 20:02:43.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_errors_v1/checks.sql 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#warn -{{ is_unique(["dte", "location", "device_type"]) }} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_errors_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_errors_v1/metadata.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_errors_v1/metadata.yaml 2024-08-02 20:04:29.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_errors_v1/metadata.yaml 2024-08-02 20:04:53.000000000 +0000 @@ -21,6 +21,4 @@ - role: roles/bigquery.dataViewer members: - workgroup:mozilla-confidential -references: - checks.sql: - - .. +references: {} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_v1/checks.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_v1/checks.sql 2024-08-02 20:02:43.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_v1/checks.sql 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#warn -{{ is_unique(["dte", "os", "location", "device_type"]) }} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_v1/metadata.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_v1/metadata.yaml 2024-08-02 20:04:29.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/cloudflare_derived/os_usage_v1/metadata.yaml 2024-08-02 20:04:53.000000000 +0000 @@ -30,6 +30,4 @@ - role: roles/bigquery.dataViewer members: - workgroup:mozilla-confidential -references: - checks.sql: - - .. +references: {} diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-02 20:02:43.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-02 20:02:45.000000000 +0000 @@ -54,7 +54,8 @@ IF(event_name = "opened", mozfun.map.get_key(event_details, "source"), NULL) ) AS newtab_open_source, LOGICAL_OR(event_name IN ("click", "issued", "save")) AS had_non_impression_engagement, - LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement + LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement, + ANY_VALUE(metrics.string_list.newtab_selected_topics) AS newtab_selected_topics, FROM events_unnested GROUP BY @@ -240,16 +241,43 @@ event_name = 'save' AND mozfun.map.get_key(event_details, "is_sponsored") != "true" ) AS organic_pocket_saves, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") = "true" + ) AS sponsored_pocket_dismissals, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") != "true" + ) AS organic_pocket_dismissals, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_up") = "true" + ) AS pocket_thumbs_up, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_down") = "true" + ) AS pocket_thumbs_down, + mozfun.map.get_key(event_details, "received_rank") AS pocket_received_rank, + mozfun.map.get_key( + event_details, + "scheduled_corpus_item_id" + ) AS pocket_scheduled_corpus_item_id, + mozfun.map.get_key(event_details, "topic") AS pocket_topic, + mozfun.map.get_key(event_details, "matches_selected_topic") AS pocket_matches_selected_topic, FROM events_unnested WHERE event_category = 'pocket' - AND event_name IN ('impression', 'click', 'save') + AND event_name IN ('impression', 'click', 'save', 'dismiss') GROUP BY newtab_visit_id, pocket_story_position, pocket_tile_id, - pocket_recommendation_id + pocket_recommendation_id, + pocket_received_rank, + pocket_scheduled_corpus_item_id, + pocket_topic, + pocket_matches_selected_topic ), pocket_summary AS ( SELECT @@ -371,6 +399,53 @@ GROUP BY newtab_visit_id ), +topic_selection_events AS ( + SELECT + mozfun.map.get_key(event_details, "newtab_visit_id") AS newtab_visit_id, + mozfun.map.get_key(event_details, "previous_topics") AS previous_topics, + mozfun.map.get_key(event_details, "topics") AS topics, + COUNTIF(event_name = 'topic_selection_open') AS topic_selection_open, + COUNTIF(event_name = 'topic_selection_dismiss') AS topic_selection_dismiss, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") = "true" + ) AS topic_selection_topics_first_saved, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") != "true" + ) AS topic_selection_topics_updated, + FROM + events_unnested + WHERE + event_category = 'newtab' + AND event_name IN ( + 'topic_selection_dismiss', + 'topic_selection_open', + 'topic_selection_topics_saved' + ) + GROUP BY + newtab_visit_id, + previous_topics, + topics +), +topic_selection_summary AS ( + SELECT + newtab_visit_id, + ARRAY_AGG( + STRUCT( + previous_topics, + topics, + topic_selection_open, + topic_selection_dismiss, + topic_selection_topics_first_saved, + topic_selection_topics_updated + ) + ) AS topic_selection_interactions + FROM + topic_selection_events + GROUP BY + newtab_visit_id +), combined_newtab_activity AS ( SELECT * @@ -391,6 +466,9 @@ LEFT JOIN weather_summary USING (newtab_visit_id) + LEFT JOIN + topic_selection_summary + USING (newtab_visit_id) WHERE -- Keep only rows with interactions, unless we receive a valid newtab.opened event. -- This is meant to drop only interactions that only have a newtab.closed event on the same partition @@ -401,6 +479,7 @@ OR pocket_interactions IS NOT NULL OR wallpaper_interactions IS NOT NULL OR weather_interactions IS NOT NULL + OR topic_selection_interactions IS NOT NULL ), client_profile_info AS ( SELECT diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-02 20:02:43.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-02 20:02:45.000000000 +0000 @@ -221,6 +221,30 @@ - name: pocket_recommendation_id type: STRING mode: NULLABLE + - mode: NULLABLE + name: sponsored_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: organic_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_up + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_down + type: INTEGER + - mode: NULLABLE + name: pocket_received_rank + type: INTEGER + - name: pocket_scheduled_corpus_item_id + type: STRING + mode: NULLABLE + - name: pocket_topic + type: STRING + mode: NULLABLE + - name: pocket_matches_selected_topic + type: STRING + mode: NULLABLE mode: REPEATED name: pocket_interactions type: RECORD @@ -283,3 +307,28 @@ - name: weather_widget_change_display_to_simple type: INTEGER mode: NULLABLE +- name: newtab_selected_topics + type: STRING + mode: REPEATED +- name: topic_selection_interactions + type: RECORD + mode: REPEATED + fields: + - name: previous_topics + type: STRING + mode: NULLABLE + - name: topics + type: STRING + mode: NULLABLE + - name: topic_selection_open + type: INTEGER + mode: NULLABLE + - name: topic_selection_dismiss + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_first_saved + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_updated + type: INTEGER + mode: NULLABLE ```

Link to full diff

dataops-ci-bot commented 1 month ago

Integration report for "Merge branch 'main' into newtab_add_topics_content"

sql.diff

Click to expand! ```diff diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-15 16:06:50.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/query.sql 2024-08-15 16:06:38.000000000 +0000 @@ -54,7 +54,8 @@ IF(event_name = "opened", mozfun.map.get_key(event_details, "source"), NULL) ) AS newtab_open_source, LOGICAL_OR(event_name IN ("click", "issued", "save")) AS had_non_impression_engagement, - LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement + LOGICAL_OR(event_name IN ("click", "save")) AS had_non_search_engagement, + ANY_VALUE(metrics.string_list.newtab_selected_topics) AS newtab_selected_topics, FROM events_unnested GROUP BY @@ -240,16 +241,43 @@ event_name = 'save' AND mozfun.map.get_key(event_details, "is_sponsored") != "true" ) AS organic_pocket_saves, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") = "true" + ) AS sponsored_pocket_dismissals, + COUNTIF( + event_name = 'dismiss' + AND mozfun.map.get_key(event_details, "is_sponsored") != "true" + ) AS organic_pocket_dismissals, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_up") = "true" + ) AS pocket_thumbs_up, + COUNTIF( + event_name = 'thumb_voting_interaction' + AND mozfun.map.get_key(event_details, "thumbs_down") = "true" + ) AS pocket_thumbs_down, + mozfun.map.get_key(event_details, "received_rank") AS pocket_received_rank, + mozfun.map.get_key( + event_details, + "scheduled_corpus_item_id" + ) AS pocket_scheduled_corpus_item_id, + mozfun.map.get_key(event_details, "topic") AS pocket_topic, + mozfun.map.get_key(event_details, "matches_selected_topic") AS pocket_matches_selected_topic, FROM events_unnested WHERE event_category = 'pocket' - AND event_name IN ('impression', 'click', 'save') + AND event_name IN ('impression', 'click', 'save', 'dismiss') GROUP BY newtab_visit_id, pocket_story_position, pocket_tile_id, - pocket_recommendation_id + pocket_recommendation_id, + pocket_received_rank, + pocket_scheduled_corpus_item_id, + pocket_topic, + pocket_matches_selected_topic ), pocket_summary AS ( SELECT @@ -371,6 +399,53 @@ GROUP BY newtab_visit_id ), +topic_selection_events AS ( + SELECT + mozfun.map.get_key(event_details, "newtab_visit_id") AS newtab_visit_id, + mozfun.map.get_key(event_details, "previous_topics") AS previous_topics, + mozfun.map.get_key(event_details, "topics") AS topics, + COUNTIF(event_name = 'topic_selection_open') AS topic_selection_open, + COUNTIF(event_name = 'topic_selection_dismiss') AS topic_selection_dismiss, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") = "true" + ) AS topic_selection_topics_first_saved, + COUNTIF( + event_name = 'topic_selection_topics_saved' + AND mozfun.map.get_key(event_details, "first_save") != "true" + ) AS topic_selection_topics_updated, + FROM + events_unnested + WHERE + event_category = 'newtab' + AND event_name IN ( + 'topic_selection_dismiss', + 'topic_selection_open', + 'topic_selection_topics_saved' + ) + GROUP BY + newtab_visit_id, + previous_topics, + topics +), +topic_selection_summary AS ( + SELECT + newtab_visit_id, + ARRAY_AGG( + STRUCT( + previous_topics, + topics, + topic_selection_open, + topic_selection_dismiss, + topic_selection_topics_first_saved, + topic_selection_topics_updated + ) + ) AS topic_selection_interactions + FROM + topic_selection_events + GROUP BY + newtab_visit_id +), combined_newtab_activity AS ( SELECT * @@ -391,6 +466,9 @@ LEFT JOIN weather_summary USING (newtab_visit_id) + LEFT JOIN + topic_selection_summary + USING (newtab_visit_id) WHERE -- Keep only rows with interactions, unless we receive a valid newtab.opened event. -- This is meant to drop only interactions that only have a newtab.closed event on the same partition @@ -401,6 +479,7 @@ OR pocket_interactions IS NOT NULL OR wallpaper_interactions IS NOT NULL OR weather_interactions IS NOT NULL + OR topic_selection_interactions IS NOT NULL ), client_profile_info AS ( SELECT diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml --- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-15 16:06:50.000000000 +0000 +++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry_derived/newtab_visits_v1/schema.yaml 2024-08-15 16:06:38.000000000 +0000 @@ -221,6 +221,30 @@ - name: pocket_recommendation_id type: STRING mode: NULLABLE + - mode: NULLABLE + name: sponsored_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: organic_pocket_dismissals + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_up + type: INTEGER + - mode: NULLABLE + name: pocket_thumbs_down + type: INTEGER + - mode: NULLABLE + name: pocket_received_rank + type: INTEGER + - name: pocket_scheduled_corpus_item_id + type: STRING + mode: NULLABLE + - name: pocket_topic + type: STRING + mode: NULLABLE + - name: pocket_matches_selected_topic + type: STRING + mode: NULLABLE mode: REPEATED name: pocket_interactions type: RECORD @@ -283,3 +307,28 @@ - name: weather_widget_change_display_to_simple type: INTEGER mode: NULLABLE +- name: newtab_selected_topics + type: STRING + mode: REPEATED +- name: topic_selection_interactions + type: RECORD + mode: REPEATED + fields: + - name: previous_topics + type: STRING + mode: NULLABLE + - name: topics + type: STRING + mode: NULLABLE + - name: topic_selection_open + type: INTEGER + mode: NULLABLE + - name: topic_selection_dismiss + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_first_saved + type: INTEGER + mode: NULLABLE + - name: topic_selection_topics_updated + type: INTEGER + mode: NULLABLE ```

Link to full diff