Skip to content

Commit 922dd8e

Browse files
authored
Merge pull request #14 from TechArtists/multiple-project-source
add session_span
2 parents ebe0b43 + 24d4f5e commit 922dd8e

2 files changed

Lines changed: 51 additions & 7 deletions

File tree

models/analytics/google_analytics_installs.sql

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,31 @@
2323
{%- set columnsForEventDimensions = tmp_res[0] -%}
2424
{%- set eventDimensionsUnnestedCount = tmp_res[1] -%}
2525

26+
{%- set install_types = [
27+
"custom_event",
28+
"our_first_open",
29+
"first_open",
30+
"any_first_event"
31+
] -%}
32+
2633
WITH data as (
2734
SELECT DATE(event_ts) as event_date
2835
, DATE(install_ts) as install_date
2936
, project_id
3037
, dataset_id
3138
, install_age
3239
, {{ ta_firebase.unpack_columns_into_minicolumns(columnsForEventDimensions, miniColumnsToIgnoreInGroupBy, [], "", "") }}
33-
, COUNT(1) as cnt
34-
, COUNT(DISTINCT(user_pseudo_id)) as users
40+
, COUNT(1) AS cnt
41+
, COUNT(IF(has_post_install_events_after_10s, 1, NULL)) AS cnt_qualified
42+
, COUNT(DISTINCT user_pseudo_id) AS users
43+
, COUNT(DISTINCT IF(has_post_install_events_after_10s, user_pseudo_id, NULL)) AS users_qualified
44+
45+
{% for install_type in install_types %}
46+
, COUNT(IF(user_pseudo_id_{{ install_type }}, 1, NULL)) AS cnt_{{ install_type }}
47+
, COUNT(IF(user_pseudo_id_{{ install_type }} AND has_post_install_events_after_10s, 1, NULL)) AS cnt_{{ install_type }}_qualified
48+
, COUNT(DISTINCT IF(user_pseudo_id_{{ install_type }}, user_pseudo_id, NULL)) AS users_{{ install_type }}
49+
, COUNT(DISTINCT IF(user_pseudo_id_{{ install_type }} AND has_post_install_events_after_10s, user_pseudo_id, NULL)) AS users_{{ install_type }}_qualified
50+
{% endfor %}
3551

3652
FROM {{ ref("google_analytics_installs_raw") }}
3753
WHERE {{ ta_firebase.analyticsDateFilterFor('event_date') }}
@@ -44,5 +60,13 @@ SELECT event_date
4460
, install_age
4561
, {{ ta_firebase.pack_minicolumns_into_structs_for_select(columnsForEventDimensions, miniColumnsToIgnoreInGroupBy, "", "") }}
4662
, cnt
63+
, cnt_qualified
4764
, users
48-
FROM data
65+
, users_qualified
66+
{% for install_type in install_types %}
67+
, cnt_{{ install_type }}
68+
, cnt_{{ install_type }}_qualified
69+
, users_{{ install_type }}
70+
, users_{{ install_type }}_qualified
71+
{% endfor %}
72+
FROM data

models/analytics/google_analytics_installs_raw.sql

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
},
88
incremental_strategy = 'insert_overwrite',
99
require_partition_filter = true,
10-
cluster_by = ["platform", "bundle_id"],
10+
cluster_by = ["platform", "bundle_id"]
1111
) }}
1212
-- incremental_strategy='insert_overwrite',
1313
-- require_partition_filter = false
@@ -26,7 +26,7 @@ WITH custom_install_event AS (
2626
)
2727
, ta_install_event AS (
2828
SELECT * FROM {{ ref('google_analytics_events_raw') }}
29-
WHERE event_name = 'ta_first_open'
29+
WHERE event_name = 'our_first_open'
3030
AND {{ ta_firebase.analyticsDateFilterFor('event_date',extend = 2) }}
3131
AND event_ts BETWEEN install_ts AND TIMESTAMP_ADD(install_ts, INTERVAL 1 DAY)
3232
QUALIFY ROW_NUMBER() OVER (PARTITION BY user_pseudo_id ORDER BY event_ts) = 1
@@ -45,6 +45,19 @@ WITH custom_install_event AS (
4545
AND event_ts BETWEEN install_ts AND TIMESTAMP_ADD(install_ts, INTERVAL 1 DAY)
4646
QUALIFY ROW_NUMBER() OVER (PARTITION BY user_pseudo_id ORDER BY event_ts) = 1
4747
)
48+
, first_user_session_span AS (
49+
SELECT
50+
user_pseudo_id,
51+
TIMESTAMP_DIFF(
52+
MAX(event_ts),
53+
MIN(event_ts),
54+
SECOND
55+
) AS seconds_in_app_on_install_day
56+
FROM {{ ref('google_analytics_events_raw') }}
57+
WHERE {{ ta_firebase.analyticsDateFilterFor('event_date', extend = 2) }}
58+
AND event_ts BETWEEN install_ts AND TIMESTAMP_ADD(install_ts, INTERVAL 1 DAY)
59+
GROUP BY user_pseudo_id
60+
)
4861
, user_pseudo_id_to_user_id AS (
4962
SELECT user_pseudo_id, user_id
5063
FROM {{ ref('google_analytics_events_raw') }} WHERE user_id IS NOT NULL AND {{ ta_firebase.analyticsDateFilterFor('event_date', extend = 2) }}
@@ -65,15 +78,22 @@ WITH custom_install_event AS (
6578

6679

6780
, data as (
68-
SELECT {{ columnsInSelect | join("\n , ") }}
81+
SELECT {{ columnsInSelect | join("\n , ") }}
82+
, custom.user_pseudo_id IS NOT NULL AS user_pseudo_id_custom_event
83+
, ta.user_pseudo_id IS NOT NULL AS user_pseudo_id_our_first_open
84+
, ga.user_pseudo_id IS NOT NULL AS user_pseudo_id_first_open
85+
, anyFirstEvent.user_pseudo_id IS NOT NULL AS user_pseudo_id_any_first_event
86+
, span.seconds_in_app_on_install_day
87+
, span.seconds_in_app_on_install_day >= {{ var("TA:QUALIFIED_INSTALL_MIN_SECONDS", 10) }} AS has_post_install_events_after_10s
6988
FROM any_first_event as anyFirstEvent
7089
FULL OUTER JOIN ga_install_event as ga ON anyFirstEvent.user_pseudo_id = ga.user_pseudo_id
7190
FULL OUTER JOIN ta_install_event as ta ON anyFirstEvent.user_pseudo_id = ta.user_pseudo_id
7291
FULL OUTER JOIN custom_install_event as custom ON anyFirstEvent.user_pseudo_id = custom.user_pseudo_id
7392
LEFT JOIN user_pseudo_id_to_user_id as users ON COALESCE(anyFirstEvent.user_pseudo_id, ga.user_pseudo_id, ta.user_pseudo_id, custom.user_pseudo_id) = users.user_pseudo_id
93+
LEFT JOIN first_user_session_span as span ON COALESCE(anyFirstEvent.user_pseudo_id, ga.user_pseudo_id, ta.user_pseudo_id, custom.user_pseudo_id) = span.user_pseudo_id
7494
WHERE True
7595
)
76-
-- SELECT COUNT(1) , COUNT(DISTINCT(user_pseudo_id))
96+
-- SELECT COUNT(1) , COUNT(DISTINCT(user_pseudo_id))
7797
SELECT *
7898
FROM data
7999
WHERE {{ ta_firebase.analyticsDateFilterFor('event_date') }}

0 commit comments

Comments
 (0)