Sql 我怎样才能反复地;插入到{table}中,从";中选择;。。。。一系列的日期?

Sql 我怎样才能反复地;插入到{table}中,从";中选择;。。。。一系列的日期?,sql,snowflake-cloud-data-platform,data-vault,point-in-time,Sql,Snowflake Cloud Data Platform,Data Vault,Point In Time,我正在构建一个数据仓库时间点(TPIT)表。为此,我需要遍历日期列表,并为每个日期插入行。以下是一个日期的SQL'2020-08-19'。我需要重复从2000年到今天的所有日期 在Snowflake中使用SQL实现此功能的最佳方法是什么 我可以用Python实现这一点,但我一直在寻找一种只有SQL才能实现这一点的方法,这样它就可以嵌入到每天运行的SQL刷新脚本中 谢谢 INSERT INTO MEMBERSHIP_TPIT SELECT MEMBERSHIP_HUB.ME

我正在构建一个数据仓库时间点(TPIT)表。为此,我需要遍历日期列表,并为每个日期插入行。以下是一个日期的SQL'2020-08-19'。我需要重复从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'));

您可以将下面的查询与with子句一起使用,并在From子句中将日期范围作为表格引用,并将我的日期替换为“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

我可以想象不同的方法让你考虑。1) 使用a来计算作为CTE所需的一系列日期,然后以某种方式将它们连接到主查询中;2) 您所描述的似乎是dbt中增量物化的一个很好的用例:在我看来,将dbt用于单个任务可能会被激怒,但在我看来,您正在处理某种分析项目,可能值得进行一些调查;3) 使用脚本、Python或similar@larsen,有关于如何使用CTE的示例代码吗?