0

我正在尝试使用 DDL 语句,例如从 java 脚本 UDTF 中的表中选择列。我能够在普通 UDTF 中实现如下

create function returntable()
    returns table(COL1 varchar(100),COL2 VARCHAR(100),COL3 NUMBER(10,0))
    as
    $$
        select COL1,COL2,COL3 from PUBLIC.MYTABLE
    $$;

从表中选择*(returntable());- 现在这会返回一个表格作为输出。

但是因为我需要执行一些功能,例如条件 if、case 语句、变量、动态创建临时表以及各种典型的业务需求,这就是我想编写 javascript UDTF 的原因。我能够完成所有这些功能,但无法在其中编写 final select * from table,以便在经过一些转换后将我的表作为输出返回。

所以,为了简单起见,我正在尝试实现这样的目标

    create or replace function RETURN_TABLE()
    returns table (COL1 varchar(100),COL2 VARCHAR(100),COL3 NUMBER(10,0))
    language javascript
    as
    $$
    {
      processRow: function (row, rowWriter, context){

      /** SOME TRANSORMATIONS USING VARIABLES, TEMP TABLES, IF COMES HERE **/

      rowWriter.writeRow({COL1: ColumnValesfromSelectQuery,COL2: ColumnValesfromSelectQuery,COL3: ColumnValesfromSelectQuery});
      //select COL1,COL2,COL3 from PUBLIC.MYTABLE    
              
        }
        }
    $$;

有人可以帮我解决这个问题。

4

1 回答 1

0

根据 Snowflake 文档,UDF 不应该有任何 DDL 语句,当您用 JavaScript 编写它时,它不会在编译时验证,而是在运行时验证。

于 2021-05-06T05:20:08.217 回答