Thanks to visit codestin.com
Credit goes to docs.snowflake.com

ALTER FUNCTION (Snowpark Container Services)

既存の サービス関数 のプロパティを変更します。

サービス関数に他の変更を加えるには、( DROP FUNCTION (Snowpark Container Services) を使用して)関数をドロップしてから再作成する必要があります。

こちらもご参照ください。

サービス関数, CREATE FUNCTION, DESC FUNCTION, DROP 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 コマンドは引数の型を指定する必要があります。関数は、名前のオーバーロードをサポート(つまり、同じスキーマ内の2つの関数に同じ名前を付与)し、引数の型を使用して関数を識別するためです。

RENAME TO new_name

サービス関数の新しい識別子を指定します。識別子と既存の引数データ型の組み合わせは、スキーマに対して一意である必要があります。

詳細については、 識別子の要件 をご参照ください。

注釈

サービス関数に新しい名前を指定する場合、引数のデータ型または括弧を指定せず、新しい名前のみを指定します。

オプションでオブジェクトの名前を変更して、オブジェクトを別のデータベースやスキーマに移動できます。これを実行するには、新しいデータベース名やスキーマ名をそれぞれ db_name.schema_name.object_name または schema_name.object_name の形式で含む、修飾された new_name 値を指定します。

注釈

  • 宛先データベースやスキーマはすでに存在している必要があります。また、同じ名前のオブジェクトが宛先データベースにすでに存在することはできません。存在する場合、ステートメントはエラーを返します。

  • オブジェクトを管理アクセススキーマに移動することは、オブジェクトの所有者(つまり、オブジェクトに対して OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き 禁止されています。

オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。

SET ...

関数に設定するプロパティを指定します。

COMMENT = 'string_literal'

SHOW FUNCTIONS および SHOW 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 を返し、残りのバッチの処理を続行します。このオプションを選択する場合は、以下の点に注意してください。

    • これらのバッチが互いに依存関係にあり、1つのバッチが失敗すると、予期しない結果につながる可能性があります

    • サービスが有効な応答として NULL を返すことができる場合、バッチの失敗によりSnowflakeにより返される NULL と、サービスにより返される NULL を区別することはできません。

BATCH_TIMEOUT_SECS = integer

再試行(および非同期関数リクエストのポーリング)を含む、1つの行のバッチ処理にかかる最大時間を指定します。その後Snowflakeはバッチリクエストを終了します。

許容値:0より大きく604,800秒(7日)以下。

UNSET ...

関数の設定を解除に指定し、プロパティをデフォルトにリセットします。サービスエンドポイントの設定を解除することはできません。

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

注意

OWNERSHIP

関数

USAGE

サービスエンドポイント

サービスエンドポイントでの利用は、サービス仕様で定義されたサービスロールに付与されます。次に、サービス関数を変更するロールにサービスロールを付与します。この権限は、サービスエンドポイントを変更する場合に必要です。

スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対する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