【发布时间】:2017-07-21 07:37:51
【问题描述】:
我想计算网站所有访问者的总 timeOnSite(并将其除以 3600,因为它在原始数据中存储为秒),然后我想将其分解为 content_group 和一个名为的自定义变量内容级别。
出现问题是因为 content_group 和 content_level 都嵌套在数组中,而 timeOnSite 是一个总计存储的变量,如果在包含和取消嵌套的查询中使用时会膨胀。 (content_group 是一个普通的 hits.-nested 变量,而 content_level 嵌套在 customDimensions 中,该 customDimensions 嵌套在 hits 中(第二级嵌套变量) (Will 和 Thomas C 很好地解释了为什么这个问题会出现在这个问题 Google Analytics Metrics are inflated when extracting hit level data using BigQuery 中,但我无法将他们的建议应用于 totals.timeOnSite 指标)
#StandardSQL
SELECT
date,
content_group,
content_level,
SUM(sessions) AS sessions,
SUM(sessions2) AS sessions2,
SUM(time_on_site) AS time_on_site
FROM (
SELECT
date AS date,
hits.contentGroup.contentGroup1 AS content_group,
(SELECT MAX(IF(index=51, value, NULL)) FROM UNNEST(hits.customDimensions)) AS content_level,
SUM(totals.visits) AS sessions,
COUNT(DISTINCT CONCAT(cast(visitId AS STRING), fullVisitorId)) AS sessions2,
SUM(totals.timeOnSite)/3600 AS time_on_site
FROM `projectname.123456789.ga_sessions_20170101`,
unnest(hits) AS hits
GROUP BY
iso_date, content_group, content_level
ORDER BY
iso_date, content_group, content_level
)
GROUP BY iso_date, content_group, content_level
ORDER BY iso_date, content_group, content_level
(我使用子查询是因为我计划使用 UNION_ALL 从多个表中提取数据,但我省略了该语法,因为我认为它与问题无关。)
问题:
*是否可以对两个命中进行“本地取消嵌套”。和 hits.customDimensions 以便可以在我的查询中使用 totals.timeOnSite 而不会被夸大?
*是否可以像我在会话和会话2中所做的那样为现场时间制定解决方法?
*这个问题是否有第三种隐藏的解决方案?
【问题讨论】:
标签: google-analytics google-bigquery