Skip to content

Fix metric filter columns not included in CTE SELECT#6

Merged
nicosuave merged 1 commit intomainfrom
fix-metric-filter-columns-in-cte
Dec 3, 2025
Merged

Fix metric filter columns not included in CTE SELECT#6
nicosuave merged 1 commit intomainfrom
fix-metric-filter-columns-in-cte

Conversation

@nicosuave
Copy link
Copy Markdown
Member

Summary

  • Fixes bug where metric-level filters referencing columns not in query dimensions caused SQL errors
  • Columns used in metric filters (e.g., state in filters: ["state IN ('confirmed', 'completed')"]) are now included in CTE SELECT
  • Adds _extract_metric_filter_columns() helper to parse filter expressions before CTE generation

Before: WHERE bookings_cte.state IN (...) failed because state wasn't selected in CTE

After: state column is automatically added to CTE when referenced by metric filters

Test

Added two regression tests:

  • test_metric_filter_column_not_in_query_dimensions - single filter column case
  • test_metric_filter_multiple_columns_not_in_dimensions - multiple filter columns

When a metric has filters like `filters: ["state IN ('confirmed', 'completed')"]`,
the filtered column must be included in the CTE's SELECT list for the WHERE clause
to reference it. Previously, metric filters were only processed after CTEs were built,
causing "Unrecognized name" errors in databases like BigQuery.

The fix extracts metric filter columns before building CTEs and passes them to
`_find_needed_dimensions` so they're included in each model's CTE SELECT clause.
@nicosuave nicosuave merged commit 8e90a8d into main Dec 3, 2025
9 checks passed
@nicosuave nicosuave deleted the fix-metric-filter-columns-in-cte branch December 3, 2025 15:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant