What a semantic layer is, who really needs one, how dbt, Cube, Looker, AtScale and the warehouses differ, and a plain-SQL version a small team can run from its IDE.
Blog
Working notes from client projects: Power BI and DAX patterns, SQL and Postgres workflows, and the delivery plumbing around them.
A read-only MCP server, built in one evening, let the AI agent see the Postgres behind a Power BI model. A 2,200-line query went from five minutes to 15 seconds.
Power BI for reading, Excel for working, one agreed default view behind both — a DAX query stored next to the SQL, in the same table and the same git repo.
Keep the data where it is, put Cube's semantic layer in front of it, and draw the dashboard with any chart library. The stack behind my online-sales showcase.
Your CEO won't open the dashboard. Fabric can query the semantic model from a notebook and email a formatted HTML table straight to their phone.
A top-down waterfall that traces a mining fleet's 24/7 time down through every idle category — a plain stacked bar chart and three DAX measures.
Stop copy-pasting SQL between your IDE and Power BI. Keep the query in a Postgres table and let Power Query pull it in on every refresh.
Undocumented legacy SQL can cost hours before you even find where to start. These are the rules I use to keep my own queries readable.