GA bigquery 表中 hits.page.pagePath 的会话
Sessions by hits.page.pagePath in GA bigquery tables
我是 bigquery 的新手,很抱歉这是一个新手问题!我有兴趣按页面路径或标题划分 sessions。我知道一个 session 可以包含多个 paths/titles,所以总和会大于总 session。本质上,我想创建一个 'session id' 并计算不同的 sessionids,其中路径如 a 或 b.
从一开始就手动计算总数 session 可能会有所帮助。我试图连接访问 ID 和完整的访问者 ID 以创建一个唯一的访问 ID,但显然这与 sessions 完全不同。有人可以帮助启发我吗?谢谢!
我正在处理我们的 GA 网站数据。架构是 standard in GA 出口。
数据样本
让我们使用样本 BigQuery (London Helmet) data 中的一个例子:
这天有 63 个 session:
SELECT count(*) FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]
其中有多少 session 位于 hits.page.pagePath 之类的 /vests% 或 /helmets%?有多少是只有背心和只有头盔?谢谢!
方法 1,更简单,但您需要在每个字段上重复
显然你可以这样做:
SELECT count(*) FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] WHERE hits.page.pagePath like '/helmets%'
然后对您自己的子字符串进行多次查询(一个带有 '/vests%',一个带有 'helmets%',等等)。
方法 2,工作正常,但不适用于重复字段
如果您想要一个只对字符串的第一部分进行分组的查询,您可以这样做:
Select a, Count(*) FROM (SELECT FIRST(SPLIT(hits.page.pagePath, '/')) as a FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] ) group by a
当我这样做时,它 returns 我接下来的 63 个会话,总数为 63 :)。
方法 3,在 table 上使用 FLATTEN 来单独获得每个命中
由于 "hits" 字段是 repeatable,您需要在查询中使用 FLATTEN:
Select a, Count(*) FROM (SELECT FIRST(SPLIT(hits.page.pagePath, '/')) as a FROM FLATTEN ([google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] , hits)) group by a
这里需要FLATTEN的原因是"hits"字段是repeatable。如果您不展平,它就不会查看您回复中的所有 "hits"。添加 "FLATTEN" 将使您处理一个子 table,其中每个命中都在其自己的行中,因此您可以查询所有这些。
如果您希望通过会话而不是点击来获取(两者都是),请执行以下操作:
Select b, a Count(*) FROM (SELECT FIRST(SPLIT(hits.page.pagePath, '/')) as a, visitID as b, FROM FLATTEN ([google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] , hits)) group by b, a
这里有一个例子,说明如何计算是只有头盔,还是只有背心,还是头盔和背心都有,或者两者都没有:
SELECT
visitID,
has_helmets AND has_vests AS both_helmets_and_vests,
has_helmets AND NOT has_vests AS helmets_only,
NOT has_helmets AND has_vests AS vests_only,
NOT has_helmets AND NOT has_vests AS neither_helmets_nor_vests
FROM (
SELECT
visitId,
SOME(hits.page.pagePath like '/helmets%') WITHIN RECORD AS has_helmets,
SOME(hits.page.pagePath like '/vests%') WITHIN RECORD AS has_vests,
FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]
)
我是 bigquery 的新手,很抱歉这是一个新手问题!我有兴趣按页面路径或标题划分 sessions。我知道一个 session 可以包含多个 paths/titles,所以总和会大于总 session。本质上,我想创建一个 'session id' 并计算不同的 sessionids,其中路径如 a 或 b.
从一开始就手动计算总数 session 可能会有所帮助。我试图连接访问 ID 和完整的访问者 ID 以创建一个唯一的访问 ID,但显然这与 sessions 完全不同。有人可以帮助启发我吗?谢谢!
我正在处理我们的 GA 网站数据。架构是 standard in GA 出口。
数据样本
让我们使用样本 BigQuery (London Helmet) data 中的一个例子:
这天有 63 个 session:
SELECT count(*) FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]
其中有多少 session 位于 hits.page.pagePath 之类的 /vests% 或 /helmets%?有多少是只有背心和只有头盔?谢谢!
方法 1,更简单,但您需要在每个字段上重复
显然你可以这样做:
SELECT count(*) FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] WHERE hits.page.pagePath like '/helmets%'
然后对您自己的子字符串进行多次查询(一个带有 '/vests%',一个带有 'helmets%',等等)。
方法 2,工作正常,但不适用于重复字段
如果您想要一个只对字符串的第一部分进行分组的查询,您可以这样做:
Select a, Count(*) FROM (SELECT FIRST(SPLIT(hits.page.pagePath, '/')) as a FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] ) group by a
当我这样做时,它 returns 我接下来的 63 个会话,总数为 63 :)。
方法 3,在 table 上使用 FLATTEN 来单独获得每个命中
由于 "hits" 字段是 repeatable,您需要在查询中使用 FLATTEN:
Select a, Count(*) FROM (SELECT FIRST(SPLIT(hits.page.pagePath, '/')) as a FROM FLATTEN ([google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] , hits)) group by a
这里需要FLATTEN的原因是"hits"字段是repeatable。如果您不展平,它就不会查看您回复中的所有 "hits"。添加 "FLATTEN" 将使您处理一个子 table,其中每个命中都在其自己的行中,因此您可以查询所有这些。
如果您希望通过会话而不是点击来获取(两者都是),请执行以下操作:
Select b, a Count(*) FROM (SELECT FIRST(SPLIT(hits.page.pagePath, '/')) as a, visitID as b, FROM FLATTEN ([google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910] , hits)) group by b, a
这里有一个例子,说明如何计算是只有头盔,还是只有背心,还是头盔和背心都有,或者两者都没有:
SELECT
visitID,
has_helmets AND has_vests AS both_helmets_and_vests,
has_helmets AND NOT has_vests AS helmets_only,
NOT has_helmets AND has_vests AS vests_only,
NOT has_helmets AND NOT has_vests AS neither_helmets_nor_vests
FROM (
SELECT
visitId,
SOME(hits.page.pagePath like '/helmets%') WITHIN RECORD AS has_helmets,
SOME(hits.page.pagePath like '/vests%') WITHIN RECORD AS has_vests,
FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]
)