Warnings
On this page
Warnings run after data is committed. They log results without failing the model. See Validation for how warnings fit into the three-stage model.
-- @warning: name(args)
Available Macros
| Macro | Example | Description |
|---|---|---|
freshness(col, duration) | freshness(updated_at, 24h) | Data staleness |
row_count(op, n) | row_count(>=, 100) | Row count check |
row_count_delta(max_pct) | row_count_delta(20) | Change percentage between runs |
sum_delta(col, max_pct) | sum_delta(amount, 10) | Sum change ratio between runs |
mean_delta(col, max_pct) | mean_delta(amount, 15) | Mean change ratio between runs |
approaching_limit(col) | approaching_limit(amount) | Nearing configured threshold |
null_percent(col, max_pct) | null_percent(email, 5) | NULL percentage |
not_null(col) | not_null(customer_id) | NULL count |
unique(col) | unique(order_id) | Duplicate detection |
min(col, op, val) | min(amount, >, 0) | Minimum value |
compare(col, op, val) | compare(amount, >=, 0) | Value comparison |
mean(col, op, val) | mean(amount, >=, 100) | Average check |
low_entropy(col, min) | low_entropy(status, 1.0) | Data diversity |
cardinality(col, op, n) | cardinality(region, >=, 3) | Distinct value count |
in_list(col, 'vals') | in_list(status, 'active,inactive') | Allowed values |
Delta macros (row_count_delta, sum_delta, mean_delta) use DuckLake’s table_changes() to compare against the previous run.
Custom Macros
Defined in config/macros/warnings.sql. Convention: ondatra_warning_{name}(t, ...).
CREATE OR REPLACE MACRO ondatra_warning_high_refund_rate(t, col, max_pct) AS TABLE
SELECT printf('high refund rate: %.1f%%', 100.0 * SUM(CASE WHEN c < 0 THEN 1 ELSE 0 END) / COUNT(*))
FROM query(printf('SELECT %s AS c FROM %s', col, t))
HAVING 100.0 * SUM(CASE WHEN c < 0 THEN 1 ELSE 0 END) / COUNT(*) > max_pct;
-- @warning: high_refund_rate(amount, 5)
OndatraSQL