코드 번들 사양

이 사양은 템플릿에서 호출할 수 있는 하나 이상의 코드 함수 또는 프로시저의 번들을 정의합니다.

코드 번들 사양에는 최대 5개의 함수 및 프로시저가 포함될 수 있습니다.

다양한 종류의 코드 번들에 대한 예는 사양 예제 섹션을 참조하세요.

코드 번들 사양의 식별자에는 다음과 같은 일반적인 요구 사항이 있습니다.

  • 이름: 문자로 시작하고 영숫자 문자와 밑줄만 포함하는 유효한 :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

사용되는 Collaboration API의 버전입니다. 2.0.0 여야 합니다.

spec_type

사양 유형 식별자입니다. code_spec 여야 합니다.

name: identifier

이 레지스트리 내에서 이 코드 번들 사양의 고유한 이름입니다. 최대 75자의 유효한 Snowflake 식별자 </sql-reference/identifiers-syntax>`여야 합니다. 템플릿에서 함수를 호출할 때 성 세그먼트로 사용됩니다. :samp:`cleanroom.{code_spec_name}${function_name}

version: version_id

사용자 지정 버전 식별자입니다. 밑줄이 포함된 영숫자여야 하며, 최대 20자입니다.

:samp:`description: {description_text}`(선택 사항)

코드 번들 사양에 대한 설명입니다(최대 1,000자).

``artifacts``(선택 사항)

함수 또는 프로시저에서 가져올 수 있는 스테이징된 파일이나 패키지의 목록으로, :ref:`처리기 함수를 통해 선택적으로 노출 <label-dcr_collab_code_bundles_staged_artifacts>`됩니다. 사양당 최대 5개입니다.

alias: identifier

가져오기에서 이 아티팩트를 참조하기 위한 별칭입니다. 이 사양 내에서 이 별칭을 참조할 때 :samp:`cleanroom.{spec_name}${alias}`가 아닌 베어 별칭 이름을 사용합니다. 즉, 베어 함수 이름을 사용하여 이 사양의 다른 함수를 참조합니다.

stage_path: stage_path

아티팩트 파일의 전체 스테이지 경로입니다. 예: @DB.SCHEMA.STAGE/path/file.whl.

  • 스테이지는 내부 스테이지여야 합니다. 외부 스테이지는 지원되지 않습니다.

  • 스테이지에는 DIRECTORY가 활성화되어 있어야 합니다. 아티팩트가 포함된 스테이지에는 ``DIRECTORY = TRUE``가 설정되어 있어야 합니다.

  • 스테이지 경로 유형: @[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 또는 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 패키지 또는 해당 Snowpark API 패키지 <label-dcr_snowpark_udf>`일 수 있습니다. 예: ``snowflake-snowpark-python`, numpy.

``imports``(선택 사항)

가져올 아티팩트의 목록입니다. 이는 이 사양의 아티팩트 목록에 있는 별칭이어야 합니다.

``code_body``(선택 사항)

인라인 Python 코드입니다. 스테이징된 가져오기와 상호 배타적입니다. 최대 크기는 12MB입니다.

:samp:`description: {description_text}`(선택 사항)

함수에 대한 설명입니다(최대 500자).

``procedures``(함수가 정의되지 않은 경우 필수)

저장 프로시저 정의의 목록입니다. 필드는 type 필드가 없는 경우를 제외하고 ``functions``와 유사합니다.