snow object create¶
Create an object of a given type. Check documentation for the list of supported objects and parameters.
Syntax¶
snow object create
<object_type>
<object_attributes>
--json <object_json>
--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¶
object_type
Type of object. For example table, database, compute-pool.
object_attributes...
Object attributes provided as a list of key=value pairs, for example name=my_db comment=’created with Snowflake CLI’. Check documentation for the full list of available parameters for every object. .
Options¶
--json TEXT
Object definition in JSON format, for example ‘{“name”: “my_db”, “comment”: “created with Snowflake CLI”}’. Check documentation for the full list of available parameters for every object.
--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¶
The snow object create
command creates one of the following types Snowflake objects, based on the provided object attributes or definitions:
account
catalog-integration
compute-pool
database
database-role
dynamic-table
event-table
external-volume
function
image-repository
managed-account
network-policy
notebook
notification-integration
pipe
procedure
role
schema
service
stage
stream
table
task
user-defined-function
view
warehouse
For each object, you must specify the appropriate object details using either the object attributes or the object definitions.
Use the
object_attributes
parameter specifies the object details as a series of<key>=<value>
pairs, such as:snow object create database name=my_db comment="Created with Snowflake CLI"
Use the
--json object_definition
option to specify the object details as JSON, such as:snow object create table name=my_table columns='[{"name":"col1","datatype":"number", "nullable":false}]' constraints='[{"name":"prim_key", "column_names":["col1"], "constraint_type":"PRIMARY KEY"}]' --database my_db
See Examples for more examples.
Note
The following object types require a database to be identified in the connection configuration, such as config.toml
, or passed to the command using the --database
option.
image-repository
schema
service
table
task
The following sections describe the attributes that Snowflake CLI supports for selected object types.
You can find attributes for other types of objects by checking their corresponding SQL CREATE command references, such as CREATE ACCOUNT.
Compute pool object attributes¶
Attribute |
Description |
---|---|
name required, string |
Snowflake object identifier. |
min_nodes required, integer |
Minimum number of nodes for the compute pool. |
max_nodes required, integer |
Maximum number of nodes for the compute pool. |
instance_family required, string |
Name of the instance family. For more information about instance families, refer to the SQL CREATE COMPUTE POOL command. |
auto_resume optional, string |
Whether to resume the compute pool automatically when any statement that requires the compute pool is submitted. |
comment optional, string |
Comment describing the compute pool. |
auto_suspend_secs optional, string |
Number of seconds of inactivity after which you want Snowflake to automatically suspend the compute pool. |
Database object attributes¶
Attribute |
Description |
---|---|
name required, string |
Snowflake object identifier. |
comment optional, string |
Comment describing the database. |
data_retention_time_in_days optional, integer |
Number of days for which Time Travel actions (CLONE and UNDROP) can be performed on the schema, as well as the default Time Travel retention time for all tables created in the schema. |
default_ddl_collation optional, string |
Default collation specification for all schemas and tables added to the database. You can override this default at the schema and individual table level. |
max_data_extension_time_in_days optional, integer |
Maximum number of days for which Snowflake can extend the data retention period for tables in the database to prevent streams on the tables from becoming stale. |
suspend_task_after_num_failures optional, integer |
Number of consecutive failed task runs after which the current task is suspended automatically. |
user_task_managed_initial_warehouse_size optional, integer |
Size of the compute resources to provision for the first run of the task, before a task history is available for Snowflake to determine an ideal size. Possible values include: XSMALL, SMALL, MEDIUM, LARGE, and XLARGE. |
user_task_timeout_ms optional, integer |
Time limit, in milliseconds, for a single run of the task before it times out. |
Image repository object attributes¶
Attribute |
Description |
---|---|
name required, string |
Snowflake object identifier. |
Schema object attributes¶
Attribute |
Description |
---|---|
name required, string |
Snowflake object identifier. |
comment optional, string |
Comment describing the schema. |
data_retention_time_in_days optional, integer |
Number of days for which Time Travel actions (CLONE and UNDROP) can be performed on the schema, as well as the default Time Travel retention time for all tables created in the schema. |
default_ddl_collation optional, string |
Default collation specification for all schemas and tables added to the database. You can override this default at the schema and individual table level. |
max_data_extension_time_in_days optional, integer |
Maximum number of days for which Snowflake can extend the data retention period for tables in the database to prevent streams on the tables from becoming stale. |
suspend_task_after_num_failures optional, integer |
Number of consecutive failed task runs after which the current task is suspended automatically. |
user_task_managed_initial_warehouse_size optional, integer |
Size of the compute resources to provision for the first run of the task, before a task history is available for Snowflake to determine an ideal size. |
user_task_timeout_ms optional, integer |
Time limit, in milliseconds, for a single run of the task before it times out. |
Service object attributes¶
Attribute |
Description |
---|---|
name required, string |
Snowflake object identifier. |
compute_pool required, string |
Name of the compute pool in your account on which to run the service. |
spec required, object |
Service specification. See service specification table for details. |
external_access_integrations optional, string list |
Names of the external access integrations that allow your service to access external sites. |
auto_resume optional, boolean |
Whether to automatically resume a service when a service function or ingress is called. |
min_instances optional, integer |
Minimum number of service instances to run. |
max_instances optional, integer |
Maximum number of service instances to run. |
query_warehouse optional, string |
Warehouse to use if a service container connects to Snowflake to execute a query but does not explicitly specify a warehouse to use. |
comment optional, string |
Comment for the service. |
Service specification attributes
Attribute |
Description |
---|---|
spec_type required, string |
Type of the service specification. Possible values include |
spec_text required, string |
(Valid only for Service specification. You can use a pair of dollar signs ($$) to delimit the beginning and ending of the specification string. |
stage required, string |
(Valid only for Snowflake internal stage where the specification file is stored, such as |
name required, string |
(Valid only for Path to the service specification file on the stage, such as |
Table object attributes¶
Attribute |
Description |
---|---|
name required, string |
Snowflake object identifier. The name must be unique for the schema in which the table is created. |
kind optional, string |
Table type. Possible values include: TABLE for permanent tables, TEMPORARY, and TRANSIENT. |
comment optional, string |
Description of the table. |
cluster_by[] optional, string list |
List of one or more columns or column expressions in the table as the clustering key. |
enable_schema_evolution optional, boolean |
Whether to enable or disable schema evolution for the table. |
change_tracking optional, boolean |
Whether to enable or disable change tracking for the table. |
data_retention_time_in_days optional, integer |
Retention period, in days, for the table so that Time Travel actions SELECT, CLONE, UNDROP can be performed on historical data in the table. |
max_data_extension_time_in_days optional, integer |
mMximum number of days Snowflake can extend the data retention period to prevent streams on the table from becoming stale. |
default_ddl_collation optional, string |
Default collation specification for the columns in the table, including columns added to the table in the future. |
columns required, column list |
List of column definitions. See Column definition attributes. |
constraints optional, constraint list |
List of constraint definitions. See Constrain definition attributes. |
Column definition attributes
Attribute |
Description |
---|---|
name required, string |
Column name. |
datatype required, string |
Type of data contained in the column. |
nullable optional, boolean |
Whether the column allows NULL values. |
collate optional, string |
Collation to use for column operations such as string comparison. |
default optional, string |
Whether to automatically insert a default value in the column if a value is not explicitly specified with an INSERT or CREATE TABLE AS SELECT statement. |
autoincrement optional, boolean |
Whether to automatically increment and include the number in successive columns. |
autoincrement_start optional, integer |
Staring value for the column. |
autoincrement_increment optional, integer |
Increment for determining the next auto-incremented number. |
comment optional, string |
Column description. |
Constraint definition attributes
Attribute |
Description |
---|---|
name required, string |
Constraint name. |
column_names required, string list |
Names of columns to apply the constraint. |
constraint_type required, string |
Type of the constraint. Possible values include: UNIQUE, PRIMARY KEY and FOREIGN KEY. |
referenced_table_name required, string |
(Valid only for Name of table referenced by foreign key |
referenced_column_names optional, string |
(Valid only for Names of columns referenced by foreign key |
Task attributes¶
Attribute |
Description |
---|---|
name required, string |
Snowflake object identifier. |
definition required, string |
SQL definition for the task. It can be a single SQL statement, a call to a stored procedure, or procedural logic using Snowflake scripting. |
warehouse optional, string |
Virtual warehouse that provides compute resources for task runs. |
schedule optional, string |
Schedule for periodically running the task. See Task schedule attributes for details. |
comment optional, string |
Comment description for the task. |
predecessors optional, string list |
One or more predecessor tasks for the current task. |
user_task_managed_initial_warehouse_size optional, string |
Size of the compute resources to provision for the first run of the task. |
user_task_timeout_ms optional, string |
Time limit, in milliseconds, on a single run of the task before it times out. |
suspend_task_after_num_failures optional, integer |
Number of consecutive failed task runs after which the current task is suspended automatically. |
condition optional, string |
Boolean SQL expression condition; multiple conditions joined with AND/OR are supported. |
allow_overlapping_execution optional, boolean |
Whether to allow multiple instances of the DAG to run concurrently. |
Task schedule attributes
Attribute |
Description |
---|---|
schedule_type optional, string |
Type of the schedule. Possible values include |
cron_expr optional, string |
(Valid only for A cron expression for the task execution, such as |
timezone optional, string |
(Valid only for Time zone for the schedule, for example |
minutes optional, string |
(Valid only for Number of minutes between each task run. |
Warehouse attributes¶
Attribute |
Description |
---|---|
name required, string |
Snowflake object identifier. |
comment optional, string |
Description of the warehouse. |
warehouse_type optional, string |
Type of warehouse. Possible values include: STANDARD and SNOWPARK-OPTIMIZED. |
warehouse_size optional, string |
Size of warehouse. Possible values include: XSMALL, SMALL, MEDIUM, LARGE, XLARGE, XXLARGE, XXXLARGE, X4LARGE, X5LARGE, and X6LARGE. |
auto_suspend optional, string |
Time, in seconds, before the warehouse automatically suspends itself. |
auto_resume optional, string |
Whether to automatically resume a warehouse when a SQL statement is submitted to it. Possible values include: “true” and “false”. |
max_concurrency_level optional, integer |
Concurrency level for SQL statements executed by a warehouse cluster. |
statement_queued_timeout_in_seconds optional, integer |
Time, in seconds, a SQL statement can be queued on a warehouse before it is canceled by the system. |
statement_timeout_in_seconds optional, integer |
Time, in seconds, after which a running SQL statement is canceled by the system. |
resource_monitor optional, string |
Name of a resource monitor that is explicitly assigned to the warehouse. When a resource monitor is explicitly assigned to a warehouse, the monitor controls the monthly credits used by the warehouse. |
Examples¶
Create a database object using the
option-attributes
parameter:snow object create database name=my_db comment='Created with Snowflake CLI'
Create a table object using the
option-attributes
parameter:snow object create table name=my_table columns='[{"name":"col1","datatype":"number", "nullable":false}]' constraints='[{"name":"prim_key", "column_names":["col1"], "constraint_type":"PRIMARY KEY"}]' --database my_db
Create a database using the
--json object-definition
option:snow object create database --json '{"name":"my_db", "comment":"Created with Snowflake CLI"}'
Create a table using the
--json object-definition
option:snow object create table --json "$(cat table.json)" --database my_db
where
table.json
contains the following:{ "name": "my_table", "columns": [ { "name": "col1", "datatype": "number", "nullable": false } ], "constraints": [ { "name": "prim_key", "column_names": ["col1"], "constraint_type": "PRIMARY KEY" } ] }