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-27 到 2030 -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”的正确值对您来说是多少。
我创建了一个 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-27 到 2030 -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”的正确值对您来说是多少。