如何在 BigQuery 中查找用户在我们的应用上花费的时间 (engagement_time)?
Posted
技术标签:
【中文标题】如何在 BigQuery 中查找用户在我们的应用上花费的时间 (engagement_time)?【英文标题】:How to find time spent (engagement_time) on our app by the users in BigQuery? 【发布时间】:2021-09-21 10:48:32 【问题描述】:我正在尝试计算用户在我的应用上花费的总时间。我们在 BigQuery 中集成了 Firebase 分析数据。我可以在查询的 select 语句中使用engagement_time_msec/1000 的值的总和吗?这就是我正在尝试的:
SELECT SUM(x.value.int_value) FROM "[dataset]", UNNEST(event_params) AS x WHERE x.key = "engagement_time_msec"
执行此查询后,我得到了非常大的价值(它每天花费大量时间)。我不确定是否可以使用 SUM("engagement_time_msec") 来计算用户在应用上花费的总时间。
我没想到用户会在应用上花费这么多时间。这是计算engagement_time的正确方法,还是计算engagement_time的最佳事件?
任何帮助将不胜感激。
【问题讨论】:
样本数据、预期结果以及对您希望使用数据完成的目标的清晰说明会有所帮助。 【参考方案1】:根据google analytics docs 关于engagement_time_sec
,该字段定义为“自上次用户参与事件以来的额外参与时间(毫秒)”。因此,如果您只看这个,您将失去用户之前在提到的user_engagement
事件触发之前花费的所有时间。
我要做的,因为现在 ga_session_id
已定义,将获取每个 ga_session_id
时间戳的最大值和最小值,对每种情况使用 TIMESTAMP_DIFF()
函数,并对所有会话的结果求和某一天:
WITH ga_sessions AS (
SELECT
event_timestamp,
event_date,
params.value.int_value AS ga_session_id
FROM
`analytics_123456789.events_*`, UNNEST(event_params) AS params
WHERE
params.key = "ga_session_id"
),
session_length AS (
SELECT
event_date,
TIMESTAMP_DIFF(MAX(TIMESTAMP_MICROS(event_timestamp)), MIN(TIMESTAMP_MICROS(event_timestamp)), SECOND) AS session_duration_seconds
FROM
ga_sessions
WHERE
ga_session_id IS NOT NULL
GROUP BY
1
),
final AS (
SELECT
event_date,
SUM(session_duration_seconds) as total_seconds_in_app
FROM
session_length
GROUP BY
1
ORDER BY
1 DESC
)
SELECT * FROM final
输出(从我工作的应用程序中提取的数据):
event_date | total_seconds_in_app
-----------+--------------------
20210920 | 45600
20210919 | 43576
20210918 | 44539
【讨论】:
以上是关于如何在 BigQuery 中查找用户在我们的应用上花费的时间 (engagement_time)?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据用户 ID 和 ID 访问的级别数使用 Google BigQuery 查找中位数?
如何计算Firebase中的MAU?我需要BigQuery吗?
如何计算 Firebase 中的 MAU?我需要 BigQuery 吗?