Snowflake warehouse optimization for BI reliability
Context: Enterprise BI dashboards depended on daily Snowflake models with drill-down by customer, region, and time window.
Problem: Shared fact tables were not clustered for common filters, so analysts hit wide scans and unstable p95 dashboard load times.
What I built: Used dbt to split high-cardinality facts, added Snowflake clustering keys on date and tenant dimensions, replaced heavy joins with pre-aggregated marts, and used targeted Spark backfills for historical reprocessing without blocking fresh loads.
Impact: 75% fewer bytes scanned on the LA County 4-table star join (17.9 MB → 4.5 MB), 56% faster Q3 elapsed (1,086 ms → 475 ms), ~71% fewer fact rows scanned per table, and zero spill on benchmark paths.
Tradeoff I made: Accepted scheduled reclustering and model maintenance overhead to keep query performance predictable during reporting peaks.