提问人:Xiang 提问时间:11/16/2023 更新时间:11/20/2023 访问量:42
如何计算连接到 BigQuery 的 GA4 中的“互动率”?
How to calculate the "Engagement Rate" in GA4 connected to BigQuery?
问:
描述
- 我已将 GA4 连接到 BigQuery。
- bigquery 中的 GA4 数据包括:、、、、...
ga_session_id
page_location
user_pseudo_id
session_engaged
- 我想使用 python 客户端 api 从 bigquery 查询数据。
- 然后,使用 bigquery 中的数据来计算每个页面(如 GA4)报告。
engagement rate
尝试
根据参与率
的定义:
engagement_rate = engaged_session_nums / session_nums * 100%
我创建了一个数据帧,其中包括 、 、 、 和 是 booling 类型。ga_session_id
page_location
user_pseudo_id
session_engaged
session_engaged
我使用以下代码进行计算:engagement rate
(不知道engaged_session_nums
如何计算)
# the session = ga_session_id + user_pseudo_id
df['pseudo_with_session'] = df['ga_session_id'].astype(str) + df['user_pseudo_id']
# not sure engaged_session_nums how to calculate
df['engaged_session_nums'] = df.groupby(['page_location'])['session_engaged'].transform(lambda x: (x == '1').sum())
# calculate the session nums for each page
df['total_session_nums'] = df.groupby('page_location')['pseudo_with_session'].transform('nunique')
df['engaged_rate'] = df['engaged_session_nums'] / df['total_session_nums'] * 100
结果
结果超过 100%,与 GA4 报告有很大不同。
page_location | engagement_rate |
---|---|
/ | 26.2% |
/zh/cn/ | 117% |
... | ... |
预期(GA4 报告)
page_location | engagement_rate |
---|---|
/ | 75.22% |
/zh/cn/ | 73.34% |
... | ... |
答:
0赞
ali izadi
11/17/2023
#1
计算用户参与的会话数与每个用户的最大会话数之比。
对于session_start事件中的每个user_pseudo_id,求和 session_engaged(如果没有参与的会话,则该值将为 0;如果有参与的会话,则该值将为 1。 从session_start事件中查找每个user_pseudo_id的最大session_number。(它计算特定user_pseudo_id的会话数) 将总session_engaged除以每个用户的最大session_number。 这是你想要的:
WITH session_data AS (
SELECT
user_pseudo_id,
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') AS page_location,
MAX((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_number')) AS max_session_number,
SUM((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_engaged')) AS total_session_engaged
FROM
`dataset_id`
WHERE
event_name = 'session_start'
GROUP BY
user_pseudo_id, page_location
)
SELECT
page_location,
100 - AVG(IF(max_session_number = 0, 0, total_session_engaged / max_session_number * 100)) AS bounce_rate
FROM
session_data
GROUP BY
page_location;
评论
0赞
Xiang
11/20/2023
我希望每个都得到跳出率,但是这个SQL没有.我认为这会得到与我预期的不同的结果。page_location
GROUPBY page_location
0赞
ali izadi
11/20/2023
是的,我编辑了我的上一篇文章,现在这是你所期望的
0赞
Xiang
11/20/2023
感谢您的回复。但是,我尝试使用此代码,结果与 GA4 报告仍然有很大不同。跳出率示例:但是/en/
GA4=25.37%
BQ=0.0%
评论