Skip to main content

tables

Creates, updates, deletes, gets or lists a tables resource.

Overview

Nametables
TypeResource
Idsnowflake.table.tables

Fields

The following fields are returned by SELECT queries:

A Snowflake table

NameDatatypeDescription
namestringSpecifies the name for the table, must be unique for the schema in which the table is created
database_namestringDatabase in which the table is stored
schema_namestringSchema in which the table is stored
automatic_clusteringbooleanIf Automatic Clustering is enabled for your account, specifies whether it is explicitly enabled or disabled for the table.
budgetstringName of the budget if the object is monitored by a budget
bytesinteger (int64)Number of bytes that will be scanned if the entire table is scanned in a query. Note that this number may be different than the number of actual physical bytes stored on-disk for the table
change_trackingbooleanChange tracking is enabled or disabled
cluster_byarraySpecifies one or more columns or column expressions in the table as the clustering key
columnsarray
commentstringComment for the table
constraintsarray
created_onstring (date-time)Date and time when the table was created.
data_retention_time_in_daysintegerSpecifies the retention period for the table so that Time Travel actions SELECT, CLONE, UNDROP can be performed on historical data in the table
default_ddl_collationstringSpecifies a default collation specification for the columns in the table, including columns added to the table in the future
dropped_onstring (date-time)Date and time when the table was dropped
enable_schema_evolutionbooleanTable has schema evolution enabled or disabled
kindstringTable type - permanent, transient, or temporary (default: PERMANENT)
max_data_extension_time_in_daysintegerSpecifies the retention period for the table so that Time Travel actions SELECT, CLONE, UNDROP can be performed on historical data in the table
ownerstringRole that owns the table
owner_role_typestringThe type of role that owns the object.
rowsinteger (int64)Number of rows in the table. Returns NULL for external tables.
search_optimizationbooleanIf ON, the table has the search optimization service enabled
search_optimization_bytesinteger (int64)Number of additional bytes of storage that the search optimization service consumes for this table
search_optimization_progressinteger (int64)Percentage of the table that has been optimized for search.
table_typestringType of the table

Methods

The following methods are available for this resource:

NameAccessible byRequired ParamsOptional ParamsDescription
list_tablesselectdatabase_name, schema_name, endpointlike, startsWith, showLimit, fromName, history, deepLists the tables under the database and schema.
fetch_tableselectdatabase_name, schema_name, name, endpointFetch a Table using the describe command output.
create_tableinsertdatabase_name, schema_name, endpointcreateMode, copyGrantsCreate a table.
create_or_alter_tablereplacedatabase_name, schema_name, name, endpointCreate a (or alter an existing) table. Even if the operation is just an alter, the full property set must be provided.
delete_tabledeletedatabase_name, schema_name, name, endpointifExistsDelete a table with the given name.
create_table_as_select_deprecatedexecdatabase_name, schema_name, name, query, endpointcreateMode, copyGrantsCreate a table as select.
create_table_as_selectexecdatabase_name, schema_name, query, endpointcreateMode, copyGrantsCreate a table as select.
create_table_using_template_deprecatedexecdatabase_name, schema_name, name, query, endpointcreateMode, copyGrantsCreate a table using template.
create_table_using_templateexecdatabase_name, schema_name, query, endpointcreateMode, copyGrantsCreate a table using template.
clone_tableexecdatabase_name, schema_name, name, endpointcreateMode, copyGrants, targetDatabase, targetSchemaCreate a new table by cloning from the specified resource
create_table_like_deprecatedexecdatabase_name, schema_name, name, newTableName, endpointcreateMode, copyGrantsCreate a new table like the specified resource, but empty
create_table_likeexecdatabase_name, schema_name, name, endpointcreateMode, copyGrantsCreate a new table like the specified resource, but empty
undrop_tableexecdatabase_name, schema_name, name, endpointUndrop specified table
suspend_recluster_table_deprecatedexecdatabase_name, schema_name, name, endpointifExistsSuspend recluster of a table
suspend_recluster_tableexecdatabase_name, schema_name, name, endpointifExistsSuspend recluster of a table
resume_recluster_table_deprecatedexecdatabase_name, schema_name, name, endpointifExistsResume recluster of a table
resume_recluster_tableexecdatabase_name, schema_name, name, endpointifExistsResume recluster of a table
swap_with_table_deprecatedexecdatabase_name, schema_name, name, targetTableName, endpointifExistsSwap with another table
swap_with_tableexecdatabase_name, schema_name, name, targetName, endpointifExists, targetDatabase, targetSchemaSwap with another table

Parameters

Parameters can be passed in the WHERE clause of a query. Check the Methods section to see which parameters are required or optional for each operation.

