Как я могу итеративно "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