Skip to content

Commit c207bfc

Browse files
authored
feat(): add composite active users to usage reporting generator (#7072)
* feat: add composite_active_users template * feat: include app_version breakdown fields in the baseline_active_users view * feat: add app_display_version AS app_version alias to active_users * add aliases for os_version and os, and add first_seen_year field to the active_users view * fix: include distribution_id on the right side of the union * feat: add os version and app version breakdown fields to active_users mobile * fix: add first_seen_date to the usage_reporting_active_users view
1 parent 4db4962 commit c207bfc

File tree

6 files changed

+135
-1
lines changed

6 files changed

+135
-1
lines changed

sql/moz-fx-data-shared-prod/firefox_desktop/baseline_active_users/view.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ SELECT
2727
ELSE 'Firefox Desktop'
2828
END AS app_name,
2929
app_display_version AS app_version,
30+
`mozfun.norm.browser_version_info`(app_display_version).major_version AS app_version_major,
31+
`mozfun.norm.browser_version_info`(app_display_version).minor_version AS app_version_minor,
32+
`mozfun.norm.browser_version_info`(
33+
app_display_version
34+
).patch_revision AS app_version_patch_revision,
35+
`mozfun.norm.browser_version_info`(
36+
app_display_version
37+
).is_major_release AS app_version_is_major_release,
3038
normalized_channel AS channel,
3139
COALESCE(last_seen.distribution_id, distribution_mapping.distribution_id) AS distribution_id,
3240
CASE

sql_generators/mobile_kpi_support_metrics/templates/active_users.view.sql

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,16 @@ SELECT
6060
ELSE
6161
CAST(NULL AS STRING)
6262
END AS device_type,
63+
EXTRACT(YEAR FROM first_seen_date) AS first_seen_year,
64+
app_display_version AS app_version,
65+
`mozfun.norm.browser_version_info`(app_display_version).major_version AS app_version_major,
66+
`mozfun.norm.browser_version_info`(app_display_version).minor_version AS app_version_minor,
67+
`mozfun.norm.browser_version_info`(app_display_version).patch_revision AS app_version_patch_revision,
68+
`mozfun.norm.browser_version_info`(app_display_version).is_major_release AS app_version_is_major_release,
69+
normalized_os AS os,
70+
normalized_os_version AS os_version,
71+
CAST(`mozfun.norm.truncate_version`(normalized_os_version, "major") AS INTEGER) AS os_version_major,
72+
CAST(`mozfun.norm.truncate_version`(normalized_os_version, "minor") AS INTEGER) AS os_version_minor,
73+
normalized_channel AS channel,
6374
FROM
6475
`{{ project_id }}.{{ dataset }}.baseline_clients_last_seen`

sql_generators/usage_reporting/__init__.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
)
3131
APP_UNION_VIEW_TEMPLATE = "app_union.view.sql.jinja"
3232
ACTIVE_USERS_VIEW_TEMPLATE = "usage_reporting_active_users.view.sql.jinja"
33+
COMPOSITE_ACTIVE_USERS_TEMPLATE = "composite_active_users.view.sql.jinja"
3334

3435

