【问题标题】:Not able to use query results inside Javascript UDF in Snowflake无法在 Snowflake 的 Javascript UDF 中使用查询结果
【发布时间】:2019-03-12 18:18:16
【问题描述】:

感谢您的宝贵时间。

我正在处理 Snowflake 数据库中的一个问题。我基本上是在尝试创建一个 Javascript UDF,如下所示 -

CREATE OR REPLACE FUNCTION getACity()   
RETURNS STRING   
LANGUAGE JAVASCRIPT   
AS 
'function getCity() {
var str;
$$  str = select * from CITY where name="Laflin" //This is the problem 
$$
return str;   
}';

如您所见,我试图在我的函数中使用另一个表中的数据,但它没有发生,我收到以下错误 -

JavaScript 编译错误:Uncaught SyntaxError: Unexpected 'str = select * from CITY 处的 getACity 中的标识符 name="Laflin"' 位置 21

我了解我用于在 javascript 函数中执行查询的语法不正确,但我什至不确定在 Snowflake 中是否可行。

我有以下问题 -

  1. 我可以在 javascript UDF 中执行查询并在正在进行的函数中使用结果吗?
  2. 我可以在另一个 Javascript UDF 中调用一个 Javascript UDF 吗?如果这是可能的,它也对我有用。

我已经浏览了 Snowflake documentation,但找不到针对此案例的任何帮助。

再次感谢您的宝贵时间。非常感谢!

【问题讨论】:

    标签: javascript snowflake-cloud-data-platform


    【解决方案1】:

    回答您的问题:

    • Snowflake JavaScript UDF 目前不允许在其中以任何形式执行查询。
    • 您不能在其他 JS UDF 中使用 JS UDF

    您可以为此使用 SQL UDF,但它只能生成一列,例如

    create or replace function getcityid() 
    returns string as '
      select id from CITY where name='Laflin'
    ';
    

    或者使用视图,例如

    create or replace view cities as select * from CITY where name='Laflin'
    

    如果您准确地解释您要达到的目标,这应该会有所帮助。

    另外,请注意 SQL 中的"Laflin" 指的是名为Laflin 的列,而不是具有值Laflin 的字符串。为此使用'Laflin'

    【讨论】:

      【解决方案2】:

      Snowflake JavaScript UDF 不支持运行 sql,但是您可以使用过程来执行此操作,但是过程将只返回一个值/而不是表函数结果。

      有关雪花的详细信息,请参阅文档

      https://docs.snowflake.net/manuals/sql-reference/stored-procedures-overview.html#benefits-of-stored-procedures

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        • 2023-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多