gpt4 book ai didi

snowflake-cloud-data-platform - 雪花 Javascript SP 输出为表?

转载 作者:行者123 更新时间:2023-12-05 03:54:01 25 4
gpt4 key购买 nike

我正在编写一个 SP,其中输出预期为表格。但无法以表格格式获得输出,而是在使用数组作为返回类型时将其作为对象接收单个值或一列中的所有行。

create or replace table monthly_sales(empid int, amount int, month text)
as select * from values
(1, 10000, 'JAN'),
(1, 400, 'JAN'),
(2, 4500, 'JAN'),
(2, 35000, 'JAN'),
(1, 5000, 'FEB'),
(1, 3000, 'FEB'),
(2, 200, 'FEB'),
(2, 90500, 'FEB'),
(1, 6000, 'MAR'),
(1, 5000, 'MAR'),
(2, 2500, 'MAR'),
(2, 9500, 'MAR'),
(1, 8000, 'APR'),
(1, 10000, 'APR'),
(2, 800, 'APR'),
(2, 4500, 'APR'),
(2, 10000, 'MAY'),
(1, 800, 'MAY');
----------------------------------------------------------
select * from MONTHLY_SALES;
------------------------------------------------------------

create or replace procedure getRowCount(TABLENAME VARCHAR(1000))
returns variant
not null
language javascript
as
$$
// Dynamically compose the SQL statement to execute.

var sql_command = " SELECT * FROM "+TABLENAME+";"

// Prepare statement.
var stmt = snowflake.createStatement({sqlText: sql_command});

// Execute Statement
try
{
var rs = stmt.execute();

return rs;

}catch(err){return "error "+err;}
$$;

Call getRowCount('MONTHLY_SALES');

预期输出: enter image description here

最佳答案

Snowflake 存储过程不能有输出类型的表。你有几个选择。一种选择是编写一个存储过程,该过程返回一个数组或 JSON,您可以将其展平到表中。但请注意,您不能直接使用存储过程的返回值。您必须先运行存储过程,然后在 session 中执行的下一条语句收集如下输出:

select * from  table(result_scan(last_query_id()));

另一种选择是编写用户定义的表函数 (UDTF),这是 Snowflake 中唯一返回表的函数类型。这是一个简单的 UDTF 示例:

create or replace function COUNT_LOW_HIGH(LowerBound double, UpperBound double)
returns table (MY_NUMBER double)
LANGUAGE JAVASCRIPT
AS
$$
{
processRow: function get_params(row, rowWriter, context){
for (var i = row.LOWERBOUND; i <= row.UPPERBOUND; i++) {
rowWriter.writeRow({MY_NUMBER: i});
}
}
}
$$;

然后您可以像这样使用 TABLE 函数调用 UDTF:

SELECT * FROM TABLE(COUNT_LOW_HIGH(1::double, 1000::double));

关于snowflake-cloud-data-platform - 雪花 Javascript SP 输出为表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61345009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com