Utiliser des variables dans SQL¶
Note
La prise en charge des variables nécessite la version 1.1 de la définition du projet.
Vous pouvez également utiliser les fichiers de projet pour définir des variables que d’autres commandes, telles que snow sql
, peuvent utiliser. La section env
du fichier de définition du projet (typiquement, snowflake.yml
) vous permet de définir des variables comme indiqué :
definition_version: 2
env:
database: "dev"
role: "eng_rl"
Après avoir ajouté la section env
au fichier de définition du projet, vous pouvez transmettre les variables à la commande snow sql
au lieu de spécifier la variable et la valeur sur la ligne de commande.
Au lieu de cela, spécifiez la base de données et le rôle sur la ligne de commande avec l’option --variable
, comme indiqué :
snow sql \
-q "grant usage on database <% database %> to <% role %>" \
-D "database=dev" \
-D "role=eng_rl"
vous pouvez spécifier les variables définies dans la section env
comme indiqué :
snow sql -q "grant usage on database <% ctx.env.database %> to <% ctx.env.role %>"
Vous pouvez inclure la section env
en plus des autres sections que vous incluez dans le fichier de définition du projet.
definition_version: 2
entities:
test_function:
type: "function"
stage: "dev_deployment"
artifacts: ["app/"]
handler: "functions.hello_function"
signature: ""
returns: string
hello_procedure:
type: "procedure"
stage: "dev_deployment"
artifacts: ["app/"]
handler: "procedures.hello_procedure"
signature:
- name: "name"
type: "string"
returns: string
env:
database: "dev"
role: "eng_rl"
Note
Si votre fichier de définition de projet actuel utilise definition_version: 1
, vous devez le mettre à jour vers definition_version: 1.1
si vous voulez profiter de la fonction des variables. Si vous ne modifiez pas la valeur, Snowflake CLI ignore la section env
, mais les autres types de projets (snowpark
, dans cet exemple) fonctionnent toujours comme prévu.
Vous pouvez remplacer n’importe quelle variable définie dans le 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 database
définie dans l’exemple, vous pouvez exécuter la commande shell suivante :
export database="other"
Pour plus d’informations sur l’utilisation de variables env
, voir Stockage de variables dans le fichier de définition du projet snowflake.yml.