yaml or its content alias. They also accept optional dryRun.
Read tools return configuration state, content hash, update time, table names, and optional YAML.
See Build and validate a layer for the procedure.
Snowflake YAML
The current renderer reads an object with atables array. Each table needs a
name and a physical table reference. Model-level name and description are
not required by its validator.
data_type, description, main_id, and unique may be useful annotations,
but the current Snowflake renderer does not enforce them. It does not apply
base_filter, compile relationships, or use model-level funnel_events.
A successful update is not validation of those annotations or of warehouse
objects and expressions.
Snowflake query behavior
snowflake_run_semantic_query selects one logical table_name and named
metrics, dimensions, facts, and filters, either in params or through
the retained top-level fields. The renderer adds GROUP BY when a query selects metrics with dimensions or facts. It combines selected filters with AND. The response includes rendered sql
alongside query rows and metadata.
Although the input schema accepts custom_dimensions and
custom_filter_expressions, the current renderer does not apply them. It does
not generate joins from relationship annotations.
A type: "funnel" query uses supplied params.steps, not YAML funnel definitions.
Each step must resolve a known time dimension in the selected table. The
implementation unions step rows and returns event_count per step. The renderer does not currently enforce cohort identity, event order, or a time window.
It accepts cohort_by, enforce_order, and time_window_days, but these fields do not implement those behaviors. Do not interpret those counts as an ordered user-conversion funnel.
See the generated Snowflake query contract
for accepted input fields. Schema acceptance alone does not establish renderer
behavior.
Validation boundaries
Snowflake update validation checks YAML parsing, thetables array, table names,
and physical references. It does not reject every unknown annotation or compile
every metric, filter, and physical column.
Redshift update validation requires a nonempty tables array, nonempty table
names, and base_table.table. Its storage/validation contract does not establish
support for the Snowflake semantic-query renderer. Check each connector’s own
setup and action reference before transferring a model.