问题描述
我按照此官方教程中提到的所有步骤创建了redshift lambda函数。
我可以使用自己的代码代替该示例中提供的代码。 它按预期工作。
# select 123456 as input_number,mycircle('123456');
input_number | mycircle
--------------+--------------------
123456 | Mumbai
(1 row)
但是在像这样的表中使用时,相同的功能不起作用...
# select input_number,mycircle(input_number) from mytable limit 1;
ERROR: Invalid Lambda Response
DETAIL:
-----------------------------------------------
error: Invalid Lambda Response
code: 8001
context: Missing rows in lambda response
query: 2983079
location: exfunc_data.cpp:288
process: query0_121_2983079 [pid=29202]
-----------------------------------------------
似乎UDF不能像redshift已支持的其他任何Python UDF一样工作。 如何在此查询中将lambda函数用作用户定义的函数?
更新:
我的函数以这样的方式编写:只有创建一个只有1行的新表时,它才起作用。
# create table todel as select * from mytable limit 1;
,然后在新创建的表上运行UDF,它可以正常工作:
# select input_number,mycircle(input_number) from todel;
这不是预期的,我的其他python UDF可以按预期正常工作。
解决方法
您需要确保返回与输入行匹配的正确数量的输出行。请记住,该函数不希望仅输入一行,而是处理“批处理”。