BigQuery 中的 GA4 数据:如何复制参与率?

问题描述 投票:0回答:2

在 BigQuery 中,我想复制 Google Analytics 4 统计数据“参与率”,其定义为(更多信息):

参与的会话数/总会话数

需要针对所有平台(iOS / Android / Web)进行计算。在 BigQuery 中,我使用默认的 Google Analytics 4 数据导入表。

我在这里看到了各种与参与相关的参数,甚至是相同的参数具有不同的值类型,这让我有点困惑:

  1. 参数'session_engagged';对于所有 session_start 事件,此参数作为整数类型包含在内。仅当session_engged = 1时添加该参数;所有平台(ios、android、web)的数据。
  2. 参数'session_engagged';对于除 session_start 事件之外的所有事件,此参数作为字符串类型包含在内。该参数包含在 100% 的所有现有(网络)事件中,其值为“0”或“1”;数据仅适用于平台 = 'web'。
  3. 参数“engged_session_event”;该参数(仅)作为整数类型包含在内;该参数仅在 value = 1 时包含在事件中。所有平台的数据(ios、android、web)
  4. 然后还有参数engagement_time_msec;我没有在这篇文章的范围内使用这个参数,因为我仍然怀疑这个参数的有效性(另见之前的文章,其中我质疑参数值)

对于参与率的复制,似乎无法使用上述选项2,因为数据仅适用于Web,我还需要为ios和android进行计算。

按照上面的“选项 1”或“选项 3”:这些选项之间的 BigQuery 输出或多或少相等,差异很小。将两个选项的输出与 GA4 UI 中的输出进行比较,数字不匹配;在 GA4 UI 中,每个平台的价格始终高出 3-4%。

查询以下“选项 1”:

SELECT platform,
SAFE_DIVIDE(COUNT(DISTINCT CASE WHEN (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_engaged') = 1 THEN CONCAT(user_pseudo_id,(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')) END),COUNT(DISTINCT CONCAT(user_pseudo_id,(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')))) AS engagement_rate
FROM `[project id].[dataset id].events_*`
WHERE _table_suffix between '20221008' AND '20221008'
GROUP BY 1

查询以下“选项 3”:

SELECT platform,
SAFE_DIVIDE(COUNT(DISTINCT CASE WHEN (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'engaged_session_event') = 1 THEN CONCAT(user_pseudo_id,(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')) END),COUNT(DISTINCT CONCAT(user_pseudo_id,(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')))) AS engagement_rate
FROM `[project id].[dataset id].events_*`
WHERE _table_suffix between '20221008' AND '20221008'
GROUP BY 1

Google 方面似乎缺少有关参数 session_engged 和engaged_session_event 的明确文档。

我正在寻找有关以下问题的更清晰的信息:

  1. 每个参数的真正含义是什么,每个参数值的上下文是什么以及它们之间有什么区别?
  2. 在这种情况下应该使用哪个参数。
  3. 如何在 BigQuery 中计算“参与率”,并复制 GA4 界面中显示的数字。

有人对此了解更多吗?

提前致谢!

google-bigquery google-analytics google-analytics-4
2个回答
0
投票

就是选项1!

safe_divide(count(distinct case when (select value.string_value from unnest(event_params) where key = 'session_engaged') = '1' then concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id')) end),count(distinct concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id')))) as engagement_rate

0
投票

我用这个

,count(distinct concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id'))) -  count(distinct case when (select value.string_value from unnest(event_params) where key = 'session_engaged') = '1' or  (select value.int_value from unnest(event_params) where key = 'session_engaged') = 1 then  concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id'))  end) as bounces

你知道如何做这个OP吗?我的“session_engged”标志似乎从未完全复制 GA4 UI。

© www.soinside.com 2019 - 2024. All rights reserved.