DYNAMIC TABLE
Config path: /<database>/<schema>/dynamic_table/<name>.yaml
Example:
Schema
columns (dict)
{key} (ident) - column name
{value} (str) - column comment
text (str) - SQL query text
target_lag (str) - "X seconds / minutes / hours / days" or "downstream"
warehouse (ident) - warehouse used to refresh dynamic table
refresh_mode (str) - AUTO / FULL / INCREMENTAL
initialize (str) - ON_CREATE / ON_SCHEDULE
cluster_by (list)
{items} (str) - SQL expressions for CLUSTER BY
is_transient (bool) - make table TRANSIENT
retention_time (int) - data retention time in days
depends_on (list)
{items} (ident) - names of other dynamic tables which this dynamic table depends on
comment (str)
Usage notes
Only normal tables and event tables can be used in SQL query text. Views are not supported due to SnowDDL object type execution order.
All tables referred by SQL query text should have change tracking enabled.
Schema objects should be referred using fully-qualified identifiers, with
${{ env_prefix }}
placeholder, database name, schema name and object name. It is currently required due to lack of scope during validation of SQL statement.You may use custom YAML tag
!include
to store SQL text in a separate file instead of storing it inside YAML.
Additional privileges
Dynamic tables are executed with "schema owner role" privileges. If you want to access objects in other schemas or use a warehouse, make sure to specify additional owner grant parameters in SCHEMA config. For example:
owner_schema_read
- to read objects in other schemas;owner_warehouse_usage
- to use a warehouse;owner_integration
- to access objects in EXTERNAL STAGE linked to STORAGE INTEGRATION;
Links
Last updated