ALTER FUNCTION (Snowpark Container Services)

修改现有 服务函数 的属性。

要对服务函数进行任何其他更改,必须删除该函数(使用 DROP FUNCTION (Snowpark Container Services)),然后重新创建它。

另请参阅:

服务函数CREATE FUNCTIONDESC FUNCTIONDROP FUNCTION

语法

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  RENAME TO <new_name>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET CONTEXT_HEADERS = ( <context_function_1> [ , <context_function_2> ...] )

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET MAX_BATCH_ROWS = <integer>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET MAX_BATCH_RETRIES = <integer>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET ON_BATCH_FAILURE = { ABORT | RETURN_NULL }

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET BATCH_TIMEOUT_SECS = <integer>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET COMMENT = '<string_literal>'

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET SERVICE = '<service_name>' ENDPOINT = '<endpoint_name>'

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  UNSET { CONTEXT_HEADERS | MAX_BATCH_ROWS | MAX_BATCH_RETRIES | ON_BATCH_FAILURE | BATCH_TIMEOUT_SECS | COMMENT }
Copy

参数

name

指定要更改的服务函数的标识符。标识符可以包含架构名称和数据库名称,以及函数名称。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

arg_data_type [ , ... ]

指定服务函数的实参/输入数据类型。

如果函数接受实参,则 ALTER 命令必须指定实参类型,因为函数支持名称重载(即同一架构中的两个函数可以具有相同的名称),并且实参类型用于标识函数。

RENAME TO new_name

指定服务函数的新标识符;标识符和现有实参数据类型的组合对于架构必须是唯一的。

有关更多信息,请参阅 标识符要求

备注

为服务函数指定新名称时,不要指定实参数据类型或括号,只能指定新名称。

可以将对象移动到其他数据库和/或架构,同时选择重命名对象。为此,请指定一个限定 new_name 值,该值分别以 db_name.schema_name.object_nameschema_name.object_name 的形式包含新数据库和/或架构名称。

备注

  • 目标数据库和/或架构必须已存在。此外,新位置中不能存在同名对象;否则,该语句将返回错误。

  • 除非 对象所有者(即拥有对象 OWNERSHIP 权限的角色)也拥有目标架构,否则禁止将对象移动到托管访问架构。

重命名对象时,引用该对象的其他对象必须使用新名称进行更新。

SET ...

指定要为函数设置的属性:

COMMENT = 'string_literal'

指定函数的注释,该注释在 SHOW FUNCTIONSSHOW USER FUNCTIONS 输出的 DESCRIPTION 列中显示。

SERVICE = '<service_name>' ENDPOINT = '<endpoint_name>'

指定服务规范中定义的服务名称和端点名称。

CONTEXT_HEADERS = ( context_function_1 [ , context_function_2 ... ] )

允许将 Snowflake 上下文函数结果绑定到 HTTP 标头。

每个值都必须是上下文函数的名称。请勿在名称前后加上引号。

有关此参数的更多详细信息,请参阅 CREATE FUNCTION (Snowpark Container Services)

MAX_BATCH_ROWS = integer

指定向服务发送数据的 批次大小 以提高并发性

MAX_BATCH_RETRIES = integer

指定您希望 Snowflake 重试失败批次的次数。

ON_BATCH_FAILURE = { ABORT | RETURN_NULL }

指定 Snowflake 达到处理批次的最大重试次数后函数的行为。

  • ABORT:服务函数中止执行。任何剩余的行批次都不会被处理。

  • RETURN_NULL:服务函数为失败批次中的每一行返回 NULL,并继续处理剩余批次。如果您选择此选项,请注意以下注意事项:

    • 如果这些批次相互依赖并且一个批次失败,则可能会导致意想不到的结果。

    • 如果您的服务可以将 NULL 作为有效响应返回,则无法区分 Snowflake 因批次失败而返回的 NULL 与您的服务返回的 NULL。

BATCH_TIMEOUT_SECS = integer

指定处理单批次行的最大持续时间,包括重试(和轮询异步函数请求),在此之后 Snowflake 应终止批次请求。

可接受的值:大于 0 且小于或等于 604800 秒(7 天)。

UNSET ...

指定要为函数取消设置的属性,这会将其重置为默认值。请注意,您无法取消服务端点的设置。

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

对象

备注

OWNERSHIP

函数

USAGE

服务端点

服务规范中定义的服务角色将获得服务端点的使用权限。然后,您为服务角色授予更改服务函数的角色。如果更改服务端点,需要此权限。

要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

为服务函数重命名:

ALTER FUNCTION my_echo_udf(VARCHAR) RENAME TO my_echo_udf_temp;
Copy

为服务函数设置注释:

ALTER FUNCTION my_echo_udf(VARCHAR) SET COMMENT = 'some comment';
Copy

为服务函数设置每个批处理的最大行数:

ALTER FUNCTION my_echo_udf(number) SET MAX_BATCH_ROWS = 100;
Copy

为服务函数设置 CURRENT_USER 上下文标题:

ALTER FUNCTION my_echo_udf(VARCHAR) SET CONTEXT_HEADER = (CURRENT_USER);
Copy

为服务函数取消设置 MAX_BATCH_ROWS:

ALTER FUNCTION my_echo_udf(VARCHAR) UNSET MAX_BATCH_ROWS;
Copy
语言: 中文