BigQuery 会话和命中级别的理解
Posted
技术标签:
【中文标题】BigQuery 会话和命中级别的理解【英文标题】:BigQuery Session & Hit level understanding 【发布时间】:2018-08-27 15:18:34 【问题描述】:我想询问您对事件概念的了解。
命中等级 会话级别
在 BigQuery(标准 SQL)中我如何映射这个逻辑,以及
会话 每个会话的事件 独特事件
请有人指导我理解这些概念吗?
totals.visitors 是会话 有时 visitId 被当作 Session
【问题讨论】:
【参考方案1】:要实现这一点,您需要稍微了解一些不同的概念。第一个是 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 会话。【参考方案2】:
你可以这样想这些概念:
每一行都是一个会话 从技术上讲,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 和 Sessions 的关系可以看this answer。
【讨论】:
以上是关于BigQuery 会话和命中级别的理解的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 在同一查询中展平 GA 会话和命中级别字段
sql [BigQuery - Facebook产品目录]查询para obtenerelcatálogodeproductos de Kichink。 #facebook #bigqu