January 12, 2025 · 7 min read

How We Fixed Fan-Out Joins Before They Hit Production

Fan-out joins can hide in workbook calcs. Here is how we surface them before dbt docs break.

#lint#quality#metricflow

### Why fan-out joins spiked support tickets

When Tableau workbooks layer on multiple bridge tables, you can end up duplicating fact rows. We built a lint rule that inspects workbook relations, flags risky many-to-many joins, and suggests a semantic model rewrite.

### The guard we add in MetricLayer

- Parse workbook relationships - Detect measures on the many side - Surface an error with suggested dimension grain

Pair this with CI and the issue never reaches production dashboards.