Snowflake DB 无法识别 CTE 递归查询中使用的 "OPTION (MAXRECURSION 1000)"

Snowflake DB unable to recognize "OPTION (MAXRECURSION 1000)" used in a CTE Recursion Query

我创建了一个 CTE 递归查询,它将显示如下所示的行。下面的格式是所需的输出并且已实现。

这里是查询

with Numbers AS
(
    SELECT DateAdd(day, 1, '2030-05-26') AS DateAdd
  union all
  select DateAdd(day, 1, DateAdd)
  FROM Numbers
    WHERE DateAdd(day, 1, DateAdd) <= '2030-06-05'
),
CT as ( select Product ID, Product Name, Status Flag, Load Date from  
  "Table"."TBL_PRODUCT_CONTROL" where load_date between  '2020-11-06' and '2020-11-06' order by Load Date DESC )
SELECT  Product ID, Product Name, DATE(DateAdd) as Load Date, Status Flag
FROM Numbers  LEFT JOIN CT;

objective 是使用一个名为 TBL_PRODUCT_CONTROL 的 TABLE 并将其字段映射到从 2030-05-27 开始的所有日期] 至 2090-05-26。产品 ID、名称、标志必须重复 'n' 个选定的未来日期。

该查询对于较短的日期范围(如一个月)工作正常,但在尝试加载超过一年左右的日期时失败。雪花不允许我使用上述查询使用超过 100 次递归。唯一可能的方法是通过禁用雪花的递归限制来找到替代方法,或者尝试做更小的日期范围,例如从 2030-05-272030 -06-05,不是那么好用。

因此我尝试将语句 OPTION (MAXRECURSION 1000) 放在 CTE 查询的末尾以允许 1000 次迭代。但是雪花无法识别它并抛出以下错误。

SQL compilation error: syntax error line 13 at position 48 unexpected '1000'.

我怎样才能缓解这个问题?我可以尝试使用哪些其他方法加载日期到 2100-01-01。在这里帮助我。

Snowflake documentation 很清楚,这是在帐户级别设置的,因此您不能在查询中调整它。

您可以使用其他方法生成日期。例如:

select dateadd(day, row_number() over (order by null),
               '2030-05-26')
              ) as date
from table (generator(rowcount => (10000)));

我不知道“10000”的正确值对您来说是多少。