【问题标题】:MAX_BATCH_ROWS not working for external function in snowflakeMAX_BATCH_ROWS 不适用于雪花中的外部函数
【发布时间】: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 中规定的行。非常感谢任何回应。

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    不保证批量大小:

    由于不能保证批量大小和行顺序,因此编写一个函数,该函数返回一个行的值,该值依赖于该批次或先前批次中的任何其他行,可能会产生不确定的结果。

    另请注意,由于无法保证批量大小,因此计算批次没有意义。

    MAX_BATCH_ROWS起到提示作用,但无法控制每批的实际大小。

    【讨论】:

    • 感谢您的认可!顺便说一句,当您投票并接受他们的答案(如果它们对您有用)时,Stack Overflow 的人们会喜欢。
    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-06
    相关资源
    最近更新 更多