|
8 | 8 | {% for events_table in event_tables_per_dataset[dataset['bq_dataset_family']] -%}
|
9 | 9 | base_{{ dataset['bq_dataset_family'] }}_{{ events_table }} AS (
|
10 | 10 | SELECT
|
11 |
| - submission_timestamp, |
| 11 | + @submission_date AS submission_date, |
| 12 | + TIMESTAMP_ADD( |
| 13 | + TIMESTAMP_TRUNC(submission_timestamp, HOUR), |
| 14 | + -- Aggregates event counts over 60-minute intervals |
| 15 | + INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE |
| 16 | + ) AS window_start, |
| 17 | + TIMESTAMP_ADD( |
| 18 | + TIMESTAMP_TRUNC(submission_timestamp, HOUR), |
| 19 | + INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE |
| 20 | + ) AS window_end, |
12 | 21 | event.category AS event_category,
|
13 | 22 | event.name AS event_name,
|
14 | 23 | event_extra.key AS event_extra_key,
|
15 | 24 | normalized_country_code AS country,
|
16 |
| - "{{ dataset['canonical_app_name'] }}" AS normalized_app_name, |
17 | 25 | client_info.app_channel AS channel,
|
18 | 26 | client_info.app_display_version AS version,
|
19 | 27 | -- experiments[ARRAY_LENGTH(experiments)] will be set to '*'
|
20 | 28 | COALESCE(ping_info.experiments[SAFE_OFFSET(experiment_index)].key, '*') AS experiment,
|
21 | 29 | COALESCE(ping_info.experiments[SAFE_OFFSET(experiment_index)].value.branch, '*') AS experiment_branch,
|
| 30 | + COUNT(*) AS total_events, |
22 | 31 | FROM
|
23 | 32 | `{{ project_id }}.{{ dataset['bq_dataset_family'] }}_stable.{{ events_table }}`
|
24 | 33 | CROSS JOIN
|
|
30 | 39 | LEFT JOIN
|
31 | 40 | -- Add * extra to every event to get total event count
|
32 | 41 | UNNEST(event.extra || [STRUCT<key STRING, value STRING>('*', NULL)]) AS event_extra
|
| 42 | + WHERE |
| 43 | + DATE(submission_timestamp) = @submission_date |
| 44 | + {% if dataset['app_name'] == "firefox_desktop" and events_table == "events_v1" %} |
| 45 | + -- See https://mozilla-hub.atlassian.net/browse/DENG-9732 |
| 46 | + AND ( |
| 47 | + event.category = "uptake.remotecontent.result" |
| 48 | + AND event.name IN ("uptake_remotesettings", "uptake_normandy") |
| 49 | + AND mozfun.norm.extract_version(client_info.app_display_version, 'major') >= 143 |
| 50 | + ) IS FALSE |
| 51 | + {% endif %} |
| 52 | + GROUP BY |
| 53 | + submission_date, |
| 54 | + window_start, |
| 55 | + window_end, |
| 56 | + event_category, |
| 57 | + event_name, |
| 58 | + event_extra_key, |
| 59 | + country, |
| 60 | + normalized_app_name, |
| 61 | + channel, |
| 62 | + version, |
| 63 | + experiment, |
| 64 | + experiment_branch |
33 | 65 | ),
|
34 | 66 | {% endfor %}
|
35 | 67 | {{ dataset['bq_dataset_family'] }}_aggregated AS (
|
36 | 68 | SELECT
|
37 |
| - @submission_date AS submission_date, |
38 |
| - TIMESTAMP_ADD( |
39 |
| - TIMESTAMP_TRUNC(submission_timestamp, HOUR), |
40 |
| - -- Aggregates event counts over 60-minute intervals |
41 |
| - INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE |
42 |
| - ) AS window_start, |
43 |
| - TIMESTAMP_ADD( |
44 |
| - TIMESTAMP_TRUNC(submission_timestamp, HOUR), |
45 |
| - INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE |
46 |
| - ) AS window_end, |
47 |
| - * EXCEPT (submission_timestamp), |
48 |
| - COUNT(*) AS total_events, |
| 69 | + "{{ dataset['canonical_app_name'] }}" AS normalized_app_name, |
| 70 | + * REPLACE (SUM(total_events) AS total_events), |
49 | 71 | FROM
|
50 | 72 | (
|
51 | 73 | {% for events_table in event_tables_per_dataset[dataset['bq_dataset_family']] -%}
|
|
56 | 78 | {{ "UNION ALL" if not loop.last }}
|
57 | 79 | {% endfor -%}
|
58 | 80 | )
|
59 |
| - WHERE |
60 |
| - DATE(submission_timestamp) = @submission_date |
61 | 81 | GROUP BY
|
62 | 82 | submission_date,
|
63 | 83 | window_start,
|
|
0 commit comments