Проблема выборки с запросом в BigQuery (стандартный SQL) - PullRequest
0 голосов
/ 30 октября 2018

Я выполняю запрос в формате ниже

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

Выше результат2

Здесь 2018-07-19 - дата запуска.

Поскольку у меня есть данные до 2018-10-19 , я хочу выполнить запрос с более поздней даты, чтобы оптимизировать стоимость и потребление данных запросом ... но кое-как, Я получаю неверные данные.

Но, если я выполню тот же запрос с даты запуска, я получу правильные результаты.

Я имею в виду NewUsers from result1 для соответствующих дат (например, дата> = 2018-10-19) больше, чем NewUsers from result2.

Не знаю, где я что-то упускаю.

Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

0 голосов
/ 30 октября 2018

Я думаю - это из-за использования 'MIN (date)' - Вы видите сдвиг в счетчиках, потому что вы ограничивали даты, чтобы те пользователи, которые впервые были замечены в более ранние даты - теперь те же самые "старые" пользователи учитываются за последние дни - таким образом путаница

...