コードバンドル仕様

この仕様は、テンプレートから呼び出すことができる1つ以上のコード関数またはプロシージャのバンドルを定義します。

コードバンドル仕様には、最大5個の関数とプロシージャを組み合わせて配置することができます。

さまざまな種類のコードバンドルの例については、:ref:`label-dcr_collab_code_bundle_spec_examples`をご参照ください。

コードバンドル仕様の識別子には、以下の一般的な要件があります。

  • 名前:文字で始まり、英数字とアンダースコアのみを含む、有効な:doc:`Snowflake識別子</sql-reference/identifiers-syntax>`である必要があります。

  • 引用符で囲まれた識別子:特殊文字を含む名前では、二重引用符で囲まれた識別子がサポートされています。

  • 大文字と小文字の区別:引用符で囲まれていない識別子は大文字と小文字を区別しません。引用符で囲まれた識別子は大文字と小文字を保持します。

api_version: 2.0.0              # Required: Must be "2.0.0"
spec_type: code_spec            # Required: Must be "code_spec"
name: <identifier>              # Required: Unique name of this code bundle.
version: <version_id>           # Required: Alphanumeric with underscores (max 20 chars)
description: <description_text> # Optional: Description (max 1,000 chars)

artifacts:                      # Optional: Staged files for import
  - alias: <identifier>         # One or more artifact items...
    stage_path: <stage_path>    # Required: Full stage path. See below for additional requirements.
    description: <description_text>  # Optional: Description (max 500 chars)
    content_hash: <sha256_hash>      # Optional: Lowercase SHA-256 hash for integrity verification

functions:                      # Required if no procedures defined
  - name: <identifier>          # One or more functions...
    type: UDF | UDTF            # Required: Function type
    language: PYTHON            # Required: Currently only PYTHON supported
    runtime_version: <python_version>  # Optional: Python runtime (3.10 - 3.14)
    handler: <handler>          # Required: Handler function
    arguments:                  # Optional: One or more function arguments
      - name: <arg_name>        # Argument name
        type: <sql_type>        # Snowflake SQL type of this argument
    returns: <sql_type>         # Required: Snowflake return type
    packages:                   # Optional: Package dependencies
      - <package_name>          # One or more package items...
    imports:                    # Optional: Artifact aliases to import
      - <artifact_alias>        # One or more import items...
    code_body: |                # Optional: Inline Python code (max 12 MB)
      <inline_python_code>
    description: <description_text>  # Optional: Description of this function.

procedures:                     # Required if no functions defined
  - name: <identifier>          # One or more procedure items...
    language: PYTHON            # Required: Currently only PYTHON supported
    runtime_version: <python_version>  # Optional: Python runtime version
    handler: <handler>          # Required: Handler function
    arguments:                  # Optional: One or more procedure arguments
      - name: <arg_name>        # Argument name
        type: <sql_type>        # Snowflake SQL type of this argument
    returns: <sql_type>         # Optional: Return type
    packages:                   # Optional: Package dependencies
      - <package_name>          # One or more package items...
    imports:                    # Optional: Artifact aliases to import
      - <artifact_alias>        # One or more import items...
    code_body: |                # Optional: Inline Python code
      # inline python_code ...
    description: <description_text>  # Optional: Description of this procedure.
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`を呼び出す必要があります。コードの更新は、コード仕様を登録する前にのみサポートされます。このときにバージョンが割り当てられ、ハッシュチェックサムが計算されるためです。

:samp:`description: {description_text}`(オプション

アーティファクトの説明(最大500文字)。

:samp:`content_hash: {sha256_hash}`(オプション

整合性検証用の小文字のSHA-256ハッシュ(64文字の16進数)。

``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``と類似しています。