Yang Xu
04/15/2026, 3:39 PM{
"ignore_small_changes": {
"spike_failure_percent_threshold": 10,
"drop_failure_percent_threshold": 10
},
"model": "{{ get_where_subquery(ref('dim_companies')) }}",
"timestamp_column": null,
"where_expression": null,
"time_bucket": {
"period": "day",
"count": 1
},
"freshness_column": null,
"event_timestamp_column": null,
"dimensions": null,
"days_back": 14,
"backfill_days": 2,
"anomaly_sensitivity": 3,
"anomaly_direction": "both",
"seasonality": null,
"fail_on_zero": false,
"detection_delay": {
"period": "hour",
"count": 0
},
"anomaly_exclude_metrics": null,
"exclude_final_results": "1 = 1",
"exclude_detection_period_from_training": null
}
if the test all_columns_anomalies - Average fails for column X, what does it mean?kapa.ai
04/15/2026, 3:39 PMall_columns_anomalies test fails specifically for the Average metric on column X, it means:
1. An anomaly was detected in the average value of column X. Elementary calculated the average of column X for each daily time bucket (since time_bucket: {period: day, count: 1}) and compared recent values (the detection period) against the historical baseline (the training period, defaulting to 14 days based on days_back: 14). [how anomaly detection works]
2. Both conditions must be true for the test to fail:
◦ The average value in the detection period has a z-score that is anomalous (outside the expected range, using anomaly_sensitivity: 3, i.e., 3 standard deviations from the mean).
◦ The average value is either more than 10% higher (spike) or more than 10% lower (drop) than the mean average value in the training period — due to your ignore_small_changes thresholds. [ignore_small_changes docs]
1. anomaly_direction: both means the test checks for both unexpected spikes and drops in the average.
2. timestamp_column: null — since no timestamp column is configured, Elementary cannot split data into time buckets based on event time. In this case, the time_bucket parameter is effectively not used for partitioning by event time, and the test operates on the table as a whole snapshot rather than on time-partitioned data. [all_columns_anomalies test]
3. severity: warn means dbt will report this as a warning, not a hard failure — so downstream models won't be blocked.
In summary: The average value of column X has changed significantly — it is both statistically anomalous (z-score > 3) and has shifted by more than 10% compared to the historical mean. This likely indicates a meaningful data quality issue, such as unexpected values being loaded into column X (e.g., outliers, data pipeline errors, or a schema/logic change upstream). 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Yang Xu
04/15/2026, 3:42 PMkapa.ai
04/15/2026, 3:43 PMall_columns_anomalies - Average test for column X:
• Last average value: 4.582 — this is the metric value in the detection period (the most recent measurement).
• Average for this metric: 4.385 — this is the training average (the historical mean calculated from the training set, i.e., the previous 14 days/runs).
The difference is: (4.582 - 4.385) / 4.385 ≈ +4.5% above the training mean.
However, your spike_failure_percent_threshold is set to 10%, which means the test should only fail if the spike exceeds 10% above the training mean. A 4.5% increase is below that threshold.
This means one of the following may be happening:
1. The z-score condition is driving the failure. Both conditions must be true for the test to fail — the z-score must be anomalous AND the percent change must exceed the threshold. If the test is indeed failing, it's worth double-checking whether the percent change shown in the report is calculated differently than expected, or whether the ignore_small_changes logic is being applied as intended.
2. The detection period value may be included in the training calculation. As noted in the knowledge sources, Elementary includes the detection period value in the calculation of the training average and standard deviation, which can affect the reported training average. [anomaly detection issue]
The knowledge sources do not contain enough detail to fully explain why the test would fail with only a ~4.5% spike when your threshold is 10%. I'd recommend querying the metrics_anomaly_score table directly to inspect the anomaly_score, training_avg, training_stddev, and is_anomaly fields for column X to get a clearer picture of what triggered the failure. 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.