Créer des modèles de fichiers de définition de projet¶
Dans certaines situations, vous souhaiterez peut-être référencer des informations déjà présentes dans un fichier de définition de projet à un autre emplacement du fichier. Snowflake CLI prend en charge la modélisation du fichier de définition de projet.
Les modèles de fichiers de définition de projet utilisent la syntaxe <% … %>
pour spécifier les modèles. L’exemple suivant utilise la section env
pour définir un nom pour une application Streamlit :
definition_version: 2
env:
name: "my-app"
entities:
my_streamlit:
type: "streamlit"
identifier: <% ctx.env.name %>
La syntaxe <% ctx.env.name %>
fait référence à un objet de contexte global qui donne accès à la définition du projet. L’objet ctx
a la même structure que la définition du projet. Vous pouvez accéder aux attributs des objets définis à l’aide de la notation par points. Les exemples d’utilisation incluent :
<% ctx.entities.pkg.identifier %>
pour accéder au nom d’un paquet Native App avec l’IDpkg
.<% ctx.entities.function.stage_name %>
pour accéder au nom de la zone de préparation d’UDFs et procédures Snowpark.<% ctx.entities.my_streamlit.identifier %>
pour accéder au nom du tableau de bord Streamlit.
Vous pouvez remplacer n’importe quelle variable définie dans la section env
du fichier de définition du projet snowflake.yml
en définissant une variable d’environnement shell du même nom (sensible à la casse). Par exemple, pour remplacer la valeur de nom définie dans l’exemple, vous pouvez exécuter la commande shell suivante :
export name="other"
Accéder aux valeurs par défaut du modèle¶
Les valeurs par défaut du modèle vous permettent d’accéder aux champs par défaut et générés automatiquement à partir d’un fichier de définition de projet, même si les champs ne sont pas explicitement définis. Pour illustrer, considérons le fichier de définition de projet Snowflake Native App suivant :
definition_version: 2
entities:
pkg:
type: application package
artifacts:
- src: app/*
dest: ./
app:
type: application
from:
target: pkg
Cette définition fournit suffisamment d’informations pour créer une Snowflake Native App, de sorte que les valeurs par défaut du paquet d’application et de l’instance d’application sont automatiquement générées lorsque vous créez l’application. Vous pouvez ensuite accéder à ces valeurs en utilisant la syntaxe suivante :
<% ctx.entities.app.identifier %> <% ctx.entities.pkg.identifier %>