ALTER FUNCTION¶
既存のユーザー定義または外部関数のプロパティを変更します。
UDF に他の変更を加えるには、関数( DROP FUNCTION を使用して)をドロップしてから再作成する必要があります。
- こちらもご参照ください。
外部関数の記述, ユーザー定義関数の概要, CREATE FUNCTION , DROP FUNCTION , SHOW USER FUNCTIONS , DESCRIBE FUNCTION, CREATE EXTERNAL FUNCTION , DESCRIBE FUNCTION , DROP FUNCTION , SHOW EXTERNAL FUNCTIONS
構文¶
ユーザー定義および外部関数¶
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) RENAME TO <new_name>
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET LOG_LEVEL = '<log_level>'
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TRACE_LEVEL = '<trace_level>'
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET COMMENT = '<string_literal>'
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET SECURE
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET { SECURE | LOG_LEVEL | TRACE_LEVEL | COMMENT }
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]
外部関数¶
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET API_INTEGRATION = <api_integration_name>
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET HEADERS = ( [ '<header_1>' = '<value>' [ , '<header_2>' = '<value>' ... ] ] )
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 COMPRESSION = <compression_type>
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET { REQUEST_TRANSLATOR | RESPONSE_TRANSLATOR } = <udf_name>
ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET
{ COMMENT | HEADERS | CONTEXT_HEADERS | MAX_BATCH_ROWS | COMPRESSION | SECURE | REQUEST_TRANSLATOR | RESPONSE_TRANSLATOR }
パラメーター¶
ユーザー定義および外部関数¶
name
変更する UDF の識別子を指定します。識別子には、スキーマ名、データベース名、および関数名を含めることができます。識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
arg_data_type [ , ... ]
外部関数の引数/入力データ型を指定します。
関数が引数を受け入れる場合、 ALTER コマンドは引数の型を指定する必要があります。関数は、名前のオーバーロードをサポート(つまり、同じスキーマ内の2つの関数に同じ名前を付与)し、引数の型を使用して関数を識別するためです。
SET ...
関数に設定するプロパティを指定します。
SECURE
機能が安全かどうかを指定します。詳細については、 セキュア UDFs とストアドプロシージャの使用による機密情報の保護 をご参照ください。
LOG_LEVEL = 'log_level'
インジェストされ、アクティブなイベントテーブルで使用できるようにするメッセージの重大度レベルを指定します。指定されたレベル(およびそれよりも重大なレベル)のメッセージがインジェストされます。
レベルの詳細については、 LOG_LEVEL をご参照ください。ログレベルの設定については、 ログレベルの設定 をご参照ください。
TRACE_LEVEL = 'trace_level'
トレースイベントがイベントテーブルにインジェストされる方法を制御します。
レベルの詳細については、 TRACE_LEVEL をご参照ください。トレースレベルの設定については、 トレースレベルの設定 をご参照ください。
COMMENT = 'string_literal'
関数のコメントを追加するか、既存のコメントを上書きします。指定した値は、 SHOW FUNCTIONS および SHOW USER FUNCTIONS 出力の
DESCRIPTION
列に表示されます。
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
タグ の名前とタグ文字列の値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。
ステートメントでのタグの指定に関する情報については、 オブジェクトおよび列のタグクォータ をご参照ください。
UNSET ...
関数のプロパティをデフォルトにリセットする、プロパティの設定解除を指定します。
ユーザー定義関数¶
RENAME TO new_name
UDFの新しい識別子を指定します。識別子と既存の引数データ型の組み合わせは、スキーマに対して一意である必要があります。
詳細については、 識別子の要件 をご参照ください。
注釈
UDF の新しい名前を指定する場合、引数のデータ型または括弧を指定せず、新しい名前のみを指定します。
オプションでオブジェクトの名前を変更して、オブジェクトを別のデータベースやスキーマに移動できます。これを実行するには、新しいデータベース名やスキーマ名をそれぞれ
db_name.schema_name.object_name
またはschema_name.object_name
の形式で含む、修飾されたnew_name
値を指定します。注釈
宛先データベースやスキーマはすでに存在している必要があります。また、同じ名前のオブジェクトが宛先データベースにすでに存在することはできません。存在する場合、ステートメントはエラーを返します。
オブジェクトをマネージドアクセススキーマに移動することは、オブジェクトの所有者(つまり、オブジェクトに対して OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き 禁止されています。
オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。
外部関数¶
RENAME TO new_name
関数の識別子を指定します。
関数は名前と引数のタイプによって識別および解決されるため、識別子は、関数が作成されるスキーマに対して一意である必要はありません。ただし、署名(名前とパラメーターのデータ型)はスキーマ内で一意である必要があります。
name
は、Snowflake 識別子 のルールに従う必要があります。詳細については、 識別子の要件 をご参照ください。注釈
外部関数に 新しい 名前を指定するときは、引数のデータ型または括弧を指定しないでください。関数は以前と同じ引数を使用し続けます。
api_integration_name
これは、プロキシサービスへの呼び出しを認証するために使用する必要がある API 統合オブジェクトの名前です。
このパラメーターの詳細は、 CREATE EXTERNAL FUNCTION にあります。
HEADERS = ( 'header_1' = 'value' [ , 'header_2' = 'value' ... ] )
この句を使用すると、すべてのリクエストで送信されるキー値のメタデータを添付できます。
値は、式ではなく定数文字列でなければなりません。
このパラメーターの詳細は、 CREATE EXTERNAL FUNCTION にあります。
CONTEXT_HEADERS = ( [ context_function_1 [ , context_function_2 ... ] ] )
これは HEADERS に似ていますが、定数文字列のみを許可する代わりに、Snowflakeコンテキスト関数の結果を HTTP ヘッダーにバインドできるようにします。
各値は、コンテキスト関数の名前でなければなりません。名前は引用符で囲まないでください。
このパラメーターの詳細は、 CREATE EXTERNAL FUNCTION にあります。
COMPRESSION = compression_type
この句が指定されている場合は、Snowflakeからプロキシサービスに送信されるとき、およびプロキシサービスからSnowflakeに返信されるときに、指定された形式を使用して JSON ペイロードを圧縮します。
compression_type
の有効な値の詳細については、 CREATE EXTERNAL FUNCTION をご参照ください。{ REQUEST_TRANSLATOR | RESPONSE_TRANSLATOR } = udf_name
外部関数にまだリクエストトランスレーターまたは応答トランスレーターがない場合は、リクエストトランスレーターまたは応答トランスレーターを追加するか、以前に作成した JavaScript UDF の名前を指定して、既存のリクエストトランスレーターまたは応答トランスレータを置き換えます。詳細については、 リモートサービスに対するデータのあるリクエストトランスレーターおよび応答トランスレーターの使用 をご参照ください。
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
USAGE |
関数 |
UDF または外部関数の呼び出しができるようになります。 |
APPLY |
タグ |
UDF または外部関数にタグを設定できるようにします。 |
スキーマ内の任意のオブジェクトを操作するには、親データベースとスキーマに対する USAGE 権限も必要であることに注意してください。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
メタデータについて。
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
ユーザー定義関数¶
マスキングポリシー で UDF を使用する場合は、列、 UDF、およびマスキングポリシーのデータ型が一致していることを確認します。詳細については、 マスキングポリシー内のユーザー定義関数 をご参照ください。
外部関数¶
API_INTEGRATION の UNSET コマンドはありません。API_INTEGRATION は変更できますが、設定を解除することはできません。詳細については、 ALTER API INTEGRATION をご参照ください。
例¶
関数の名前を function1
から function2
に変更します。
ALTER FUNCTION IF EXISTS function1(number) RENAME TO function2;
通常の関数 function2
をセキュア関数に変換します。
ALTER FUNCTION function2(number) SET SECURE;
外部関数¶
外部関数の API 統合を変更します。
ALTER FUNCTION function4(number) SET API_INTEGRATION = api_integration_2;
外部関数のバッチあたりの最大行数を設定します。
ALTER FUNCTION function5(number) SET MAX_BATCH_ROWS = 100;