Как создать дату на основе года, номера недели и дня в bigquery - PullRequest
1 голос
/ 19 сентября 2019

Как сформировать дату из года, номера недели и значения дня в запросе Bigquery.

Например - Год = 2019, номер недели = 37 день = Среда.

Вывод: (2019-09-18)

Год = 2019, номер недели = 36 дней = вторник.

Вывод: (2019-09-10)

Здесь месяц будет рассчитываться исходя из недели, а дата будет основываться на том, когда данныйна этой неделе выпадает день.

Примечание: Bigquery начинает неделю с 0, поэтому, если проверить вышеуказанное значение для сравнения в другой системе, это может быть 38 и 37

1 Ответ

2 голосов
/ 19 сентября 2019

Ниже для BigQuery Standard SQL

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 2019 year, 37 week, 'Wednesday' day UNION ALL
  SELECT 2019, 36, 'Tuesday' 
)
SELECT *, 
  (
    SELECT DATE_ADD(DATE_ADD(DATE(year, 1, 1), INTERVAL week WEEK), INTERVAL hit DAY)         
    FROM UNNEST(GENERATE_ARRAY(0, 6)) hit
    WHERE FORMAT_DATE('%A', DATE_ADD(DATE_ADD(DATE(year, 1, 1), INTERVAL week WEEK), INTERVAL hit DAY)) = day
  ) AS result
FROM `project.dataset.table`  

с результатом как

Row year    week    day         result   
1   2019    37      Wednesday   2019-09-18   
2   2019    36      Tuesday     2019-09-10   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...