Criação de modelos de arquivo de definição de projeto

Em algumas situações, você pode querer referenciar informações já presentes em um arquivo de definição de projeto em outro lugar do arquivo. A Snowflake CLI oferece suporte à criação de modelos no arquivo de definição do projeto.

Os modelos de arquivo de definição de projeto usam a sintaxe <% %> para especificar os modelos. O exemplo a seguir usa a seção env para definir um nome para um aplicativo Streamlit:

definition_version: 2
env:
  name: "my-app"
entities:
  my_streamlit:
    type: "streamlit"
    identifier: <% ctx.env.name %>
Copy

A sintaxe <% ctx.env.name %> faz referência a um objeto de contexto global que fornece acesso à definição do projeto. O objeto ctx tem a mesma estrutura que a definição do projeto. É possível acessar atributos de objetos definidos usando a notação de ponto. Exemplos de uso incluem:

  • <% ctx.entities.pkg.identifier %> para acessar o nome de um pacote do Native App com o ID pkg.

  • <% ctx.entities.function.stage_name %> para acessar o nome do estágio de UDFs Snowpark e procedimentos.

  • <% ctx.entities.my_streamlit.identifier %> para acessar o nome do painel do Streamlit.

É possível substituir qualquer variável definida na seção env do arquivo de definição do projeto snowflake.yml configurando uma variável de ambiente shell com o mesmo nome e diferenciando maiúsculas e minúsculas. Por exemplo, para substituir o valor do nome definido no exemplo, você pode executar o seguinte comando shell:

export name="other"
Copy

Padrões de modelo de acesso

Os padrões de modelo permitem que você acesse os campos padrão gerados automaticamente a partir de um arquivo de definição de projeto, mesmo que os campos não estejam explicitamente definidos. Para ilustrar, considere o seguinte arquivo de definição de projeto do Snowflake Native App:

definition_version: 2
entities:
  pkg:
    type: application package
    artifacts:
      - src: app/*
        dest: ./
  app:
    type: application
    from:
      target: pkg
Copy

Esta definição fornece informações suficientes para criar um Snowflake Native App, de modo que os valores padrão para o pacote do aplicativo e a instância do aplicativo são gerados automaticamente quando você cria o aplicativo. É possível então acessar esses valores usando a seguinte sintaxe:

<% ctx.entities.app.identifier %>
<% ctx.entities.pkg.identifier %>
Copy