【问题标题】:Snowflake UDF returns "Unknown user-defined function" For Existing UDFSnowflake UDF 为现有 UDF 返回“未知的用户定义函数”
【发布时间】:2022-11-29 04:20:59
【问题描述】:
我有一个可以在我的 snowflakecomputing.com 控制台中调用的 UDF。
SELECT DECODE_UTF8('some string')
效果很好,直到我尝试从 Python 脚本以编程方式调用它。我收到这个...
snowflake.connector.errors.ProgrammingError: 002141 (42601):
or:
Unknown user-defined function CS_QA.CS_ANALYTICS.DECODE_UTF8
我什至完全限定它(即 db.schema.function)
谁能建议修复?谢谢你。
【问题讨论】:
标签:
python
snowflake-cloud-data-platform
user-defined-functions
【解决方案1】:
很可能用于从 Python 连接的用户(和分配的角色)无权访问该 UDF。这个假设可以通过使用 INFORMATION_SCHEMA.FUNCTIONS 来验证:
该视图仅显示会话的当前角色已被授予访问权限的对象。
SELECT *
FROM CS_QA.INFORMATION_SCHEMA.FUNCTIONS;
另一种可能性是完全限定名称的一部分区分大小写,需要用 " 包装
SELECT "CS_QA"."CS_ANALYTICS".DECODE_UTF8('some string');
【解决方案2】:
我相信,您可能必须先切换到定义函数的数据库。
使用数据库用户定义;
SELECT DECODE_UTF8('一些字符串')
那应该有效。