Usos das variáveis em SQL

Nota

O suporte a variáveis requer a versão 1.1 da definição de projeto.

Também é possível usar arquivos de projeto para definir variáveis que outros comandos, como snow sql, podem usar. A seção env no arquivo de definição do projeto (normalmente, snowflake.yml) permite que você defina variáveis como mostrado:

definition_version: 2
env:
  database: "dev"
  role: "eng_rl"
Copy

Após adicionar a seção env ao arquivo de definição do projeto, é possível passar as variáveis ao comando snow sql em vez de especificar a variável e o valor na linha de comando.

Em vez de especificar o banco de dados e a função na linha de comando com a opção --variable, conforme mostrado:

snow sql \
-q "grant usage on database <% database %> to <% role %>" \
-D "database=dev" \
-D "role=eng_rl"
Copy

você pode especificar as variáveis definidas na seção env conforme mostrado:

snow sql -q "grant usage on database <% ctx.env.database %> to <% ctx.env.role %>"
Copy

É possível incluir a seção env além de quaisquer outras seções incluídas no arquivo de definição do projeto.

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

Nota

Se o seu arquivo de definição de projeto atual usar definition_version: 1, você deverá atualizá-lo para definition_version: 1.1 se quiser aproveitar o recurso de variáveis. Se você não alterar o valor, Snowflake CLI ignorará a seção env, mas os outros tipos de projetos (snowpark, neste exemplo) ainda funcionarão como esperado.

Você pode substituir qualquer variável definida no arquivo de definição de projeto snowflake.yml definindo uma variável de ambiente shell com o mesmo nome (diferencia maiúsculas de minúsculas). Por exemplo, para substituir o valor definido database no exemplo, você pode executar o seguinte comando shell:

export database="other"
Copy

Para obter mais informações sobre o uso de variáveis env, consulte Armazenamento de variáveis no arquivo de definição de projeto snowflake.yml.