3536
@click.command()
@@ -220,3 +221,24 @@ def generate(
220221
sql=reformat(rendered_active_users_view),
221222
skip_existing=False,
222223
)
224+
225+
composite_active_users_dataset_name = COMPOSITE_ACTIVE_USERS_TEMPLATE.split(
226+
"."
227+
)[0]
228+
composite_active_users_view_template = jinja_env.get_template(
229+
COMPOSITE_ACTIVE_USERS_TEMPLATE
230+
)
231+
rendered_composite_active_users_view = (
232+
composite_active_users_view_template.render(
233+
**app_template_args,
234+
view_name=composite_active_users_dataset_name,
235+
)
236+
)
237+
238+
write_sql(
239+
output_dir=output_dir,
240+
full_table_id=f"{target_project}.{app_name}.{composite_active_users_dataset_name}",
241+
basename="view.sql",
242+
sql=reformat(rendered_composite_active_users_view),
243+
skip_existing=False,
244+
)
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
CREATE OR REPLACE VIEW
2+
`{{ project_id }}.{{ app_name }}.{{ view_name }}`
3+
AS
4+
SELECT
5+
submission_date,
6+
client_id AS usage_profile_id,
7+
first_seen_year,
8+
first_seen_date,
9+
channel,
10+
app_name,
11+
app_version,
12+
app_version_major,
13+
app_version_minor,
14+
app_version_patch_revision,
15+
app_version_is_major_release,
16+
country,
17+
os,
18+
os_version,
19+
os_version_major,
20+
os_version_minor,
21+
{% if app_name == "firefox_desktop" %}
22+
os_version_build,
23+
{% endif %}
24+
distribution_id,
25+
is_default_browser,
26+
activity_segment,
27+
is_dau,
28+
is_wau,
29+
is_mau,
30+
is_daily_user,
31+
is_weekly_user,
32+
is_monthly_user,
33+
FROM
34+
{% if app_name == "firefox_desktop" %}
35+
`{{ project_id }}.{{ app_name }}.baseline_active_users`
36+
{% else %}
37+
`{{ project_id }}.{{ app_name }}.active_users`
38+
{% endif %}
39+
WHERE
40+
mozfun.norm.browser_version_info(app_version).major_version < 136
41+
UNION ALL
42+
SELECT
43+
submission_date,
44+
usage_profile_id,
45+
first_seen_year,
46+
first_seen_date,
47+
channel,
48+
app_name,
49+
app_version,
50+
app_version_major,
51+
app_version_minor,
52+
app_version_patch_revision,
53+
app_version_is_major_release,
54+
country,
55+
os,
56+
os_version,
57+
os_version_major,
58+
os_version_minor,
59+
{% if app_name == "firefox_desktop" %}
60+
os_version_build,
61+
{% endif %}
62+
distribution_id,
63+
is_default_browser,
64+
activity_segment,
65+
is_dau,
66+
is_wau,
67+
is_mau,
68+
is_daily_user,
69+
is_weekly_user,
70+
is_monthly_user,
71+
FROM
72+
`{{ project_id }}.{{ app_name }}.usage_reporting_active_users`
73+
WHERE
74+
mozfun.norm.browser_version_info(app_version).major_version >= 136

sql_generators/usage_reporting/templates/usage_reporting_active_users.view.sql.jinja

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ CREATE OR REPLACE VIEW
33
`{{ project_id }}.{{ app_name }}.{{ view_name }}`
44
AS
55
SELECT
6-
daily.* EXCEPT(app_channel, normalized_country_code),
6+
daily.* EXCEPT(app_channel, normalized_country_code, app_display_version),
77
app_channel AS channel,
88
IFNULL(normalized_country_code, "??") AS country,
99
EXTRACT(YEAR FROM first_seen.first_seen_date) AS first_seen_year,
10+
first_seen.first_seen_date,
1011
{% if app_name in ("fenix", "firefox_desktop") %}
1112
CASE
1213
WHEN LOWER(distribution_id) = "mozillaonline"
@@ -34,6 +35,19 @@ SELECT
3435
THEN "core_user"
3536
ELSE "other"
3637
END AS activity_segment,
38+
CAST(`mozfun.norm.truncate_version`(os_version, "major") AS INTEGER) AS os_version_major,
39+
CAST(`mozfun.norm.truncate_version`(os_version, "minor") AS INTEGER) AS os_version_minor,
40+
{% if app_name == "firefox_desktop" %}
41+
COALESCE(
42+
`mozfun.norm.windows_version_info`(os, os_version, windows_build_number),
43+
os_version
44+
) AS os_version_build,
45+
{% endif %}
46+
app_display_version AS app_version,
47+
`mozfun.norm.browser_version_info`(app_display_version).major_version AS app_version_major,
48+
`mozfun.norm.browser_version_info`(app_display_version).minor_version AS app_version_minor,
49+
`mozfun.norm.browser_version_info`(app_display_version).patch_revision AS app_version_patch_revision,
50+
`mozfun.norm.browser_version_info`(app_display_version).is_major_release AS app_version_is_major_release,
3751
IFNULL(mozfun.bits28.days_since_seen(days_active_bits) = 0, FALSE) AS is_dau,
3852
IFNULL(mozfun.bits28.days_since_seen(days_active_bits) < 7, FALSE) AS is_wau,
3953
IFNULL(mozfun.bits28.days_since_seen(days_active_bits) < 28, FALSE) AS is_mau,

sql_generators/usage_reporting/templates/usage_reporting_active_users_aggregates.view.sql.jinja

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,10 @@ SELECT
1010
`mozfun.norm.windows_version_info`(os, os_version, windows_build_number),
1111
os_version
1212
) AS os_version_build,
13+
`mozfun.norm.browser_version_info`(app_version).major_version AS app_version_major,
14+
`mozfun.norm.browser_version_info`(app_version).minor_version AS app_version_minor,
15+
`mozfun.norm.browser_version_info`(app_version).patch_revision AS app_version_patch_revision,
16+
`mozfun.norm.browser_version_info`(app_version).is_major_release AS app_version_is_major_release,
17+
) AS os_version_build,
1318
FROM
1419
`{{ project_id }}.{{ app_name }}.{{ view_name }}_v1`

0 commit comments

Comments
 (0)