【发布时间】:2019-09-25 14:54:55
【问题描述】:
纽比在这里。我试图找出我们网站上的用户从一个页面(获取报价)到另一个页面(申请)所花费的平均时间。在 BigQuery 中使用 Google Analytics 数据。我想按频道划分,但最初我只是想为每个用户获取时间。
我尝试过内连接和左连接,但两者都返回 table*table 的结果数。单独运行时,两个子查询看起来都是正确的(引号返回 925,应用程序返回 117),但是当加入它们时,我得到了重复。
注释掉的位用于最终查询,可以忽略,只包括上下文。
-- SELECT
-- channelGrouping,
-- ROUND(AVG(timeQ2A/60000),2) AS avgMinsQ2A
-- FROM (
SELECT
CONCAT(CAST(visitId AS STRING),'_',fullVisitorId) AS sessionId,
apps.channelGrouping,
(quote.quoteTime) as quoteTime,
(CAST(hits.time AS INT64)) AS appTime,
(CAST(hits.time AS INT64) - (quote.quoteTime)) AS timeQ2A
FROM
`project.dataset.ga_sessions_20190923` AS apps,
UNNEST(hits) AS hits
INNER JOIN (
SELECT
MIN(CAST(hits.time AS INT64)) AS quoteTime,
CONCAT(CAST(visitId AS STRING),'_',fullVisitorId) AS sessionId
FROM
`project.dataset.ga_sessions_20190923`,
UNNEST(hits) AS hits
WHERE
hits.type = "PAGE"
AND hits.page.pagePath = "/get-a-quote/"
AND hits.time > 0
GROUP BY
2) AS quote
ON
sessionId = quote.sessionId
WHERE
hits.type = "PAGE"
AND hits.page.pagePath = "/application-complete/"
GROUP BY
1,
2,3,4
ORDER BY 1,2,3
-- )
-- GROUP BY
-- 1
-- ORDER BY
-- 2 DESC
我希望只获得 117 行(所有已申请的用户都将在报价表中,因此内部和左侧应该相同),但我得到 108k。
非常感谢任何帮助。
【问题讨论】:
标签: sql google-analytics google-cloud-platform google-bigquery