snow app validate¶
Validates a deployed Snowflake Native App’s setup script.
Syntax¶
snow app validate
--package-entity-id <package_entity_id>
--app-entity-id <app_entity_id>
--project <project_definition>
--env <env_overrides>
--connection <connection>
--host <host>
--port <port>
--account <account>
--user <user>
--password <password>
--authenticator <authenticator>
--private-key-file <private_key_file>
--token-file-path <token_file_path>
--database <database>
--schema <schema>
--role <role>
--warehouse <warehouse>
--temporary-connection
--mfa-passcode <mfa_passcode>
--enable-diag
--diag-log-path <diag_log_path>
--diag-allowlist-path <diag_allowlist_path>
--format <format>
--verbose
--debug
--silent
Arguments¶
None
Options¶
--package-entity-id TEXT
The ID of the package entity on which to operate when definition_version is 2 or higher.
--app-entity-id TEXT
The ID of the application entity on which to operate when definition_version is 2 or higher.
-p, --project TEXT
Path where Snowflake project resides. Defaults to current working directory.
--env TEXT
String in format of key=value. Overrides variables from env section used for templates. Default: [].
--connection, -c, --environment TEXT
Name of the connection, as defined in your
config.toml
file. Default:default
.--host TEXT
Host address for the connection. Overrides the value specified for the connection.
--port INTEGER
Port for the connection. Overrides the value specified for the connection.
--account, --accountname TEXT
Name assigned to your Snowflake account. Overrides the value specified for the connection.
--user, --username TEXT
Username to connect to Snowflake. Overrides the value specified for the connection.
--password TEXT
Snowflake password. Overrides the value specified for the connection.
--authenticator TEXT
Snowflake authenticator. Overrides the value specified for the connection.
--private-key-file, --private-key-path TEXT
Snowflake private key file path. Overrides the value specified for the connection.
--token-file-path TEXT
Path to file with an OAuth token that should be used when connecting to Snowflake.
--database, --dbname TEXT
Database to use. Overrides the value specified for the connection.
--schema, --schemaname TEXT
Database schema to use. Overrides the value specified for the connection.
--role, --rolename TEXT
Role to use. Overrides the value specified for the connection.
--warehouse TEXT
Warehouse to use. Overrides the value specified for the connection.
--temporary-connection, -x
Uses connection defined with command line parameters, instead of one defined in config. Default: False.
--mfa-passcode TEXT
Token to use for multi-factor authentication (MFA).
--enable-diag
Run Python connector diagnostic test. Default: False.
--diag-log-path TEXT
Diagnostic report path. Default: <temporary_directory>.
--diag-allowlist-path TEXT
Diagnostic report path to optional allowlist.
--format [TABLE|JSON]
Specifies the output format. Default: TABLE.
--verbose, -v
Displays log entries for log levels
info
and higher. Default: False.--debug
Displays log entries for log levels
debug
and higher; debug logs contain additional information. Default: False.--silent
Turns off intermediate output to console. Default: False.
--help
Displays the help text for this command.
Usage notes¶
To avoid affecting files in the application’s source stage, this command uses the scratch_stage
of the application package
entity to create a blank stage, to upload project files to this stage, to run validation, and to drop the stage.
Validation returns errors and warnings separately. Errors cause the command to exit with an exit code of 1, but warnings do not.
Examples¶
The following example shows the output for a successful validation:
snow app validate
Validating Snowflake Native App setup script. Checking if stage st_version_pkg_<user>.app_src.stage_snowflake_cli_scratch exists, or creating a new one if none exists. Performing a diff between the Snowflake stage and your local deploy_root ('<APP_PATH>/apps/st-version/output/deploy') directory. There are no new files that exist only on the stage. There are no existing files that have been modified, or their status is unknown. There are no existing files that are identical to the ones on the stage. New files only on your local: README.md manifest.yml setup_script.sql streamlit/environment.yml streamlit/ui.py Uploading diff-ed files from your local <APP_PATH>/apps/st-version/output/deploy directory to the Snowflake stage. Dropping stage st_version_pkg_<user>.app_src.stage_snowflake_cli_scratch. Snowflake Native App validation succeeded.
The following example shows the output for a successful validation, using the JSON output format:
snow app validate --format json
{ "errors": [], "warnings": [], "status": "SUCCESS" }
The following example shows the output when the validation encounters errors and warnings, using the JSON output format:
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" }