Code-Bundle-Spezifikation

Diese Spezifikation definiert ein Bundle von einer oder mehreren Codefunktionen oder Prozeduren, die von einer Vorlage aufgerufen werden können.

Eine Code-Bundle-Spezifikation kann maximal 5 Funktionen und Prozeduren enthalten.

Beispiele für verschiedene Arten von Code-Bundles finden Sie unter Beispielspezifikationen.

Für Bezeichner in der Code-Bundle-Spezifikation gelten die folgenden allgemeinen Anforderungen:

  • Namen: Müssen gültige Snowflake-Bezeichner sein, die mit einem Buchstaben beginnen und nur alphanumerische Zeichen und Unterstriche enthalten.

  • Bezeichner in Anführungszeichen: Bezeichner in doppelten Anführungszeichen werden für Namen mit Sonderzeichen unterstützt.

  • Unterscheidung nach Groß-/Kleinschreibung: Bei Bezeichnern ohne Anführungszeichen ist die Groß- und Kleinschreibung nicht relevant. Bei Bezeichnern in Anführungszeichen wird die Groß-/Kleinschreibung beibehalten.

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

Die verwendete Version der Collaboration API. Sie müssen 2.0.0 sein.

spec_type

Bezeichner des Spezifikationstyps. Sie müssen code_spec sein.

name: identifier

Ein eindeutiger Name für diese Code-Bundle-Spezifikation innerhalb dieser Registry. Muss ein gültiger Snowflake-Bezeichner mit maximal 75 Zeichen sein. Dies wird als Nachnamesegment verwendet, wenn Sie die Funktion in einer Vorlage aufrufen: cleanroom.code_spec_name$function_name

version: version_id

Kundenspezifischer Versionsbezeichner. Muss alphanumerisch mit Unterstrichen sein;maximal 20 Zeichen.

description: description_text (Optional)

Eine Beschreibung der Code-Bundle-Spezifikation (maximal 1.000 Zeichen).

artifacts (Optional)

Eine Liste der Stagingdateien oder -pakete, die von Ihren Funktionen oder Prozeduren importiert werden können, und optional über Handler-Funktionen verfügbar sind. Maximal 5 pro Spezifikation.

alias: identifier

Ein Alias zum Referenzieren dieses Artefakts in Importen. Wenn Sie innerhalb dieser Spezifikation auf diesen Alias verweisen, verwenden Sie den reinen Aliasnamen und nicht cleanroom.spec_name$alias; verwenden Sie also den reinen Funktionsnamen, um auf eine andere Funktion in dieser Spezifikation zu verweisen.

stage_path: stage_path

Vollständiger Stagingbereichspfad zur Artefaktdatei. Beispiel: @DB.SCHEMA.STAGE/path/file.whl.

  • Der Stagingbereich muss ein interner Stagingbereich sein. Externe Stagingbereiche werden nicht unterstützt.

  • Für den Stagingbereich muss DIRECTORY aktiviert sein: Für den Stagingbereich, der Artefakte enthält, muss DIRECTORY = TRUE festgelegt sein.

  • Format des Stagingbereichspfads: Muss dem Format @[DB.]SCHEMA.STAGE/path/to/file.ext folgen.

  • Kein Durchlaufpfad: Stagingbereichspfade dürfen nicht .. oder \ enthalten.

  • Dieses Artefakt muss vorhanden sein: Die Datei muss im angegebenen Stagingbereichspfad vorhanden sein, wenn das Code-Bundle registriert wird.

  • Für den Stagingbereich muss die serverseitigeSNOWFLAKE_SSE-Verschlüsselung aktiviert sein. Legen Sie beim Erstellen oder Ändern des Stagingbereichs ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE') fest.

  • Wenn Sie eine Staging-Codedatei verschieben, löschen oder aktualisieren, müssen Sie ALTER STAGE stage name REFRESH aufrufen, um sicherzustellen, dass die Zusammenarbeit über die neuesten Informationen aus dem Stagingbereich verfügt. Code-Aktualisierungen werden nur unterstützt, bevor Sie die Code-Spezifikation registrieren, da an diesem Punkt die Version zugewiesen und die Hash-Prüfsumme berechnet wird.

description: description_text (Optional)

Eine Beschreibung des Artefakts (maximal 500 Zeichen).

content_hash: sha256_hash (Optional)

SHA-256 Hash in Kleinbuchstaben für die Integritätsprüfung (64 Hexadezimalzeichen).

functions (Erforderlich, wenn keine Prozeduren definiert sind)

Eine Liste von UDF- oder UDTF-Definitionen.

name: identifier

Der Funktionsname, der in der aufrufenden Vorlage angezeigt werden soll. Muss ein gültiger Snowflake-Bezeichner sein.

type

Der Funktionstyp. Eine der folgenden Optionen: UDF oder UDTF.

language

Die Programmiersprache der Funktion. Derzeit wird nur PYTHON unterstützt.

runtime_version: python_version (Optional)

Die zu verwendende Python-Laufzeitversion. Unterstützte Versionen: 3.10 bis 3.14.

handler: handler

Der Name der Handler-Funktion im Funktionscode, die aufgerufen werden soll, wenn name lautet.

arguments (Optional)

Funktionsargumente als Liste von Name-Typ-Paaren. Die Typen müssen gültige Snowflake-SQL-Typen sein.

returns: sql_type

Der Rückgabetyp. Verwenden Sie für UDFs einen SQL-Typ wie STRING oder FLOAT. Für UDTFs verwenden Sie TABLE(column_definitions):

packages (Optional)

Eine Liste der von diesem Code verwendeten Pakete. Dabei kann es sich um eines dieser Anaconda Python-Pakete oder dieser Snowpark API-Pakete handeln. Beispiel: snowflake-snowpark-python, numpy.

imports (Optional)

Eine Liste der zu importierenden Artefakte. Dies müssen Aliasse aus der Artefaktliste in dieser Spezifikation sein.

code_body (Optional)

Inline-Python-Code. Gegenseitig ausschließend mit Stagingimporten. Die maximale Größe beträgt 12 MB.

description: description_text (Optional)

Eine Beschreibung der Funktion (maximal 500 Zeichen).

procedures (Erforderlich, wenn keine Funktionen definiert sind)

Eine Liste der Definitionen der gespeicherten Prozeduren. Felder sind ähnlich wie bei functions, außer dass es kein type-Feld gibt.