BigQuery UNNEST 重复值
Posted
技术标签:
【中文标题】BigQuery UNNEST 重复值【英文标题】:BigQuery UNNEST duplicates values 【发布时间】:2018-06-27 16:00:57 【问题描述】:我正在尝试创建 Google Analytics(分析)数据的摘要:按小时和来源属性(在我的例子中命名为服务)的会话、交易和转化率。我正在从汇总属性数据集中查询名为“ga_realtime_view”的表。它是从“ga_realtime_sessions_”表创建的虚拟视图,允许我们使用标准 SQL。
为了拥有服务栏,我必须使用 UNNEST 操作。但是,当我这样做时,它会复制所有会话和事务值。
这里是查询:
SELECT
EXTRACT(HOUR FROM TIMESTAMP_SECONDS(visitStartTime) AT TIME ZONE 'Europe/Paris') AS Hour,
hits.sourcePropertyInfo.sourcePropertyDisplayName AS service,
IFNULL(SUM(totals.visits),0) as sessions,
IFNULL(SUM(totals.transactions),0) as transactions,
IFNULL(ROUND((SUM(totals.transactions)/SUM(totals.visits))*100,2),0) AS conversionRate
FROM `XX.ga_realtime_view` AS session, UNNEST(session.hits) AS hits
GROUP BY
Hour,
service
ORDER BY
Hour
我知道还有其他关于此重复问题的主题,但我似乎无法找到我的情况的解决方案。
感谢您的帮助
【问题讨论】:
【参考方案1】:听起来您想避免将表格与数组连接(通过, UNNEST(session.hits)
),因为这会导致复制所有总数。但是,不清楚您想对服务名称做什么:如果有多个,您是否要返回所有这些名称的数组?这是一次方法:
SELECT
EXTRACT(HOUR FROM TIMESTAMP_SECONDS(visitStartTime) AT TIME ZONE 'Europe/Paris') AS Hour,
ARRAY(
SELECT sourcePropertyInfo.sourcePropertyDisplayName
FROM UNNEST(session.hits) AS hits
) AS service,
IFNULL(SUM(totals.visits),0) as sessions,
IFNULL(SUM(totals.transactions),0) as transactions,
IFNULL(ROUND((SUM(totals.transactions)/SUM(totals.visits))*100,2),0) AS conversionRate
FROM `XX.ga_realtime_view` AS session
GROUP BY
Hour,
service
ORDER BY
Hour
不过,正如您会注意到的,查询现在给出了一个错误,您无法按数组进行分组。如果您希望在点击中只有一种类型的服务,您可以只提取一种:
SELECT
EXTRACT(HOUR FROM TIMESTAMP_SECONDS(visitStartTime) AT TIME ZONE 'Europe/Paris') AS Hour,
(SELECT MAX(sourcePropertyInfo.sourcePropertyDisplayName)
FROM UNNEST(session.hits) AS hits) AS service,
IFNULL(SUM(totals.visits),0) as sessions,
IFNULL(SUM(totals.transactions),0) as transactions,
IFNULL(ROUND((SUM(totals.transactions)/SUM(totals.visits))*100,2),0) AS conversionRate
FROM `XX.ga_realtime_view` AS session
GROUP BY
Hour,
service
ORDER BY
Hour
【讨论】:
谢谢。实际上服务=来源属性=网站。我们有不同的网站,每个网站都有自己的 GA 属性。所以我想要做的是按小时和网站获得交易和会话的数量。是不是清楚一点? 无法编辑我的评论,但您的解决方案非常适合我想做的事情!再次感谢以上是关于BigQuery UNNEST 重复值的主要内容,如果未能解决你的问题,请参考以下文章
查看 Google Analytics 时如何 UNNEST 和展平 BigQuery 中的所有记录