コードバンドル仕様¶
この仕様は、テンプレートから呼び出すことができる1つ以上のコード関数またはプロシージャのバンドルを定義します。
コードバンドル仕様には、最大5個の関数とプロシージャを組み合わせて配置することができます。
さまざまな種類のコードバンドルの例については、:ref:`label-dcr_collab_code_bundle_spec_examples`をご参照ください。
コードバンドル仕様の識別子には、以下の一般的な要件があります。
名前:文字で始まり、英数字とアンダースコアのみを含む、有効な:doc:`Snowflake識別子</sql-reference/identifiers-syntax>`である必要があります。
引用符で囲まれた識別子:特殊文字を含む名前では、二重引用符で囲まれた識別子がサポートされています。
大文字と小文字の区別:引用符で囲まれていない識別子は大文字と小文字を区別しません。引用符で囲まれた識別子は大文字と小文字を保持します。
api_version使用するコラボレーション API のバージョン。
2.0.0である必要があります。spec_type仕様タイプ識別子。
code_specである必要があります。name: identifierこのレジストリ内における、このコードバンドル仕様の一意の名前。最大75文字の有効な:doc:
Snowflake識別子</sql-reference/identifiers-syntax>`である必要があります。これは、テンプレートで関数を呼び出すときの最後の名前セグメントとして使用されます。:samp:`cleanroom.{code_spec_name}${function_name}version: version_idカスタムバージョン識別子。アンダースコアを含む英数字で、最大20文字である必要があります。
- :samp:`description: {description_text}`(オプション)
コードバンドル仕様の説明(最大1,000文字)。
- ``artifacts``(オプション)
関数またはプロシージャからインポートでき、オプションでハンドラー関数を介して公開できる、ステージングされたファイルまたはパッケージのリスト。仕様ごとに最大5つ。
alias: identifierインポートでこのアーティファクトを参照するためのエイリアス。この仕様内でこのエイリアスを参照する場合は、:samp:`cleanroom.{spec_name}${alias}`ではなく修飾子のないエイリアス名を使用します。つまり、この仕様内の別の関数を参照するには、修飾子のない関数名を使用します。
stage_path: stage_pathアーティファクトファイルへの完全なステージパス例:
@DB.SCHEMA.STAGE/path/file.whl。
**ステージではDIRECTORYが有効になっている必要があります。**アーティファクトを含むステージには``DIRECTORY = TRUE``を設定する必要があります。
ステージパス形式::samp:`@[{DB}.]SCHEMA.STAGE/path/to/file.ext`形式に従う必要があります。
パストラバーサルなし:ステージパスに``..``または````を含めることはできません。
このアーティファクトが存在する必要があります。コードバンドルを登録する際、ファイルが指定されたステージパスに存在している必要があります。
**ステージではSNOWFLAKE_SSEサーバー側暗号化が有効になっている必要があります。**ステージを作成または変更する場合は、:code:`ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')`を設定します。
**ステージングされたコードファイルをプッシュ、削除、または更新する場合**は、コラボレーションにステージからの最新情報が確実に反映されるように、:samp:`ALTER STAGE {stage name} REFRESH`を呼び出す必要があります。コードの更新は、コード仕様を登録する前にのみサポートされます。このときにバージョンが割り当てられ、ハッシュチェックサムが計算されるためです。
- ``functions``(プロシージャが定義されていない場合は必須)
UDFまたはUDTF定義のリスト。
name: identifier呼び出しテンプレートに公開する関数名。有効な:doc:`Snowflake識別子</sql-reference/identifiers-syntax>`である必要があります。
type関数タイプ。
UDFの1つ、またはUDTF。language関数言語。現在のところ、
PYTHONのみサポートされています。- :samp:`runtime_version: {python_version}`(オプション)
使用するPythonランタイムバージョン。サポートされているバージョンは``3.10``から``3.14``です。
handler: handler``name``が呼び出されたときに呼び出される、関数コード内のハンドラー関数の名前。
- ``arguments``(オプション)
名前と型のペアのリストとしての関数引数。型は有効なSnowflake SQL型である必要があります。
returns: sql_type戻り値の型。UDFsの場合は、STRINGやFLOATなどのSQL型を使用します。UDTFs には、
TABLE(column_definitions)を使用します。- ``packages``(オプション)
このコードで使用されるパッケージのリスト。これには、
これらのAnaconda Pythonパッケージ<https://repo.anaconda.com/pkgs/snowflake/>`_または:ref:`これらのSnowpark APIパッケージ<label-dcr_snowpark_udf>`のいずれかを指定できます。例: ``snowflake-snowpark-python`、numpy。- ``imports``(オプション)
インポートするアーティファクトのリスト。これらは、この仕様のアーティファクトリストのエイリアスである必要があります。
- ``code_body``(オプション)
インラインのPythonコード。ステージ上のインポートとは排他的です。最大サイズは12MBです。
- :samp:`description: {description_text}`(オプション)
関数の説明(最大500文字)。
- ``procedures``(関数が定義されていない場合は必須)
ストアドプロシージャの定義のリスト。``type``フィールドがない点を除き、フィールドは``functions``と類似しています。