Как я могу итеративно "INSERT INTO {table} SELECT FROM".... для диапазона дат?

Я работаю над созданием таблицы временной точки хранилища данных (TPIT). Для этого мне нужно перебрать список дат и вставить строки для каждой даты. Вот SQL для одной даты "2020-08-19". Мне нужно перебрать все даты с 2000 года по сегодняшний день.

Как лучше всего реализовать это с помощью SQL в Snowflake?

Я могу сделать это в Python, но я искал единственный способ сделать это с помощью SQL, чтобы его можно было встроить в сценарий обновления SQL, который выполняется ежедневно.

Спасибо.

INSERT
    INTO
    MEMBERSHIP_TPIT
SELECT
    MEMBERSHIP_HUB.MEMBERSHIP_HASHKEY AS MEMBERSHIP_HASHKEY,
    '2020-08-19' AS SNAPSHOT_DATE,
    MEMBERSHIP_SAT.LOAD_DATE AS LOAD_DATE
FROM
    MEMBERSHIP_HUB INNER MEMBERSHIP_SAT ON
    (MEMBERSHIP_HUB.MEMBERSHIP_HASHKEY = MEMBERSHIP_SAT.MEMBERSHIP_HASHKEY
    AND '2020-08-19' BETWEEN START_DATE AND COALESCE(END_DATE,
    '9999-12-31'));

1 ответ

Вы можете использовать приведенный ниже запрос вместе с предложением WITH и указать DATE_RANGE как таблицу в предложении From и указать MY_DATE вместо "2020-08-19".

WITH DATE_RANGE AS (
  SELECT DATEADD(DAY, -1*SEQ4(), CURRENT_DATE()) AS MY_DATE
    FROM TABLE(GENERATOR(ROWCOUNT => (365000) )) where my_date >='01-Jan-2000'
 ) 
SELECT * FROM DATE_RANGE