jobs/desktop-mobile-mau-2020/mobile_mau/forecast_and_actual.sql (118 lines of code) (raw):
WITH forecast_base AS (
SELECT
REPLACE(datasource, " Global MAU", "") AS datasource,
date,
type,
value AS mau,
low90,
high90,
p10 AS low80,
p90 AS high80,
p20,
p30,
p40,
p50,
p60,
p70,
p80
FROM
`moz-fx-data-shared-prod.telemetry.simpleprophet_forecasts`
WHERE
asofdate = (
SELECT
MAX(asofdate)
FROM
`moz-fx-data-shared-prod.telemetry.simpleprophet_forecasts`
)
AND datasource IN (
"Fenix Global MAU",
"Fennec Global MAU",
"Firefox iOS Global MAU",
"Firefox Lite Global MAU",
"Firefox Echo Global MAU",
"Focus Android Global MAU",
"Focus iOS Global MAU",
"Lockwise Android Global MAU"
)
),
mobile_base AS (
SELECT
*
FROM
`moz-fx-data-shared-prod.telemetry.firefox_nondesktop_exact_mau28_by_dimensions_v1`
WHERE
product IN (
"Fenix",
"Fennec",
"Firefox iOS",
"Firefox Lite",
"Firefox Echo",
"Focus Android",
"Focus iOS",
"Lockwise Android"
)
),
per_bucket AS (
SELECT
product AS datasource,
'actual' AS type,
submission_date,
id_bucket,
SUM(mau) AS mau
FROM
mobile_base
GROUP BY
product,
id_bucket,
submission_date
),
with_ci AS (
SELECT
datasource,
type,
submission_date,
`moz-fx-data-shared-prod.udf_js.jackknife_sum_ci`(20, ARRAY_AGG(mau)) AS mau
FROM
per_bucket
GROUP BY
datasource,
type,
submission_date
),
with_forecast AS (
SELECT
datasource,
type,
submission_date AS `date`,
mau.total AS mau,
mau.low AS mau_low,
mau.high AS mau_high
FROM
with_ci
UNION ALL
SELECT
datasource,
type,
`date`,
mau,
low90 AS mau_low,
high90 AS mau_high
FROM
forecast_base
WHERE
type != 'original'
AND date > (SELECT MAX(submission_date) FROM with_ci)
)
SELECT
datasource,
type,
`date`,
mau,
mau_low,
mau_high
FROM
with_forecast
ORDER BY
datasource,
type,
`date`