Inicializando um projeto a partir de um modelo¶
Para facilitar a instanciação de projetos, Snowflake CLI implementa modelos de projeto. É possível criar seus próprios modelos de projeto ou usar amostras fornecidas pela Snowflake no repositório Git público de modelos de CLI da Snowflake.
O comando snow init cria um diretório de projeto e o preenche com a estrutura de arquivo definida no modelo especificado.
Se você não fornecer a opção
--no-interactive
, o comando solicitará cada variável especificada pelo modelo (template.yml
) que você não fornecer com a opção-D
(ou--variable
).Se você fornecer a opção
--no-interactive
, o comando usará os valores padrão das variáveis (definidas pelo modelo). Se o modelo não definir um valor padrão para uma variável e você não usar a opção-D
para fornecê-lo, o comando sairá com um erro.
O comando snow init
usa a seguinte sintaxe:
snow init PATH [--template-source SOURCE] [--template NAME] [-D key1=value1 -D key2=value2...] [--no-interactive]
onde:
PATH
é um novo diretório onde o comando inicializa o projeto. Se você especificar um diretório existente, o comando sairá com um erro.[--template-source SOURCE]
é um dos seguintes:Um caminho de arquivo local do diretório do modelo.
Um URL de Git válido para o diretório com o modelo de projeto. Se não for especificado, o comando assume como padrão o repositório Git de modelos de CLI do Snowflake.
[--template NAME]
especifica qual subdiretório deSOURCE
usar como modelo (útil para fontes remotas). Se não for fornecido,SOURCE
será tratado como um único modelo.[-D key1=value1 -D key2=value2...]
é uma lista de um ou mais pares nome-valor, fornecendo valores para variáveis definidas no modelo (emtemplate.yml
). O comando não solicita variáveis fornecidas com esta opção.[--no-interactive]
desabilita prompts para entradas do usuário. Se você usar esta opção, será necessário fornecer todos os valores necessários com as opções[-D key1=value1 -D key2=value2...]
; caso contrário, o comando existirá com um erro.
Para mais informações, consulte a referência de comando snow init.
Exemplos¶
Inicialização de projeto a partir do modelo
example_snowpark
do repositório padrão:snow init my_snowpark_test_app --template example_snowpark
Os prompts de comando para (os valores padrão são exigidos entre colchetes):
Project identifier (used to determine artifacts stage path) [my_snowpark_project]: What stage should the procedures and functions be deployed to? [dev_deployment]: snowpark Initialized the new project in my_snowpark_test_app
Inicialize o projeto a partir do modelo local.
snow init new_streamlit_project --template-source ../local_templates/example_streamlit -D query_warehouse=dev_wareshouse -D stage=testing
Neste exemplo, as variáveis
query_warehouse
estage
são especificadas com a opção-D
, portanto, o comando solicita apenas o seguinte:Name of the streamlit app [streamlit_app]: Initialized the new project in new_streamlit_project
Criação de modelos personalizados¶
Layout de modelo¶
Um modelo de projeto requer um arquivo template.yml
com dados que explicam como o comando snow init
deve renderizar o modelo. Se o arquivo não estiver presente no diretório raiz do modelo, snow init
termina com um erro. Para obter mais informações, consulte a sintaxe template.yml.
Sintaxe do modelo¶
Variáveis e expressões de modelo devem ser delimitadas entre <! ... !>
. Snowflake CLI também oferece suporte a expressões e filtros básicos jinja2, por exemplo:
some_file_spec: filename: <! file_name !> size: "<! [ max_file_size_mb, 4 ] | max !> MB"
Os modelos de projeto Snowflake CLI também oferecem suporte filtro e variável reservados a seguir:
Variável
project_dir_name
, que resolve automaticamente para o diretório raiz do projeto criado.Por exemplo, suponha que seu arquivo
snowflake.yml
contenha o seguinte:definition_version: "1.1" snowpark: project_name: <! project_dir_name !> ...
Se você executar o seguinte comando para inicializar o projeto a partir do modelo personalizado:
snow init examples/new_snowpark_project --template-source my_example_template/
O comando
snow init
renderiza o arquivosnowflake.yml
da seguinte forma:definition_version: "1.1" snowpark: project_name: new_snowpark_project ...
Filtro
to_snowflake_identifier
, que formata cadeias de caracteres fornecidas pelo usuário em identificadores Snowflake formatados corretamente.A Snowflake recomenda fortemente usar este filtro quando uma variável faz referência a um objeto Snowflake.
Por exemplo, suponha que seu arquivo
snowflake.yml
contenha o seguinte:definition_version: "1.1" streamlit: name: <! name | to_snowflake_identifier !> ...
Se você executar o seguinte comando para inicializar um projeto a partir do modelo personalizado:
snow init examples/streamlit --template-source my_example_template2/ -D name='My test streamlit'
O comando
snow init
renderiza o arquivosnowflake.yml
da seguinte forma:definition_version: "1.1" streamlit: name: My_test_streamlit ...
Se uma cadeia de caracteres não puder ser convertida em um identificador Snowflake válido, o comando
snow init
sairá com um erro, conforme mostrado:snow init examples/streamlit --template-source my_example_template2/ -D name=1234567890
╭─ Error ────────────────────────────────────────────────────────────────────────╮ │ Value '123456789' cannot be converted to valid Snowflake identifier. │ │ Consider enclosing it in double quotes: "" │ ╰────────────────────────────────────────────────────────────────────────────────╯
Sobre o arquivo de modelo do projeto template.yml
¶
O arquivo de modelo de projeto template.yml
armazena todos os dados necessários para renderizar o projeto. Por exemplo:
minimum_cli_version: "2.7.0"
files_to_render:
- snowflake.yml
variables:
- name: name
default: streamlit_app
prompt: "Name of the streamlit app"
type: string
- name: stage
default: my_streamlit_stage
prompt: "What stage should the app be deployed to?"
type: string
- name: query_warehouse
default: my_streamlit_warehouse
prompt: "On which warehouse SQL queries issued by the application are run"
type: string
A tabela a seguir lista as propriedades em um arquivo de modelo de projeto template.yml
.
Propriedade |
Definição |
---|---|
minimum_cli_version opcional, cadeia de caracteres (padrão: Nenhum) |
Versão de Snowflake CLI mínima Se especificado, o comando |
files_to_render opcional, lista de cadeia de caracteres (padrão: |
Lista de arquivos a serem renderizados pelo comando Nota Arquivos de modelo não incluídos nesta lista são adicionados ao novo projeto, mas seu conteúdo permanece inalterado. |
variáveis opcional, lista de variáveis (padrão: |
Lista de variáveis de modelo. Ele suporta a personalização de prompts, fornecendo valores padrão para variáveis opcionais e verificação básica de tipos. Consulte a tabela Parâmetros de propriedade de variáveis abaixo para obter mais detalhes. Os valores de variável são determinados em ordem a partir desta lista. Se você omitir qualquer variável usada no arquivo ╭─ Error ─────────────────────────────────────────────────────────╮
│ Cannot determine value of variable undefinded_variable │
╰─────────────────────────────────────────────────────────────────╯
|
A tabela a seguir lista os parâmetros de uma propriedade de variável.
Propriedade |
Definição |
---|---|
nome obrigatório, cadeia de caracteres |
Nome da variável. É usado em arquivos de modelo, como |
prompt opcional, cadeia de caracteres |
Prompt para solicitar ao usuário um valor. Se você não definir esse parâmetro, o comando exibirá o nome do parâmetro como texto do prompt. Se você definir o prompt da seguinte forma: variables:
- name: project_id
prompt: The identifier for the project
The identifier for the project:
|
padrão opcional, cadeia de caracteres/inteiro/float |
Valor padrão da variável. Se não for fornecido, a variável será tratada como necessária, portanto, o usuário precisa fornecer o valor após um prompt ou especificando-o com a opção de linha de comando O exemplo a seguir define duas variáveis com valores padrão: variables:
- name: max_file_size_mb
default: 16
- name: file_name
default: 'default_file_name.zip'
Quando executado, o comando file_name [default_file_name.zip]:
max_file_size_mb [16]: 5
Neste exemplo, o comando usa o valor padrão ( |
tipo opcional, cadeia de caracteres |
Tipo de dados da variável. Os valores válidos incluem: O exemplo a seguir define uma variável como um tipo de dados variables:
- name: max_file_size_mb
type: int
Quando executado, o comando snow init exibe os seguintes erros se o usuário inserir um valor do tipo de dados errado: max_file_size_mb: not an int
Error: 'not an int' is not a valid integer.
max_file_size_mb: 14.5
Error: '14.5' is not a valid integer.
max_file_size_mb: 6
Initialized the new project in example_dir
|