BigQuery会话和命中级别的理解

时间:2018-08-27 15:18:34

标签: sql google-analytics google-bigquery

我想问一下您对活动概念的了解。

击中等级 会话级别

在BigQuery(标准SQL)中,如何映射这种逻辑,以及

会话 每节活动 独特事件

请有人可以指导我理解这些概念吗?

totals.visitors是会话 某个时候 visitId被视为会话

2 个答案:

答案 0 :(得分:0)

要实现这一点,您需要努力解决一些不同的概念。第一个是GA术语中的“会话是什么”。您可以找到here。会话是命中的集合。点击是以下内容之一:浏览量,事件,社交互动或交易。

现在要查看BQ模式中的表示形式,您可以查看herevisitIdvisitorId将帮助您定义会话(相对于用户)。

然后,您可以计算totals.hits的数量,它们是您想要的类型的事件。

它可能看起来像:

select visitId, 
sum(case when hits.type = "EVENT" then totals.hits else 0) from 
dataset.table_* group by 1

应该可以使您获得概述。如果您需要对事件详细信息进行切片和切块(即hits.eventInfo.*),那么我建议您对所有visitId和所有相关事件及其各自的visitId进行查询

我希望那行得通!

欢呼

答案 1 :(得分:0)

您可以想到以下这些概念:

  • 每一行都是一个会话
  • 从技术上讲,具有totals.visits = 1的每一行都是有效的会话
  • hits是一个包含结构的数组,这些结构包含有关每次匹配的信息

您可以在数组上编写子查询-基本上将它们视为表。我建议研究Working with Arrays,并在可能的情况下将每个练习直接应用/转移到hits

会话级子查询示例

SELECT
  fullvisitorid,
  visitStartTime,
  (SELECT SUM(IF(type='EVENT',1,0)) FROM UNNEST(hits)) events,
  (SELECT COUNT(DISTINCT CONCAT(eventInfo.eventCategory,eventInfo.eventAction,eventInfo.eventLabel) ) 
    FROM UNNEST(hits) WHERE type='EVENT') uniqueEvents,
  (SELECT SUM(IF(type='PAGE',1,0)) FROM UNNEST(hits)) pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`
WHERE
  totals.visits=1
LIMIT
  1000

展平到命中级别的示例

如果您将连接数组与其父行交叉联接,也有可能使用数组中的字段进行分组

SELECT
  h.type,
  COUNT(1) hits
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_20170801` AS t CROSS JOIN t.hits AS h
WHERE
  totals.visits=1
GROUP BY 
  1

关于visitId和Session之间的关系,您可以阅读this answer