Памятка по распространенным выражениям даты и времени BigQuery
Сегодня утром я только начал работать над проектом прогнозирования временных рядов. Первым шагом в этом проекте, как и в большинстве задач в области науки о данных, был сбор данных. Это означало относительно простой SQL-запрос в Google BigQuery. Я снова обнаружил, что гуглил, как извлечь год из временной метки, и пролистывал документацию, чтобы найти правильную функцию, и понял, что мне нужно где-то это записать. Я пишу это в блоге, чтобы мне было к чему вернуться, и, надеюсь, это также может помочь другим. Обратите внимание, что все выражения основаны на стандартном SQL.
Даты
Части даты
Список всех частей даты, которые можно использовать в выражениях, перечисленных ниже:
DAYOFWEEK (returns 1-7 Sunday is 1) DAY DAYOFYEAR (0-365) WEEK (week of year 0-53, week begins on Sunday) WEEK(<chosen weekday>) (week of year begins on your chosen day e.g. SUNDAY) ISOWEEK (ISO 8601 week number, week begins on Monday) MONTH QUARTER (1-4) YEAR (ISO 8601 year number)
Извлечь часть даты
EXTRACT(part FROM date_expression)
Example: EXTRACT(YEAR FROM 2019-04-01)
Output: 2019
Постройте дату из целых чисел
DATE(year, month, day)
Example: DATE(2019, 04, 01)
Output: 2019-04-01
Сложение и вычитание из дат
DATE_ADD(date_expression, INTERVAL INT64_expr date_part)
Example: DATE_ADD('2019-04-01', INTERVAL 1 DAY) Output: 2019-04-02DATE_SUB(date_expression, INTERVAL INT64_expr date_part)
Example: DATE_SUB('2019-04-01', INTERVAL 1 DAY) Output: 2019-03-31 Example use case - dynamic dates: where my_date between DATE_SUB(current_date, INTERVAL 7 DAY) and DATE_SUB(current_date, INTERVAL 1 DAY)
Разница между двумя датами
DATE_DIFF(date_expression, date_expression, date_part)
Example: DATE_DIFF(2019-02-02, 2019-02-01, DAY)
Output: 1
Укажите степень детализации даты
DATE_TRUNC(date_expression, date_part)
Example: DATE_TRUNC(2019-04-12, WEEK)
Output: 2019-04-07
Раз
Части времени
MICROSECOND MILLISECOND SECOND MINUTE HOUR
Создайте объект datetime из целых чисел
DATETIME(year, month, day, hour, minute, second)
DATETIME(date_expression, time_expression)
DATETIME(timestamp_expression [, timezone])
Example: DATETIME(2019, 04, 01, 11, 55, 00)
Output: 2019-04-01 11:55:00
Сложить и вычесть время
DATETIME_ADD(datetime_expression, INTERVAL INT64_expr part)
Example: DATETIME_ADD('2019-04-01 11:55:00', INTERVAL 1 MINUTE) Output: 2019-04-01 11:56:00DATETIME_SUB(datetime_expression, INTERVAL INT64_expr part)
Example: DATETIME_SUB('2019-04-01 11:55:00', INTERVAL 1 MINUTE) Output: 2019-04-01 11:54:00
Разница между двумя временами
DATETIME_DIFF(datetime_expression, datetime_expression, part)
Example: DATETIME_DIFF('2019-04-01 11:56:00', '2019-04-01 11:55:00', MINUTE)
Output: 1
Укажите степень детализации времени
DATETIME_TRUNC(datetime_expression, part)
Example: DATETIME_TRUNC('2019-04-01 11:55:00', HOUR)
Output: 2019-04-01 11:00:00
Это ни в коем случае не исчерпывающее руководство по выражениям даты и времени в BigQuery. Он предназначен только для краткого ознакомления с теми, которые я использую чаще всего. Более подробное руководство можно найти в документации Google BigQuery.