Simulation diagnostics Private Preview
When a simulation run fails on a question, CES surfaces a diagnostic that describes what went wrong and, where applicable, proposes a context-fix action you can apply in one click. This page is a complete reference for diagnostic types, fix actions, and how they map to each other.
Diagnostic types and fixes
Each failing question produces one of the following diagnostic types. Where CES can propose a structured fix, the fix action is listed. Apply it after confirming it matches your intent.
| Diagnostic | What it means | How to fix | Fix action |
|---|---|---|---|
| Wrong join | The engine used a join path that produces incorrect results | Open the YAML editor and specify the correct join with cardinality (ONE_TO_MANY, MANY_TO_ONE, ONE_TO_ONE, or MANY_TO_MANY) | Manual edit |
| Missing metric | A metric the question requires isn't defined in the model | Apply the add_metric suggestion after confirming the formula matches your business definition | add_metric |
| Ambiguous term | A term maps to more than one asset or column | Narrow the description to specify which mapping applies. On Snowflake, prefer a tighter description over synonyms. On Databricks, adding synonyms on the canonical asset is also effective | Manual edit |
| Incorrect filter | The wrong time window, segment, or exclusion rule was applied | Apply the add_filter suggestion or edit the filter expression directly in the YAML | add_filter or manual edit |
| Out-of-scope question | No asset in the repository covers the question | Add the missing asset to the repository, or mark the question as out of scope in the question set | Manual edit |
| Grounding failure | The engine arrived at a correct-looking answer through the wrong asset path | Add an explicit relationship or flag the preferred asset more clearly in the YAML description | Manual edit |
Fix actions
Fix actions are structured changes CES proposes when it can infer the correct update from the failing question. They don't modify the model without your approval.
| Action | Description | Applied automatically |
|---|---|---|
add_metric | Adds a missing aggregate measure with the correct formula inferred from the question and your catalog | Yes, on approval |
add_filter | Adds an explicit default filter (time window, segment, or exclusion rule) inferred from the failing question | Yes, on approval |
note_missing_relationship | Flags that a join between tables appears to be needed based on the question's asset path | No, informational only |
note_missing_relationship is informational by design. Adding the wrong join silently produces incorrect data, so relationship changes always stay in your hands. Review the suggestion, decide on the correct join cardinality, and add it explicitly in the YAML editor.
Engine notes
Snowflake Cortex Analyst
- The simulation judge runs inside your Snowflake account via
SNOWFLAKE.CORTEX.COMPLETE(). Result data never leaves Snowflake for judging. - Simulations run in parallel. Expect faster wall-clock times than Databricks for the same question set.
Databricks Genie
- The simulation judge runs through Atlan AI, which receives the natural-language question and both SQL statements (generated and verified) for semantic-equivalence judging. No warehouse row data is sent.
- Simulations run sequentially due to Genie API rate limits (5 queries per minute per workspace by default). Contact your Databricks account team to raise this quota.
See also
- Run simulations: run a question set and act on the diagnostics.
- Refine with Chat & build: apply fixes to your semantic model.
- YAML schema reference: field reference for relationships, filters, and metrics.