함수 수정

함수 수정 (ALTER FUNCTION (Snowpark Container Services))

기존 서비스 함수의 속성을 수정합니다.

서비스 함수에 다른 변경을 하려면, 함수를 삭제한 후(DROP FUNCTION (Snowpark Container Services)) 다시 생성해야 합니다.

참조:

서비스 함수, CREATE FUNCTION, DESC FUNCTION, DROP FUNCTION

출처: 문서

본문

구문

ALTER FUNCTION [ IF EXISTS ]  ( [  , ... ] )
  RENAME TO 

ALTER FUNCTION [ IF EXISTS ]  ( [  , ... ] )
  SET CONTEXT_HEADERS = (  [ ,  ...] )

ALTER FUNCTION [ IF EXISTS ]  ( [  , ... ] )
  SET MAX_BATCH_ROWS = 

ALTER FUNCTION [ IF EXISTS ]  ( [  , ... ] )
  SET MAX_BATCH_RETRIES = 

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

ALTER FUNCTION [ IF EXISTS ]  ( [  , ... ] )
  SET BATCH_TIMEOUT_SECS = 

ALTER FUNCTION [ IF EXISTS ]  ( [  , ... ] )
  SET COMMENT = ''

ALTER FUNCTION [ IF EXISTS ]  ( [  , ... ] )
  SET SERVICE = '' ENDPOINT = ''

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

매개변수

name

변경할 서비스 함수의 식별자를 지정합니다. 식별자에는 함수 이름뿐만 아니라 스키마 이름과 데이터베이스 이름도 포함될 수 있습니다. 식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자는 대소문자를 구분합니다.

arg_data_type [ , ... ]

서비스 함수의 인수/입력 데이터 타입을 지정합니다.

함수가 인수를 받는 경우 ALTER 명령은 인수 타입을 지정해야 합니다. 함수는 이름 오버로딩(즉, 같은 스키마에 있는 두 함수가 같은 이름을 가질 수 있음)을 지원하므로 인수 타입이 함수를 식별하는 데 사용되기 때문입니다.

RENAME TO new_name

서비스 함수의 새 식별자를 지정합니다. 식별자와 기존 인수 데이터 타입의 조합은 스키마 내에서 고유해야 합니다.

자세한 내용은 식별자 요구 사항을 참조하세요.

서비스 함수의 새 이름을 지정할 때는 인수 데이터 타입이나 괄호를 지정하지 말고 새 이름만 지정하세요.

객체를 선택적으로 이름을 바꾸면서 다른 데이터베이스 및/또는 스키마로 이동할 수 있습니다. 이렇게 하려면 각각 db_name.schema_name.object_name 또는 schema_name.object_name 형식으로 새 데이터베이스 및/또는 스키마 이름을 포함하는 정규화된 new_name 값을 지정하세요.

  • 대상 데이터베이스 및/또는 스키마는 이미 존재해야 합니다. 또한 새 위치에 같은 이름의 객체가 이미 있으면 안 됩니다. 그렇지 않으면 문이 오류를 반환합니다.
  • 객체 소유자(즉, 객체에 대한 OWNERSHIP 권한이 있는 역할)가 대상 스키마도 소유하지 않는 한, 관리 액세스 스키마로 객체를 이동하는 것은 금지됩니다.

객체 이름이 변경되면 해당 객체를 참조하는 다른 객체도 새 이름으로 업데이트해야 합니다.

SET ...

함수에 설정할 속성을 지정합니다:

COMMENT = 'string_literal'

함수에 대한 주석을 지정합니다. 이 주석은 SHOW FUNCTIONSSHOW USER FUNCTIONS 출력의 DESCRIPTION 열에 표시됩니다.

SERVICE = '' ENDPOINT = ''

서비스 사양에 정의된 서비스 이름과 엔드포인트 이름을 지정합니다.

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 Function
USAGE Service endpoint 서비스 엔드포인트에 대한 사용 권한은 서비스 사양에 정의된 서비스 역할에 부여됩니다. 그런 다음 서비스 역할을 서비스 함수를 변경하는 역할에 부여합니다. 이 권한은 서비스 엔드포인트를 변경하는 경우 필요합니다.

스키마의 객체를 작업하려면 상위 데이터베이스에 대한 권한이 하나 이상, 상위 스키마에 대한 권한이 하나 이상 필요합니다.

지정된 권한 집합을 가진 사용자 지정 역할을 만드는 방법은 을(를) 참조하세요.

보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할 및 권한 부여에 대한 일반적인 정보는 액세스 제어 개요를 참조하세요.

사용 참고 사항

  • 메타데이터 관련:

고객은 Snowflake 서비스를 사용할 때 메타데이터로 입력되는 데이터에 (User 객체에 대한 데이터를 제외하고) 개인 데이터, 민감한 데이터, 수출 통제 데이터 또는 기타 규제 대상 데이터가 없도록 해야 합니다. 자세한 내용은 Metadata fields in Snowflake를 참조하세요.

예시

서비스 함수 이름 변경:

ALTER FUNCTION my_echo_udf(VARCHAR) RENAME TO my_echo_udf_temp;

서비스 함수에 주석 설정:

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

서비스 함수의 배치당 최대 행 수 설정:

ALTER FUNCTION my_echo_udf(number) SET MAX_BATCH_ROWS = 100;

서비스 함수에 대한 CURRENT_USER 컨텍스트 헤더 설정:

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

서비스 함수에 대한 MAX_BATCH_ROWS 설정 해제:

ALTER FUNCTION my_echo_udf(VARCHAR) UNSET MAX_BATCH_ROWS;

더 알아보기 (Learn more)