运行递归查询时如何打破雪花中的循环
Posted
技术标签:
【中文标题】运行递归查询时如何打破雪花中的循环【英文标题】:How to break cycles in Snowflake when running recursive queries 【发布时间】:2020-04-03 14:44:42 【问题描述】:我正在使用 CONNECT BY 子句在雪花中运行分层查询,格式为
SELECT
CONNECT_BY_ROOT field_a
, field_a
, SYS_CONNECT_BY_PATH (field_b, '/') AS path_
FROM my_table
START WITH field_a
CONNECT BY PRIOR field_b = field_a;
问题是我的表有一些循环,并且雪花在 100 次迭代后停止或从未完成查询。 有没有像 Oracle 那样用 NOCYCLE 子句打破循环?
【问题讨论】:
【参考方案1】:Snowflake 文档通常非常好。我建议先看看那里。此特定主题包含在此处的 CONNECT BY 函数文档中:
https://docs.snowflake.com/en/sql-reference/constructs/connect-by.html#usage-notes
很遗憾,看来迭代限制是帮助您解决此问题的唯一方法,因为目前不支持 NOCYCLE。
【讨论】:
请问您是否知道 Snowflake 是否计划很快支持NOCYCLE
?以上是关于运行递归查询时如何打破雪花中的循环的主要内容,如果未能解决你的问题,请参考以下文章
如何打破递归函数内的 for 循环并在 Javascript 中返回?