如何在雪花中的java脚本UDTF中使用DDL语句

时间:2021-05-06 05:10:00

标签: javascript snowflake-cloud-data-platform table-functions

我正在尝试使用 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
    $$;

select * from table(returntable()); - 现在这会返回一个表作为输出。

但是因为我需要执行一些功能,例如条件 if、case 语句、变量、动态创建临时表以及各种典型的业务需求,这就是我想编写 javascript UDTF 的原因。我能够完成所有这些功能,但无法在其中写入最终的 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    
              
        }
        }
    $$;

有人可以帮助我吗。

1 个答案:

答案 0 :(得分:0)

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