Spécification du bundle de code

Cette spécification définit un bundle d’une ou plusieurs fonctions ou procédures de code qui peuvent être appelées par un modèle.

Une spécification de bundle de code peut contenir un maximum combiné de 5 fonctions et procédures.

Pour des exemples de différents types de bundles de code, consultez Exemples de spécifications.

Les identificateurs de la spécification du bundle de code présentent les exigences générales suivantes :

  • Noms : Doivent être des identificateurs Snowflake valides qui commencent par une lettre et ne contiennent que des caractères alphanumériques et des traits de soulignement.

  • Identificateurs avec guillemets : Les identificateurs entre guillemets doubles sont pris en charge pour les noms contenant des caractères spéciaux.

  • Sensibilité à la casse : Les identificateurs sans guillemets sont insensibles à la casse ; les identificateurs entre guillemets préservent la casse.

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

Version de l’API de collaboration utilisée. Doit être 2.0.0.

spec_type

Identificateur du type de spécification. Doit être code_spec.

name: identifier

Un nom unique pour cette spécification de bundle de code dans ce registre. Doit être un identificateur Snowflake valide avec un maximum de 75 caractères. Il est utilisé comme segment de nom de famille lors de l’appel de la fonction dans un modèle : cleanroom.code_spec_name$function_name

version: version_id

Identificateur de version personnalisée. Doit être alphanumérique avec des traits de soulignement, 20 caractères au maximum.

description: description_text (Facultatif)

Une description de la spécification du bundle de code (1 000 caractères maximum).

artifacts (Facultatif)

Une liste des fichiers ou des paquets en zone de préparation qui peuvent être importés par vos fonctions ou procédures, et :ref:` éventuellement exposés via des fonctions de gestionnaire <label-dcr_collab_code_bundles_staged_artifacts>`. Maximum de 5 par spécification.

alias: identifier

Un alias pour référencer cet artefact dans les importations. Lorsque vous faites référence à cet alias dans cette spécification, utilisez le nom d’alias brut plutôt que cleanroom.spec_name$alias ; autrement dit, utilisez le nom de la fonction vide pour référencer une autre fonction dans cette spécification.

stage_path: stage_path

Chemin complet de la zone de préparation vers le fichier d’artefact. Par exemple, @DB.SCHEMA.STAGE/path/file.whl.

  • La zone de préparation doit être interne. Les zones de préparation externes ne sont pas prises en charge.

  • La zone de préparation doit avoir DIRECTORY activé : La zone de préparation contenant les artefacts doit avoir DIRECTORY = TRUE défini.

  • Format du chemin de la zone de préparation : Doit suivre le format @[DB.]SCHEMA.STAGE/path/to/file.ext.

  • Pas de déplacement de chemin : Les chemins de zone de préparation ne peuvent pas contenir .. ou \.

  • Cet artefact doit exister : Le fichier doit exister au niveau du chemin de la zone de préparation spécifié lors de l’enregistrement du bundle de code.

  • La zone de préparation doit avoir le chiffrement coté serveur SNOWFLAKE_SSE activé. Lors de la création ou de la modification de la zone de préparation, définissez ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE').

  • Si vous poussez, supprimez ou mettez à jour un fichier de code en zone de préparation, vous devez appeler ALTER STAGE stage name REFRESH pour vous assurer que la collaboration dispose des informations les plus récentes sur la zone de préparation. Les mises à jour du code ne sont prises en charge qu’avant l’enregistrement de la spécification de code, car c’est à ce moment-là que la version est attribuée et que la somme de contrôle de hachage est calculée.

description: description_text (Facultatif)

Une description de l’artefact (500 caractères maximum).

content_hash: sha256_hash (Facultatif)

Hachage SHA-256 en minuscules pour la vérification de l’intégrité (64 caractères hexadécimaux).

functions (Nécessaire si aucune procédure n’est définie)

Une liste de définitions UDF ou UDTF.

name: identifier

Le nom de la fonction à exposer au modèle appelant. Doit être un identificateur Snowflake valide.

type

Le type de fonction. L’un des rôles suivants : UDF ou UDTF.

language

La langue de la fonction. Actuellement, seulement PYTHON est pris en charge.

runtime_version: python_version (Facultatif)

Version de l’environnement d’exécution Python à utiliser. Versions prises en charge : 3.10 à 3.14.

handler: handler

Le nom de la fonction de gestionnaire dans le code de la fonction à appeler lorsque name est appelé.

arguments (Facultatif)

Arguments de fonction sous forme de liste de paires nom-type. Les types doivent être des types SQL Snowflake valides.

returns: sql_type

Le type de retour. Pour les UDFs, utilisez un type SQL tel que STRING ou FLOAT. Pour UDTFs, utilisez TABLE(column_definitions).

packages (Facultatif)

Une liste des paquets utilisés par ce code. Il peut s’agir de n’importe lesquels de ces paquets Anaconda Python ou de ces paquets API Snowpark. Par exemple : snowflake-snowpark-python, numpy.

imports (Facultatif)

Une liste d’artefacts à importer. Il doit s’agir d’alias de la liste des artefacts de cette spécification.

code_body (Facultatif)

Code Python en ligne. Mutuellement exclusifs avec les importations en zone de préparation. La taille maximale est de 12 MB.

description: description_text (Facultatif)

Une description de la fonction (500 caractères maximum).

procedures (Nécessaire si aucune fonction n’est définie)

Une liste de définitions de procédures stockées. Les champs sont similaires à functions, sauf qu’il n’y a pas de champ type.