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 函数的雪花外部函数不起作用

为啥 Falcor 的 setValue() 不适用于外部模型?

图像裁剪器不适用于外部图像

tailwindcss 指令不适用于项目外部的样式文件