【发布时间】:2018-10-30 18:15:06
【问题描述】:
我一直在运行以下格式的查询
SELECT b.date as Date,COUNT(DISTINCT user_id) AS NewUsers FROM (
SELECT user_id,MIN(date) as min_date
FROM tableA
WHERE date >= '2018-10-10'
AND filter1 = "XYZ"
GROUP BY ) a
CROSS JOIN (
SELECT date FROM tableB
WHERE date >= '2018-10-19' AND date <= CURRENT_DATE()
GROUP BY 1) b
WHERE a.date >= DATE_SUB(b.date, INTERVAL 6 DAY) AND a.date <= b.date
GROUP BY 1
假设上面是result1
SELECT b.date as Date,COUNT(DISTINCT user_id) AS NewUsers FROM (
SELECT user_id,MIN(date) as min_date
FROM tableA
WHERE date >= '2018-07-10'
AND filter1 = "XYZ"
GROUP BY ) a
CROSS JOIN (
SELECT date FROM tableB
WHERE date >= '2018-07-19' AND date <= CURRENT_DATE()
GROUP BY 1) b
WHERE a.date >= DATE_SUB(b.date, INTERVAL 6 DAY) AND a.date <= b.date
GROUP BY 1
以上是result2
这里2018-07-19是发布日期。
由于我有直到 2018-10-19 的数据,我想从以后运行查询以优化查询的成本和数据消耗....但是有些方法,我得到的数据不正确。
但是,如果我从发布日期开始运行相同的查询,我会得到正确的结果。
我的意思是对应日期的 NewUsers from result1(比如日期 >= 2018-10-19)比 NewUsers from result2 多。
不知道,我错过了什么。
任何帮助将不胜感激。
谢谢
【问题讨论】:
标签: google-bigquery bigquery-standard-sql