MAX_BATCH_ROWS 不适用于雪花中的外部函数
Posted
技术标签:
【中文标题】MAX_BATCH_ROWS 不适用于雪花中的外部函数【英文标题】:MAX_BATCH_ROWS not working for external function in snowflake 【发布时间】:2020-09-15 07:10:15 【问题描述】:我已经使用 MAX_BATCH_ROWS(它是最新的雪花版本)创建了一个如下所示的外部函数
create or replace external function my_ext_function(columnValue varchar, schemeName varchar, current_user varchar, current_role varchar, current_available_roles varchar)
returns variant
MAX_BATCH_ROWS = 100000
api_integration = [aws_api_integration]
HEADERS = ('accept','application/json')
CONTEXT_HEADERS = (current_user, current_role)
as '[aws_api_post_url]'
后来我创建了一个如下所示的内部函数来访问外部函数
create or replace function my_ext_function_internal(columnValue varchar, schemaName varchar)
returns variant
as $$ select my_ext_function(columnValue::string, schemaName, current_user, 'null', 'null') $$
除了 MAX_BATCH_ROWS 之外,上面的效果很好。外部函数调用 AWS 中与我的 lambda 函数绑定的 api 网关。我在 lambda 中有打印语句来显示来自雪花的行,它总是介于 1950 到 2050 之间。增加或减少 MAX_BATCH_ROWS 没有任何区别。
如何确保雪花一次将 10 万行发送到我的 lambda 函数?我如何验证雪花正在发送 MAX_BATCH_ROWS 中规定的行。非常感谢任何回应。
【问题讨论】:
【参考方案1】:不保证批量大小:
由于不能保证批量大小和行顺序,因此编写一个函数,该函数返回一个行的值,该值依赖于该批次或先前批次中的任何其他行,可能会产生不确定的结果。
https://docs.snowflake.com/en/sql-reference/external-functions-general.html另请注意,由于无法保证批量大小,因此计算批次没有意义。
MAX_BATCH_ROWS
起到提示作用,但无法控制每批的实际大小。
【讨论】:
感谢您的认可!顺便说一句,当您投票并接受他们的答案(如果它们对您有用)时,Stack Overflow 的人们会喜欢。以上是关于MAX_BATCH_ROWS 不适用于雪花中的外部函数的主要内容,如果未能解决你的问题,请参考以下文章
ionic 3 的内页不适用于 ionic 3 中的脚本或外部自定义 jQuery 插件
在 Python 上使用 Azure 函数的雪花外部函数不起作用