我正在尝试使用DDL语句,比如在java脚本UDTF中使用select columns from tables。我可以像下面这样在普通的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 ( returns table());-现在这将返回一个表作为输出。
但由于我需要做一些功能,如条件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
}
}
$$;有人能帮帮我吗。
发布于 2021-05-06 13:20:08
根据Snowflake文档,UDF不应该有任何DDL语句,当你用JavaScript编写它时,它不会在编译时验证,但会在运行时验证。
https://stackoverflow.com/questions/67412170
复制相似问题