Skip to content

Commit af0cc1c

Browse files
committed
feat: add composite_active_users template
1 parent 27f671f commit af0cc1c

File tree

4 files changed

+116
-0
lines changed

4 files changed

+116
-0
lines changed

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: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
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+
channel,
9+
app_name,
10+
app_version,
11+
`mozfun.norm.browser_version_info`(app_version).major_version AS app_version_major,
12+
`mozfun.norm.browser_version_info`(app_version).minor_version AS app_version_minor,
13+
`mozfun.norm.browser_version_info`(app_version).patch_revision AS app_version_patch_revision,
14+
`mozfun.norm.browser_version_info`(app_version).is_major_release AS app_version_is_major_release,
15+
country,
16+
os,
17+
os_version,
18+
CAST(`mozfun.norm.truncate_version`(os_version, "major") AS INTEGER) AS os_version_major,
19+
CAST(`mozfun.norm.truncate_version`(os_version, "minor") AS INTEGER) AS os_version_minor,
20+
{% if app_name == "firefox_desktop" %}
21+
COALESCE(
22+
`mozfun.norm.windows_version_info`(os, os_version, windows_build_number),
23+
os_version
24+
) AS os_version_build,
25+
{% endif %}
26+
distribution_id,
27+
is_default_browser,
28+
activity_segment,
29+
is_dau,
30+
is_wau,
31+
is_mau,
32+
is_daily_user,
33+
is_weekly_user,
34+
is_monthly_user,
35+
FROM
36+
{% if app_name == "firefox_desktop" %}
37+
`{{ project_id }}.{{ app_name }}.baseline_active_users`
38+
{% else %}
39+
`{{ project_id }}.{{ app_name }}.active_users`
40+
{% endif %}
41+
WHERE
42+
mozfun.norm.browser_version_info(app_version).major_version < 136
43+
UNION ALL
44+
SELECT
45+
submission_date,
46+
usage_profile_id,
47+
first_seen_year,
48+
channel,
49+
app_name,
50+
app_version,
51+
`mozfun.norm.browser_version_info`(app_version).major_version AS app_version_major,
52+
`mozfun.norm.browser_version_info`(app_version).minor_version AS app_version_minor,
53+
`mozfun.norm.browser_version_info`(app_version).patch_revision AS app_version_patch_revision,
54+
`mozfun.norm.browser_version_info`(app_version).is_major_release AS app_version_is_major_release,
55+
country,
56+
os,
57+
os_version,
58+
CAST(`mozfun.norm.truncate_version`(os_version, "major") AS INTEGER) AS os_version_major,
59+
CAST(`mozfun.norm.truncate_version`(os_version, "minor") AS INTEGER) AS os_version_minor,
60+
{% if app_name == "firefox_desktop" %}
61+
COALESCE(
62+
`mozfun.norm.windows_version_info`(os, os_version, windows_build_number),
63+
os_version
64+
) AS os_version_build,
65+
{% endif %}
66+
is_default_browser,
67+
activity_segment,
68+
is_dau,
69+
is_wau,
70+
is_mau,
71+
is_daily_user,
72+
is_weekly_user,
73+
is_monthly_user,
74+
FROM
75+
`{{ project_id }}.{{ app_name }}.usage_reporting_active_users`
76+
WHERE
77+
mozfun.norm.browser_version_info(app_version).major_version >= 136

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,18 @@ SELECT
3434
THEN "core_user"
3535
ELSE "other"
3636
END AS activity_segment,
37+
CAST(`mozfun.norm.truncate_version`(os_version, "major") AS INTEGER) AS os_version_major,
38+
CAST(`mozfun.norm.truncate_version`(os_version, "minor") AS INTEGER) AS os_version_minor,
39+
{% if app_name == "firefox_desktop" %%}
40+
COALESCE(
41+
`mozfun.norm.windows_version_info`(os, os_version, windows_build_number),
42+
os_version
43+
) AS os_version_build,
44+
{% endif %%}
45+
`mozfun.norm.browser_version_info`(app_version).major_version AS app_version_major,
46+
`mozfun.norm.browser_version_info`(app_version).minor_version AS app_version_minor,
47+
`mozfun.norm.browser_version_info`(app_version).patch_revision AS app_version_patch_revision,
48+
`mozfun.norm.browser_version_info`(app_version).is_major_release AS app_version_is_major_release,
3749
IFNULL(mozfun.bits28.days_since_seen(days_active_bits) = 0, FALSE) AS is_dau,
3850
IFNULL(mozfun.bits28.days_since_seen(days_active_bits) < 7, FALSE) AS is_wau,
3951
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)