backfill/2024-04-29-fxa_events/backend/convert_backend.sql (64 lines of code) (raw):

SELECT additional_properties, client_info, document_id, ARRAY( SELECT AS STRUCT CASE WHEN metrics.string.event_name LIKE 'access\\_token\\_%' THEN 'access_token' WHEN metrics.string.event_name LIKE 'account%' THEN 'account' WHEN metrics.string.event_name LIKE 'login%' THEN 'login' WHEN metrics.string.event_name LIKE 'password\\_reset\\_%' THEN 'password_reset' WHEN metrics.string.event_name LIKE 'reg%' THEN 'reg' ELSE ERROR('unknown event') END AS category, ARRAY( SELECT AS STRUCT CASE metrics.string.event_reason WHEN NULL THEN NULL ELSE 'reason' END AS KEY, CASE metrics.string.event_reason WHEN NULL THEN NULL ELSE metrics.string.event_reason END AS value ) AS extra, CASE WHEN metrics.string.event_name LIKE 'access\\_token\\_%' THEN REGEXP_EXTRACT(metrics.string.event_name, r'access_token_(.*)') WHEN metrics.string.event_name LIKE 'account%' THEN REGEXP_EXTRACT(metrics.string.event_name, r'account_(.*)') WHEN metrics.string.event_name LIKE 'login%' THEN REGEXP_EXTRACT(metrics.string.event_name, r'login_(.*)') WHEN metrics.string.event_name LIKE 'password\\_reset\\_%' THEN REGEXP_EXTRACT(metrics.string.event_name, r'password_reset_(.*)') WHEN metrics.string.event_name LIKE 'reg%' THEN REGEXP_EXTRACT(metrics.string.event_name, r'reg_(.*)') ELSE ERROR('unknown event') END AS name, UNIX_MILLIS(TIMESTAMP(ping_info.end_time)) AS timestamp ) AS events, metadata, ( SELECT AS STRUCT ( SELECT AS STRUCT metrics.string.* EXCEPT (event_name, event_reason)) AS string, metrics.* EXCEPT (string)) AS metrics, normalized_app_name, normalized_channel, normalized_country_code, normalized_os, normalized_os_version, ping_info, sample_id, submission_timestamp FROM `moz-fx-data-shared-prod.accounts_backend_stable.accounts_events_v1` WHERE DATE(submission_timestamp) = @submission_date