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"
Copy

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"
Copy

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 %>"
Copy

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"
Copy

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"
Copy

Pour plus d’informations sur l’utilisation de variables env, voir Stockage de variables dans le fichier de définition du projet snowflake.yml.