SQL UDFs 故障排除¶
本主题提供有关 SQL UDFs(用户定义函数)的故障排除信息。
故障排除¶
技巧¶
如果在 掩码策略 中使用 SQL UDF,请确保列的数据类型 UDF 与掩码策略匹配。
错误消息:Unsupported subquery type¶
- 原因:
如果 UDF 包含查询表达式,则 UDF 可以充当 子查询。如果向子查询传递了列名,则该子查询可以充当 相关子查询。如果相关子查询违反了 Snowflake 的相关子查询规则,用户将收到错误消息
Unsupported subquery type。以下示例展示了一个无效的相关子查询,以及 UDF 如何像类似的无效相关子查询一样工作。创建一对表并将数据加载到其中:
以下 SQL 语句包含未遵守 Snowflake 规则的相关子查询。此代码会导致
Unsupported subquery type错误:以下代码创建并调用类似子查询的 UDF,这会创建类似于上面所示的相关子查询:
- 解决方案 #1:
如果 UDF 包含查询表达式,则仅以遵守 子查询 规则的方式来调用 UDF。
例如,以下语句使用常量而不是列名称来调用 UDF,因此,UDF 不会像相关子查询那样工作:
- 解决方案 #2:
在某些情况下,可以重写 UDF,以通过另一种方式实现同一个目标。如果可以静态地确定相关子查询返回一行,则允许运行该子查询。以下 UDF 使用聚合函数,因此仅返回一行: