GA bigquery表中hits.page.pagePath的会话

时间:2015-02-27 18:15:20

标签: google-analytics google-bigquery

我是bigquery的新手,很抱歉,如果这是一个菜鸟问题!我有兴趣按页面路径或标题分发会话。我理解一个会话可以包含多个路径/标题,因此总和将大于总会话数。从本质上讲,我想创建一个“会话ID”,并对其中的路径如a或b进行不同的会计。

从一开始就开始手动计算总会话可能会有所帮助。我尝试连接访问id和完整访问者ID以创建唯一的访问ID,但显然这与会话完全不同。有人可以帮助启发我吗?谢谢!

我正在使用GA网站数据。 Schema是standard in GA导出。

数据样本

让我们使用示例BigQuery (London Helmet) data中的示例:

今天有63场会议:

SELECT count(*) FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]

这些会话中有多少是hits.page.pagePath喜欢/ vests%或/ helmets%?只有多少背心才对着头盔呢?谢谢!

2 个答案:

答案 0 :(得分:5)

这是一个如何计算是否只有头盔,或只有背心或两个头盔和背心或两者都没有的例子:

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] 
)

答案 1 :(得分:2)

方式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

当我这样做时,它返回以下63个会话,总计数为63:)。

方式3,使用桌面上的FLATTEN分别获得每次点击

由于“点击”字段是可重复的,因此您需要在查询中使用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的原因是“命中”字段是可重复的。如果你没有展平,它将不会查看你的回复中的所有“点击”。添加“FLATTEN”将使您处理每个匹配在其自己行中的子表,因此您可以查询所有这些。

如果你想通过会话而不是点击,(它将两者都是),请执行以下操作:

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