Build a star schema from a single flat file
One wide CSV, thousands of repeated names. By the end you have a fact table, two dimension tables, and a model Power BI actually wants.
Tutorials, tips, and deep dives on Power BI — every post from bianca.codes tagged Power BI.
One wide CSV, thousands of repeated names. By the end you have a fact table, two dimension tables, and a model Power BI actually wants.
A DAX measure that repeats the same subtotal three times isn't thorough, it's a maintenance problem VAR was built to fix.
Power BI's format painter copies fonts, colours and borders across visuals in one click, except for one axis setting that quietly breaks chart comparisons.
Three slicers and a card don't turn a spreadsheet into a data model, and the columns you didn't build are exactly where it falls apart.
Three months of polish, a great demo, and a usage metrics report that told a very different story once the meeting was over.
Nobody decided to build a database out of that 80-tab workbook - it ended up doing a database's job without any of a database's guarantees.
The stakeholder emails asking whether the numbers are current stop the day you put the actual refresh time on the report - and a measure with NOW() is not how you do it.
Power Query carves one flat sales table into a fact and three dimensions, you build the relationships, and you prove the numbers didn't move - a restructure you can't validate is just hope.
Copying a query and tweaking the copy feels efficient. It isn't - three copies of the same logic is three places to update and three ways for it to drift.
The same trim-and-title-case steps are copy-pasted across three of your queries - write them once as a function instead, and fix the rule in one place.
You've built the same cleanup steps in four different queries. A custom function is how you write them once and call them from all four.
A customer moves and changes tier, and some reports should show where they are now while others must show where they were at the sale - the gap is a modelling decision most tutorials skip.
Your measure is right, your data reconciles, and your year-to-date is still wrong - because the model never had a real date table, only a date column pretending to be one.
A dimension table isn't just a lookup. Why fact-to-dimension relationships have to be many-to-one, why bidirectional filtering always causes problems, and how to build dimensions your DAX can trust.
Connect Power BI to a SharePoint List the way that doesn't fall over at 5,001 rows - OData filtering at the source, an indexed filter column, and a refresh schedule that doesn't need a gateway.
Learn SQL, build a portfolio, contribute to open source. The canonical data career advice is optimised for getting your first job, and useless immediately after.
The title changes, the salary changes, and the list of skills that matter changes completely. Worse, the things that made you good as an analyst quietly start working against you at the senior level.
Most introductions to star schema start with the diagram. The star, the centre, the spokes. This one starts with the question: what problem does a fact table solve that a flat table doesn't? Part 1 builds the intuition before the vocabulary, so the rest of the series makes immediate sense.
In a small team, you're the analyst, the engineer, the dashboard designer, and the person who explains what a p-value is at the all-hands.
The analysts who get traction aren't the fastest at pulling data, they're the best at unpacking what was actually being asked. The skill is asking good questions, and nobody trains for it.
Step-by-step from a blank flow, including how to handle the parts that break the first time.
Automation bias is real: if you can automate something, it feels like you should. But some processes contain judgement calls that automation silently gets wrong, edge cases that require human revie…
You can't build every dashboard that gets requested. But 'no' lands differently depending on how you say it — and most data people either say yes to everything and resent it, or say no in ways that…
SUMIFS and COUNTIFS are great — until your data has 500,000 rows and Excel is grinding. Part 2 shows how to do everything your SUMIFS does, but with pandas groupby — faster, more flexible, and on d…
Slow reports get blamed on complex measures. Complex measures get rewritten. And the report is still slow — because the actual problem is a flat table with 47 columns, many-to-many relationships, a…
The more competent you get, the less people see the effort behind what you deliver. A clean dashboard looks effortless. A fast turnaround looks like it was always fast.
Most dashboards answer the question 'what happened?' Very few answer 'what should we do?' The gap isn't data — it's intent. A dashboard built for the former often actively gets in the way of the la…
They ask for a pie chart when they need a bar chart. They ask for a table when they need a trend line. This isn't ignorance — it's that they're translating a question into a visual type without kno…
SUMX, AVERAGEX, MAXX — these functions bring row context back into a measure, which sounds helpful until they don't behave the way you expect inside a CALCULATE. Part 4 closes the series with the p…
You delivered a clean model, a solid dashboard, a real solution — and got a blank look in the room. The work was right. But explaining technical work to someone who doesn't share your frame of refe…
Time intelligence functions look simple - TOTALYTD, SAMEPERIODLASTYEAR — until they aren't. The reason they break isn't the function. It's that context transition interacts with your date table…
Power Query is a brilliant transformation tool. Most of the M code in production is doing things that belong in DAX, SQL, or Python - and the models are slow and the code is unmaintainable.
You'll build a reusable Power Query that finds the most recent entry per group - the kind of query that normally tempts people into messy MAXIFS workarounds in Excel. We're doing it properly, wit…
Stop cringing. There's a way to talk about your accomplishments in Excel and Power BI that sounds competent, not arrogant. It's all about framing.
CALCULATE is the most powerful function in DAX - and the most misunderstood. Once you see how it deliberately replaces the filter context rather than adding to it, every confusing measure result …
More charts don't mean more insight. Every visual you add is a question your stakeholder has to answer before they understand the point - and most reports ask them to answer fifteen questions bef…
You'll build a clean single-page report: KPI cards, a trend line, and one slicer. The kind that gets opened voluntarily, not just emailed as a screenshot. Starting from a blank canvas, ending with …
You deliver good work consistently, your manager knows you're reliable — and yet somehow you're invisible at promotion time. The problem isn't your output. It's that you've never made your work l…