无法评估 Snowflake UDF 不支持的子查询类型

Snowflake UDF Unsupported subquery type cannot be evaluated

提问人:Vector 提问时间:9/10/2023 最后编辑:demirciogluVector 更新时间:10/18/2023 访问量:67

问:

#Function 雪花数据库。

snowflake 数据库中以下函数中的 NOT 运算符导致 UDF 返回错误。根据文档,不应支持 NOT。可能的解决方案或解决方法可以避免此错误。

CREATE OR REPLACE FUNCTION udf_page_category(p_url string)
RETURNS string
as
$$
SELECT min_by(page_category, config_rank) 
FROM config_page_category 
WHERE 1=1 
and regexp_like(p_url, )
AND (page_category_not_regex IS NULL 
OR NOT regexp_like(p_url, page_category_not_regex)
)
$$ 

-## 下面的查询返回错误 无法评估不支持的子查询类型

select udf_page_category( url ) FROM tablename e 
where url like '%zdfdsfsa%'

发生业务表

专栏A 网址
第一 ABC&Welcome
第二 xyz$谢谢

Config_page_category表

page_category_regex page_category_not_regex 输出1
.美国广播公司。 输出1
.xyz。 谢谢 输出2
.yyz。 需求者 输出3

函数中的 NOT 运算符会导致 UDF 在 snowflake 数据库中返回错误。 第一列是page_category_regex 第二列是page_category_not_regex

函数应执行以下操作。输入参数是 url,正则表达式位于config_page_category查找表中

  1. URL 应与第一列中的正则表达式匹配,如果第二列为 null,则函数应返回 output1
  2. url 应匹配第一列或应匹配第二列,然后函数应返回 output2
  3. url 应匹配第一列,不应匹配第二列,然后函数应返回 output3

上面的第三个条件导致 NOT 出现问题。可能的解决方案或解决方法是什么 避免此错误。

sql 函数 snowflake-cloud-data-platform 用户定义函数

评论

0赞 ADITYA PAWAR 9/10/2023
你得到什么错误。同时给出一些示例数据输入和预期输出
0赞 Simeon Pilgrim 9/10/2023
经典的答案是将其隐藏到正确的连接中,然后进行min_by,现在您已经有了答案。虽然数据库应该能够为您做到这一点。优化器以太无法看到如何安全地进行联接,或者它没有其已知转换集中的模式。
0赞 Razzer 9/10/2023
请澄清您的具体问题或提供其他详细信息,以准确说明您的需求。正如目前所写的那样,很难确切地说出你在问什么。
0赞 NickW 9/11/2023
在 SQL 中,您引用了一个名为 config_rank 的列,但这不在您的表定义中。此外,“regexp_like(p_url, )”似乎是一个错别字,因为它缺少第二个参数

答: 暂无答案