Как выполнить запрос, чтобы получить результаты за последние 12 месяцев (BigQuery) - PullRequest
0 голосов
/ 01 октября 2018

Я хочу получить записи за последние 12 месяцев для определенного идентификатора в таблице Big Query.Я извлек месяц и год как отдельные столбцы из исходного столбца отметок времени.Я пытался использовать date_add () и date_diff (), но я получаю некоторые ошибки.Мой набор данных выглядит так:

Month Year MonthName    ID
8     2018   August      1
9     2018   September   2
9     2017   September   3

Как мне этого добиться?

Ответы [ 3 ]

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

Я извлек месяц и год в виде отдельных столбцов из исходного столбца отметки времени

Я рекомендую выполнить фильтрацию по 12 месяцам на основе исходного столбца отметки времени.
Предполагая, что он назван ts - ниже для BigQuery Standard SQL

WHERE DATE(ts) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) AND CURRENT_DATE() 

, например

#standardSQL
SELECT ts, id
FROM `project.dataset.table`
WHERE id = 1
AND DATE(ts) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) AND CURRENT_DATE() 
0 голосов
/ 12 августа 2019

timestamp предполагается в качестве стандартного именования меток времени для вашей таблицы BQ в качестве поля идентификатора времени.Таким образом, вы можете фильтровать, как показано ниже, чтобы получить только данные за последние 12 месяцев:

WHERE DATE(TIMESTAMP_MILLIS(timestamp)) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) and CURRENT_DATE()
0 голосов
/ 01 октября 2018

Один из методов заключается в преобразовании года / месяца в месяцы с некоторой даты.Затем сделайте то же самое с текущей датой:

where year * 12 + month >= extract(year from current_date) * 12 + extract(month from current_date) - 12

Это предполагает, что у вас нет будущих данных.То же самое относится и к будущим датам (используя <, а не> =).

...