NameDatatypeDescription
database_namestringIdentifier (i.e. name) for the database to which the resource belongs. You can use the /api/v2/databases GET request to get a list of available databases.
endpointstringOrganization and Account Name (default: orgid-acctid)
namestringIdentifier (i.e. name) for the resource.
newTableNamestringThe name of the table to be created.
querystringThe SQL query that uses INFER_SCHEMA on staged files to set the column definitions for the new table.
schema_namestringIdentifier (i.e. name) for the schema to which the resource belongs. You can use the /api/v2/databases/{database}/schemas GET request to get a list of available schemas for the specified database.
targetNamestringThe name of the target table to be swapped with.
targetTableNamestringThe fully-specified name of the target table to be swapped with.
copyGrantsbooleanQuery parameter to enable copy grants when creating the object.
createModestringQuery parameter allowing support for different modes of resource creation. Possible values include: - errorIfExists: Throws an error if you try to create a resource that already exists. - orReplace: Automatically replaces the existing resource with the current one. - ifNotExists: Creates a new resource when an alter is requested for a non-existent resource.
deepbooleanOptionally includes dependency information of the table.
fromNamestringQuery parameter to enable fetching rows only following the first row whose object name matches the specified string. Case-sensitive and does not have to be the full name.
historybooleanOptionally includes dropped tables that have not yet been purged.
ifExistsbooleanQuery parameter that specifies how to handle the request for a resource that does not exist: - true: The endpoint does not throw an error if the resource does not exist. It returns a 200 success response, but does not take any action on the resource. - false: The endpoint throws an error if the resource doesn't exist.
likestringQuery parameter to filter the command output by resource name. Uses case-insensitive pattern matching, with support for SQL wildcard characters.
showLimitintegerQuery parameter to limit the maximum number of rows returned by a command.
startsWithstringQuery parameter to filter the command output based on the string of characters that appear at the beginning of the object name. Uses case-sensitive pattern matching.
targetDatabasestringDatabase of the target table. Defaults to the source table's database.
targetSchemastringSchema of the target table. Defaults to the source table's schema.

SELECT examples

Lists the tables under the database and schema.

SELECT
name,
database_name,
schema_name,
automatic_clustering,
budget,
bytes,
change_tracking,
cluster_by,
columns,
comment,
constraints,
created_on,
data_retention_time_in_days,
default_ddl_collation,
dropped_on,
enable_schema_evolution,
kind,
max_data_extension_time_in_days,
owner,
owner_role_type,
rows,
search_optimization,
search_optimization_bytes,
search_optimization_progress,
table_type
FROM snowflake.table.tables
WHERE database_name = '{{ database_name }}' -- required
AND schema_name = '{{ schema_name }}' -- required
AND endpoint = '{{ endpoint }}' -- required
AND like = '{{ like }}'
AND startsWith = '{{ startsWith }}'
AND showLimit = '{{ showLimit }}'
AND fromName = '{{ fromName }}'
AND history = '{{ history }}'
AND deep = '{{ deep }}';

INSERT examples

Create a table.

INSERT INTO snowflake.table.tables (
data__name,
data__kind,
data__cluster_by,
data__enable_schema_evolution,
data__change_tracking,
data__data_retention_time_in_days,
data__max_data_extension_time_in_days,
data__default_ddl_collation,
data__columns,
data__constraints,
data__comment,
database_name,
schema_name,
endpoint,
createMode,
copyGrants
)
SELECT
'{{ name }}' --required,
'{{ kind }}',
'{{ cluster_by }}',
{{ enable_schema_evolution }},
{{ change_tracking }},
{{ data_retention_time_in_days }},
{{ max_data_extension_time_in_days }},
'{{ default_ddl_collation }}',
'{{ columns }}',
'{{ constraints }}',
'{{ comment }}',
'{{ database_name }}',
'{{ schema_name }}',
'{{ endpoint }}',
'{{ createMode }}',
'{{ copyGrants }}'
;

REPLACE examples

Create a (or alter an existing) table. Even if the operation is just an alter, the full property set must be provided.

REPLACE snowflake.table.tables
SET
data__name = '{{ name }}',
data__kind = '{{ kind }}',
data__cluster_by = '{{ cluster_by }}',
data__enable_schema_evolution = {{ enable_schema_evolution }},
data__change_tracking = {{ change_tracking }},
data__data_retention_time_in_days = {{ data_retention_time_in_days }},
data__max_data_extension_time_in_days = {{ max_data_extension_time_in_days }},
data__default_ddl_collation = '{{ default_ddl_collation }}',
data__columns = '{{ columns }}',
data__constraints = '{{ constraints }}',
data__comment = '{{ comment }}'
WHERE
database_name = '{{ database_name }}' --required
AND schema_name = '{{ schema_name }}' --required
AND name = '{{ name }}' --required
AND endpoint = '{{ endpoint }}' --required
AND data__name = '{{ name }}' --required;

DELETE examples

Delete a table with the given name.

DELETE FROM snowflake.table.tables
WHERE database_name = '{{ database_name }}' --required
AND schema_name = '{{ schema_name }}' --required
AND name = '{{ name }}' --required
AND endpoint = '{{ endpoint }}' --required
AND ifExists = '{{ ifExists }}';

Lifecycle Methods

Create a table as select.

EXEC snowflake.table.tables.create_table_as_select_deprecated 
@database_name='{{ database_name }}' --required,
@schema_name='{{ schema_name }}' --required,
@name='{{ name }}' --required,
@query='{{ query }}' --required,
@endpoint='{{ endpoint }}' --required,
@createMode='{{ createMode }}',
@copyGrants={{ copyGrants }}
@@json=
'{
"name": "{{ name }}",
"kind": "{{ kind }}",
"cluster_by": "{{ cluster_by }}",
"enable_schema_evolution": {{ enable_schema_evolution }},
"change_tracking": {{ change_tracking }},
"data_retention_time_in_days": {{ data_retention_time_in_days }},
"max_data_extension_time_in_days": {{ max_data_extension_time_in_days }},
"default_ddl_collation": "{{ default_ddl_collation }}",
"columns": "{{ columns }}",
"constraints": "{{ constraints }}",
"comment": "{{ comment }}"
}';