Add estimate for number of devices to accounts_backend.users_services_daily_v1 (#5131)
This commit is contained in:
Родитель
638f44c4ff
Коммит
6c185d0a88
|
@ -15,6 +15,10 @@ CREATE TEMP FUNCTION udf_contains_tier1_country(x ANY TYPE) AS ( --
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TEMP FUNCTION count_distinct(arr ANY TYPE) AS (
|
||||||
|
(SELECT COUNT(DISTINCT x) FROM UNNEST(arr) AS x)
|
||||||
|
);
|
||||||
|
|
||||||
WITH fxa_events AS (
|
WITH fxa_events AS (
|
||||||
SELECT
|
SELECT
|
||||||
submission_timestamp,
|
submission_timestamp,
|
||||||
|
@ -34,6 +38,7 @@ WITH fxa_events AS (
|
||||||
metrics.string.utm_source AS utm_source,
|
metrics.string.utm_source AS utm_source,
|
||||||
metrics.string.utm_campaign AS utm_campaign,
|
metrics.string.utm_campaign AS utm_campaign,
|
||||||
metrics.string.utm_content AS utm_content,
|
metrics.string.utm_content AS utm_content,
|
||||||
|
metadata.user_agent,
|
||||||
FROM
|
FROM
|
||||||
`accounts_backend.accounts_events`
|
`accounts_backend.accounts_events`
|
||||||
WHERE
|
WHERE
|
||||||
|
@ -56,6 +61,16 @@ windowed AS (
|
||||||
udf.mode_last(ARRAY_AGG(country) OVER w1) AS country,
|
udf.mode_last(ARRAY_AGG(country) OVER w1) AS country,
|
||||||
udf_contains_tier1_country(ARRAY_AGG(country) OVER w1) AS seen_in_tier1_country,
|
udf_contains_tier1_country(ARRAY_AGG(country) OVER w1) AS seen_in_tier1_country,
|
||||||
LOGICAL_OR(event_name = 'reg_complete') OVER w1 AS registered,
|
LOGICAL_OR(event_name = 'reg_complete') OVER w1 AS registered,
|
||||||
|
-- we cannot count distinct here because the window is ordered by submission_timestamp
|
||||||
|
ARRAY_AGG(
|
||||||
|
CONCAT(
|
||||||
|
COALESCE(user_agent.browser, ''),
|
||||||
|
'_',
|
||||||
|
COALESCE(user_agent.os, ''),
|
||||||
|
'_',
|
||||||
|
COALESCE(user_agent.version, '')
|
||||||
|
)
|
||||||
|
) OVER w1 AS user_agent_devices,
|
||||||
FROM
|
FROM
|
||||||
fxa_events
|
fxa_events
|
||||||
WHERE
|
WHERE
|
||||||
|
@ -89,5 +104,6 @@ SELECT
|
||||||
windowed.country,
|
windowed.country,
|
||||||
windowed.seen_in_tier1_country,
|
windowed.seen_in_tier1_country,
|
||||||
windowed.registered,
|
windowed.registered,
|
||||||
|
count_distinct(windowed.user_agent_devices) AS user_agent_device_count,
|
||||||
FROM
|
FROM
|
||||||
windowed
|
windowed
|
||||||
|
|
|
@ -17,3 +17,7 @@ fields:
|
||||||
- name: registered
|
- name: registered
|
||||||
type: BOOLEAN
|
type: BOOLEAN
|
||||||
mode: NULLABLE
|
mode: NULLABLE
|
||||||
|
- name: user_agent_device_count
|
||||||
|
type: INTEGER
|
||||||
|
mode: NULLABLE
|
||||||
|
description: Number of devices associated with the user, per service, per day. Estimated from the number of unique user agent strings.
|
||||||
|
|
Загрузка…
Ссылка в новой задаче