The idea
A Power BI report is not a picture of data. It is a set of questions asked of a semantic model. The model is the prepared, related and measured version of your tables, and it is a separate thing from the pages that display it.
That separation explains most of Power BI. You prepare the tables once, relate them once and write
Sales once. Then any number of visuals, pages and people ask the model questions and get the
same answer. When a number is wrong, you ask where in the chain it went wrong, not which visual
shows it.
Figure 1
From a source table to a manager's phone
- Data source SQL Server, Excel, a web page
- Prepare Power Query: Home → Transform data
- Model Model view: relationships and measures
- Visualize Report view: visuals and slicers
- Publish Service: share, refresh, secure
- Harbor & Pine keeps orders in SQL Server and returns in an Excel file. Nothing is a report yet; it is just tables somewhere else.
- Prepare: Power Query fixes types, trims text and keeps only the columns you need. These steps are recorded and run again on every refresh.
- Model: you relate the tables and write measures such as
Sales. This is the part that makes every visual give the same number. - Visualize: a report page is a set of visuals and slicers, each one a question asked of the model. The model is saved inside the same .pbix file.
- Publish: Power BI Service stores the model and the report together, schedules the refresh and decides who may open it. Phones read the same published report.
Why it exists
Before this, Harbor & Pine rebuilt a spreadsheet by hand every Monday. A person copied the orders, cleaned the same city names, rebuilt the same pivot table and pasted the screenshot into an email. Nobody could tell which cleanup happened when, and two people produced two totals.
Power BI moves each of those jobs into a place where it happens once. Cleaning lives in recorded steps. The definition of a number lives in a measure. Refreshing is a schedule, not a person. The manager gets a report that cannot disagree with the one next to it.
The price is that there is now a chain, and each link can be stale or wrong in its own way. A report that is wrong because the model is wrong looks exactly like one that is wrong because the refresh failed, so the first skill is knowing which link to open.
How it works under the hood
The five jobs
Microsoft's own wording is prepare, model, visualize, analyze, manage, and the order matters. Each job has a home in the real tools.
- Prepare in the Power Query Editor (Home → Transform data).
- Model in Model view and the Data pane: relationships, measures, a Date table.
- Visualize in Report view: pick a visual in the Visualizations pane, drop fields on it.
- Analyze is the reading itself: drill, filter, find the cause.
- Manage is what happens after you share: refresh schedules, access, sensitivity.
Power BI Desktop (Windows only) is where you do 1 to 3. The Service (a browser) holds the published file, runs refreshes and hosts dashboards, which are single-page collections of tiles pinned from reports. Mobile shows both. A published report and its semantic model are stored together in the Service, and one model can feed many reports.
Four kinds of question
Every visual answers a question, and questions come in four kinds. The chart plays one Harbor & Pine year through all four.
Figure 2
Completed sales by month, 2025: one chart, four questions
- Descriptive: what happened? November was the biggest month at $292,364, about one and a half times the average month.
- Diagnostic: why? November and December stand out together. The store's order data has a Black Friday weekend and holiday coupons in them, so the next step is to slice by coupon and channel.
- Predictive: what next? A forecast extends this seasonal shape forward. Power BI's Analytics pane can draw one, but it is a guess from the past, not a fact.
- Prescriptive: what should we do? Decide to stock and staff for October to December before the spike, not after it. This is a human decision the numbers support.
Power BI's visuals are strongest at the first two. The third is a forecast you should label as one, and the fourth is a decision, which belongs to a person.
Import, DirectQuery or live
The model has to get its rows from somewhere, and the choice sets how fresh and how fast the report is.
Figure 3
Where does the answer come from when someone clicks?
- A click slicer or visual
- Visual query what the visual asks
- Stored copy Import mode, in memory
- The source DirectQuery, live
- The numbers drawn in the visual
- Every click turns into a query: the visual asks the model for its numbers under the current filters.
- Import: the answer comes from a compressed copy of the data held in the model. Fast, and as fresh as the last refresh.
- DirectQuery: the query goes to the source on every click. Always current, but only as fast as the source and with fewer features.
- Either way the visual only draws what the query returns. A live connection to a published model reuses someone else's model and cannot add tables.
- Import (the default) loads a compressed copy into the model. It is fast and supports every feature. The cost is that data is only as new as the last refresh.
- DirectQuery keeps the data at the source and sends a query on each interaction. It suits tables too big to import or data that must be current, and it is slower and limited in DAX and Power Query.
- Live connection attaches your report to a model somebody else published. You get their tables and measures, and you can't edit the model.
Set the storage mode when you connect: Home → Get data, and Power BI asks for Import or DirectQuery on sources that support both.
Why a measure belongs in the model
Write Units Ordered = SUM(order_items[quantity]) once, on the model, and it works in a card, in a
matrix by category and in a line chart by month. The visual supplies the grouping; the measure
supplies the arithmetic. If you instead dragged quantity onto each visual and let it
summarise, three visuals would carry three private definitions that drift apart the day one of
them needs a filter. That is the reason this chapter has you write a measure
rather than tick a box.
Day-one options
Two settings quietly change what you will build. Auto date/time creates a hidden date table for every date column; most modellers switch it off and build one calendar themselves (File → Options and settings → Options → Data Load). Autodetect relationships is a convenience that guesses wrong when two columns share a name, so check each line it draws.
Common misconceptions
"The report is where the data lives"
The visuals hold no data of their own. Open a report, change a slicer, and a new query goes to the model. Delete a visual and the data is still there; delete a table from the model and every visual that used it breaks. If a number looks off, check the model, not the chart.
"A dashboard and a report are the same thing"
A report is multi-page, interactive and built in Desktop or the Service. A dashboard is a single canvas of tiles pinned from one or many reports, and it only exists in the Service. A tile shows the pinned visual; click it and you land on the report behind it.
"Published means live"
Not unless the model is DirectQuery or the refresh schedule has run. An Import report published on Monday still shows Monday's data on Friday until somebody refreshes it. When someone says "the dashboard is wrong", ask first when it last refreshed.
Check yourself
One question. Answering it ticks this lesson off on the map; it never locks a level.
Right. Import answers from a stored copy. New source rows only appear after a refresh, scheduled in the Service or run from Desktop with Home → Refresh.
Not quite. Descriptive only names the kind of question. It has nothing to do with when data updates; staleness is a refresh matter.Try another answer.
Not quite. The phone and the Service read the same published model, so they show the same rows. The old rows are in the model, not just on the device.Try another answer.
Not quite. The measure adds up whatever rows the model holds. If the new rows are not in the model yet, a different formula cannot find them.Try another answer.
Lesson done: it is ticked on the map.