Validação de um pacote de aplicativo¶
Pré-requisitos¶
Você deve ter uma conexão existente em seu arquivo
config.toml
.Você deve ter um arquivo
snowflake.yml
em seu projeto Snowflake Native App.
Snowflake CLI valida automaticamente um script de configuração Snowflake Native App, juntamente com quaisquer outros arquivos SQL inclusos usando a instrução SQL EXECUTE IMMEDIATE, quando você executa (snow app run
) ou implementa (snow app deploy
) um aplicativo. Ela usa o script mais recentemente carregado por um dos comandos. A validação verifica erros de sintaxe SQL, referências de objeto inválidas e práticas recomendadas. Se a validação do script falhar, o comando executado será anulado, mas não reverterá automaticamente os arquivos preparados.
Para obter mais informações sobre scripts de configuração Snowflake Native App, consulte Criação de um script de configuração na documentação do Snowflake Native App Framework.
Como validar um script de configuração manualmente¶
Ocasionalmente, é possível querer validar um script de configuração antes de implementar um aplicativo para evitar possíveis impactos que possam ocorrer se a validação falhar durante o processo de implementação. O comando snow app validate
valida um script de configuração sem precisar executar ou implementar um aplicativo. Ele carrega os arquivos de origem para um estágio de rascunho separado, que é descartado automaticamente após a conclusão do comando para evitar perturbar os arquivos no estágio de origem do aplicativo.
Crie uma conexão, se necessário.
Execute o comando
snow app validate
de dentro do seu projeto, semelhante ao seguinte:snow app validate --connection="dev"
Quando bem-sucedido, o comando retorna a seguinte mensagem:
Snowflake Native App validation succeeded.
Se a validação falhar, a seguinte mensagem de erro, juntamente com quaisquer outras mensagens de erro, será exibida:
Snowflake Native App setup script failed validation.
Se quiser consultar a saída de validação bruta como JSON, é possível executar snow app validate--format json
, conforme mostrado:
snow app validate --format json
{
"errors": [],
"warnings": [],
"status": "SUCCESS"
}
onde:
errors mostra uma lista de erros, se existirem. Erros causam falha na validação.
warnings mostra uma lista de avisos, se existirem.
status mostra o resultado da validação: SUCCESS ou FAILURE.
Se a validação encontrar algum erro que cause falha na validação, ou avisos que permitam o sucesso, o comando exibirá as seguintes informações sobre o erro ou aviso:
message
: Mensagem legível por humanos para o erro ou aviso.cause
: Razão pela qual o constructo SQL é considerado um erro ou aviso.errorCode
: Código numérico associado ao erro ou aviso.fileName
: Nome do arquivo com o erro ou aviso, relativo à raiz do estágio.line
: Número da linha no arquivo que identifica o local do erro ou aviso.column
: Número da coluna na linha onde ocorreu o erro ou aviso.
O exemplo a seguir mostra uma validação com falha que continha avisos e erros:
snow app validate --format json
{
"errors": [
{
"message": "Error in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/empty.sql': Empty SQL statement.",
"cause": "Empty SQL statement.",
"errorCode": "000900",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/empty.sql",
"line": -1,
"column": -1
},
{
"message": "Error in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/second.sql': Unsupported feature 'CREATE VERSIONED SCHEMA without OR ALTER'.",
"cause": "Unsupported feature 'CREATE VERSIONED SCHEMA without OR ALTER'.",
"errorCode": "000002",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/second.sql",
"line": -1,
"column": -1
},
{
"message": "Error in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql': File '/does-not-exist.sql' cannot be found in the same stage as the setup script is located.",
"cause": "File '/does-not-exist.sql' cannot be found in the same stage as the setup script is located.",
"errorCode": "093159",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
"line": -1,
"column": -1
}
],
"warnings": [
{
"message": "Warning in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql' on line 11 at position 35: APPLICATION ROLE should be created with IF NOT EXISTS.",
"cause": "APPLICATION ROLE should be created with IF NOT EXISTS.",
"errorCode": "093352",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
"line": 11,
"column": 35
},
{
"message": "Warning in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql' on line 15 at position 13: CREATE Table statement in the setup script should have \"IF NOT EXISTS\", \"OR REPLACE\", or \"OR ALTER\".",
"cause": "CREATE Table statement in the setup script should have \"IF NOT EXISTS\", \"OR REPLACE\", or \"OR ALTER\".",
"errorCode": "093351",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
"line": 15,
"column": 13
},
{
"message": "Warning in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql' on line 15 at position 13: Table identifier 'MY_TABLE' should include its parent schema name.",
"cause": "Table identifier 'MY_TABLE' should include its parent schema name.",
"errorCode": "093353",
"fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
"line": 15,
"column": 13
}
],
"status": "FAIL"
}