【发布时间】:2018-06-18 16:00:09
【问题描述】:
我正在使用 BigQuery 中的 Google Analytics(分析)数据,希望将上次访问和首次访问的日期汇总到 UserID 级别,但是我的代码目前正在返回该用户的最大访问日期,只要他们在选定的日期范围,因为我使用的是MAX()。
如果我删除MAX(),我必须通过DATE 删除GROUP,这是我不想要的,因为这样会为每个用户ID 返回多行。
这是我的代码,它返回每个用户的一系列日期 - last_visit_date 当前正在工作,因为它是唯一可以简单查看用户活动的最后日期的日期。关于如何让last_ord_date 选择订单实际发生的日期的任何建议?
SELECT
customDimension.value AS UserID,
# Last order date
IF(COUNT(DISTINCT hits.transaction.transactionId) > 0,
(MAX(DATE)),
"unknown") AS last_ord_date,
# first visit date
IF(SUM(totals.newvisits) IS NOT NULL,
(MAX(DATE)),
"unknown") AS first_visit_date,
# last visit date
MAX(DATE) AS last_visit_date,
# first order date
IF(COUNT(DISTINCT hits.transaction.transactionId) > 0,
(MIN(DATE)),
"unknown") AS first_ord_date
FROM
`XXX.XXX.ga_sessions_20*` AS t
CROSS JOIN
UNNEST (hits) AS hits
CROSS JOIN
UNNEST(t.customdimensions) AS customDimension
CROSS JOIN
UNNEST(hits.product) AS hits_product
WHERE
parse_DATE('%y%m%d',
_table_suffix) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 day)
AND DATE_SUB(CURRENT_DATE(), INTERVAL 1 day)
AND customDimension.index = 2
AND customDimension.value NOT LIKE "true"
AND customDimension.value NOT LIKE "false"
AND customDimension.value NOT LIKE "undefined"
AND customDimension.value IS NOT NULL
GROUP BY
UserID
【问题讨论】:
-
数组可能是一种糟糕的存储方式。示例数据和期望的结果将帮助其他人了解您想要做什么。
-
通常在公共论坛上公开真实的项目ID并不是一件好事-您可能可以放置占位符
标签: sql google-bigquery