lib/templates/sql/archived/events_generic.sql (71 lines of code) (raw):
{% autoescape off %}
WITH buckets as (
SELECT
i as bucket
FROM
UNNEST(generate_array({{minBucket}}, {{maxBucket}})) i
),
{% for segment in segments %}
eventdata_{{segment.name}} as (
SELECT
"{{segment.name}}" as segment,
{% if is_experiment %}
mozfun.map.get_key(ping_info.experiments, "{{slug}}").branch as branch,
{% endif %}
{% for metric in metrics %}
SAFE_CAST((SELECT value FROM UNNEST(event.extra) WHERE key = '{{metric}}') AS int) AS {{metric}},
{% endfor %}
FROM
`moz-fx-data-shared-prod.firefox_desktop.pageload`
CROSS JOIN
UNNEST(events) AS event
WHERE
normalized_channel = "{{channel}}"
AND DATE(submission_timestamp) >= DATE('{{startDate}}')
AND DATE(submission_timestamp) <= DATE('{{endDate}}')
AND mozfun.map.get_key(ping_info.experiments, "{{slug}}").branch is not null
{% for condition in segment.conditions %}
{{condition}}
{% endfor %}
),
aggregated_{{segment.name}} as (
SELECT
segment,
branch,
bucket,
{% for metric in metrics %}
COUNTIF({{metric}} = bucket) as {{metric}}_counts,
{% endfor %}
FROM
eventdata_{{segment.name}}, buckets
GROUP BY
segment, branch, bucket
ORDER BY
segment, branch, bucket
),
{% endfor %}
emptyTable as
(
SELECT * FROM buckets WHERE 1=0
)
SELECT
segment,
bucket,
branch,
{% for metric in metrics %}
{{metric}}_counts,
{% endfor %}
FROM
(
{% for segment in segments %}
{% if segment.name == "All" %}
SELECT * FROM aggregated_all
{% else %}
UNION ALL
SELECT * FROM aggregated_{{segment.name}}
{% endif %}
{% endfor %}
) s
ORDER BY
segment, branch, bucket
{% endautoescape %}