【发布时间】:2018-08-27 15:18:34
【问题描述】:
我想询问您对事件概念的了解。
命中等级 会话级别
在 BigQuery(标准 SQL)中我如何映射这个逻辑,以及
会话 每个会话的事件 独特事件
请有人指导我理解这些概念吗?
totals.visitors 是会话 有时 visitId 被当作 Session
【问题讨论】:
标签: sql google-analytics google-bigquery
我想询问您对事件概念的了解。
命中等级 会话级别
在 BigQuery(标准 SQL)中我如何映射这个逻辑,以及
会话 每个会话的事件 独特事件
请有人指导我理解这些概念吗?
totals.visitors 是会话 有时 visitId 被当作 Session
【问题讨论】:
标签: sql google-analytics google-bigquery
要实现这一点,您需要稍微了解一些不同的概念。第一个是 GA 术语中的“什么是会话”。你可以找到here。会话是命中的集合。命中是以下之一:综合浏览量、事件、社交互动或交易。
现在要了解它在 BQ 模式中是如何表示的,您可以查看 here。 visitId 和 visitorId 将帮助您定义会话(而不是用户)。
然后您可以计算您想要的事件类型的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
我希望这有效!
干杯
【讨论】:
visitorId 已弃用,它应该是fullVisitorId。您的查询不适用于标准 sql。在旧版 sql 中,您将每次点击 hits.type 对会话的所有点击进行求和 totals.hits。您仅按 visitId 分组 - 您应该使用 fullvisitorid 和 visitstarttime 进行 GA 会话。
你可以这样想这些概念:
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 和 Sessions 的关系可以看this answer。
【讨论】: