SQL Models¶
smelt models are SQL files in the models/ directory with optional YAML frontmatter for configuration.
Basic model¶
YAML frontmatter¶
Add configuration inline using YAML frontmatter:
---
name: user_activity
materialization: table
incremental:
enabled: true
event_time_column: event_time
partition_column: event_date
tags: [users, daily]
owner: analytics-team
description: Daily user activity summary
---
SELECT
DATE(event_time) as event_date,
user_id,
COUNT(*) as event_count
FROM smelt.ref('events')
GROUP BY 1, 2
References¶
Use smelt.ref() to reference other models:
Named parameters are supported:
Sources¶
Use smelt.source() for external tables defined in sources.yml:
Configuration precedence¶
SQL frontmatter > smelt.yml > defaults
Frontmatter in SQL files overrides project-level smelt.yml settings.
Supported metadata fields¶
| Field | Type | Description |
|---|---|---|
name |
string | Model name (optional, inferred from filename) |
materialization |
table | view |
How to materialize |
incremental.enabled |
boolean | Enable incremental updates |
incremental.event_time_column |
string | Column for time-based filtering |
incremental.partition_column |
string | Column for partition deletion |
tags |
string[] | Organization tags |
owner |
string | Responsible team or person |
description |
string | Model documentation |