雪花 UDF 调用 "Show Shares" 函数

Snowflake UDF calling "Show Shares" function

是否可以在 Snowflake 的 FUNCTION 或 PROCEDURE 中发出 "Show Shares" 函数调用?由于信息模式中没有元数据对象来查询有关共享的信息,我们正在寻找一种方法来创建 UDF 以获取此元数据并对结果进行操作。

尝试执行以下代码时:

CREATE OR REPLACE PROCEDURE get_share_metadata()
RETURNS VARIANT
LANGUAGE javascript
AS
$$
    var x=snowflake.execute( { sqlText: "SHOW SHARES" } );
$$
;
call get_share_metadata();

返回以下错误: 存储过程中的执行错误GET_SHARE_METADATA:存储过程执行错误:不支持的语句类型'SHOW SHARE'。在Snowflake.execute,第2行位置20

我不确定函数与存储过程的关系,但根据您要执行的操作,您是否研究过仅使用 RESULT_SCAN?

SHOW SHARES;
SELECT * FROM TABLE(RESULT_SCAN(last_query_id()));

您可以在存储过程中执行 SHOW .... 命令 ONLY 如果过程设置为 EXECUTE AS来电者。

作为调用者执行时,执行过程的角色 必须 具有在过程中执行命令的权限。

示例:

  • SHOW SHARES 只能由 ACCOUNTADMIN 角色访问(从技术上讲,任何角色都可以 运行 命令成功,但结果仅限于帐户管理员)。
  • SHOW USERS 只能使用对该帐户具有 MANAGE GRANTS 权限的任何角色成功执行。

文档:

https://docs.snowflake.net/manuals/sql-reference/stored-procedures-usage.html#label-owners-rights-stored-procedures