lib/templates/sql/experiment/glean/histogram_os_segments.sql (144 lines of code) (raw):
{% autoescape off %}
with
{% if available_on_desktop == True %}
desktop_data as (
SELECT
normalized_os as segment,
mozfun.map.get_key(ping_info.experiments, "{{slug}}").branch as branch,
CAST(key as INT64)/1000000 AS bucket,
value as count
FROM `mozdata.firefox_desktop.metrics` as d
CROSS JOIN UNNEST({{histogram}}.values)
WHERE
DATE(submission_timestamp) >= DATE('{{startDate}}')
AND DATE(submission_timestamp) <= DATE('{{endDate}}')
AND normalized_channel = "{{channel}}"
AND normalized_app_name = "Firefox"
AND {{histogram}} is not null
AND ARRAY_LENGTH(ping_info.experiments) > 0
AND mozfun.map.get_key(ping_info.experiments, "{{slug}}").branch is not null
{% for isp in blacklist %}
AND metadata.isp.name != "{{isp}}"
{% endfor %}
),
{% else %}
desktop_data as (
SELECT
"" as segment,
"" as branch,
0 as bucket,
0 as count
FROM `mozdata.firefox_desktop.metrics` as d
WHERE FALSE
),
{% endif %}
{% if available_on_android == True %}
android_data as (
SELECT
normalized_os as segment,
mozfun.map.get_key(ping_info.experiments, "{{slug}}").branch as branch,
CAST(key as INT64)/1000000 AS bucket,
value as count
FROM `mozdata.fenix.metrics` as f
CROSS JOIN UNNEST({{histogram}}.values)
WHERE
DATE(submission_timestamp) >= DATE('{{startDate}}')
AND DATE(submission_timestamp) <= DATE('{{endDate}}')
AND normalized_channel = "{{channel}}"
AND {{histogram}} is not null
AND ARRAY_LENGTH(ping_info.experiments) > 0
AND mozfun.map.get_key(ping_info.experiments, "{{slug}}").branch is not null
{% for isp in blacklist %}
AND metadata.isp.name != "{{isp}}"
{% endfor %}
)
{% else %}
android_data as (
SELECT
"" as segment,
"" as branch,
0 as bucket,
0 as count
FROM `mozdata.fenix.metrics` as f
WHERE FALSE
)
{% endif %}
{% if include_non_enrolled_branch == True %}
{% if available_on_desktop == True %}
,desktop_data_non_enrolled as (
SELECT
normalized_os as segment,
"non-enrolled" as branch,
CAST(key as INT64)/1000000 AS bucket,
value as count
FROM `mozdata.firefox_desktop.metrics` as d
CROSS JOIN UNNEST({{histogram}}.values)
WHERE
DATE(submission_timestamp) >= DATE('{{startDate}}')
AND DATE(submission_timestamp) <= DATE('{{endDate}}')
AND normalized_channel = "{{channel}}"
AND normalized_app_name = "Firefox"
AND {{histogram}} is not null
AND ARRAY_LENGTH(ping_info.experiments) = 0
),
{% else %}
,desktop_data_non_enrolled as (
SELECT
"" as segment,
"" as branch,
0 as bucket,
0 as count
FROM `mozdata.firefox_desktop.metrics` as d
WHERE FALSE
),
{% endif %}
{% if available_on_android == True %}
android_data_non_enrolled as (
SELECT
normalized_os as segment,
"non-enrolled" as branch,
CAST(key as INT64)/1000000 AS bucket,
value as count
FROM `mozdata.fenix.metrics` as f
CROSS JOIN UNNEST({{histogram}}.values)
WHERE
DATE(submission_timestamp) >= DATE('{{startDate}}')
AND DATE(submission_timestamp) <= DATE('{{endDate}}')
AND normalized_channel = "{{channel}}"
AND {{histogram}} is not null
AND ARRAY_LENGTH(ping_info.experiments) = 0
)
{% else %}
android_data_non_enrolled as (
SELECT
"" as segment,
"" as branch,
0 as bucket,
0 as count
FROM `mozdata.fenix.metrics` as f
WHERE FALSE
)
{% endif %}
{% endif %}
SELECT
segment,
branch,
bucket,
SUM(count) as counts
FROM
(
SELECT * FROM desktop_data
UNION ALL
SELECT * FROM android_data
{% if include_non_enrolled_branch == True %}
UNION ALL
SELECT * FROM desktop_data_non_enrolled
UNION ALL
SELECT * FROM android_data_non_enrolled
{% endif %}
) s
GROUP BY
segment, branch, bucket
ORDER BY
segment, branch, bucket
{% endautoescape %}