0

我正在构建一个 Data Vault 时间点 (TPIT) 表。为此,我需要遍历日期列表并为每个日期插入行。这是一个 Date '2020-08-19'的 SQL 。我需要遍历从 2000 年到今天的所有日期。

在 Snowflake 中使用 SQL 实现这一点的最佳方法是什么?

我可以在 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'));
4

1 回答 1

-2

您可以将以下查询与 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
于 2020-05-21T16:04:34.193 回答