Nobody likes a slow dashboard. If your users are staring at loading dots for 10 seconds, you’ve already lost them. The fix? You don't need a supercomputer. You just need to break a few bad habits.
Here are 5 quick wins to make your Power BI reports fly.
1. Stop Doing Double Math (Use VAR)
Writing the same calculation twice in one measure? Stop it. Power BI has to do the math every single time.
Profit Margin =
(SUM(Sales[TotalAmount]) - SUM(Sales[TotalCost])) / SUM(Sales[TotalAmount])
Profit Margin =
VAR TotalSales = SUM(Sales[TotalAmount])
VAR TotalCost = SUM(Sales[TotalCost])
RETURN
DIVIDE(TotalSales - TotalCost, TotalSales)
2. Don’t Be a Memory Hog
This is the classic rookie mistake: filtering an entire table when you only need one column.
Europe Sales =
CALCULATE(
[Total Sales],
FILTER('Sales', 'Sales'[Region] = "Europe") // Scans the entire table!
)
Europe Sales =
CALCULATE(
[Total Sales],
KEEPFILTERS('Sales'[Region] = "Europe") // Better, or use FILTER on the column only
)
// OR
// CALCULATE([Total Sales], FILTER(ALL('Sales'[Region]), 'Sales'[Region] = "Europe"))
3. The Safe Way to Divide
Using the slash symbol (/) is fast to type, but it’s risky. If you accidentally divide by zero? Your measure breaks or returns infinity errors.
Avg Price = SUM(Sales[TotalAmount]) / SUM(Sales[Quantity])
Avg Price = DIVIDE(SUM(Sales[TotalAmount]), SUM(Sales[Quantity]))
4. Count Smarter, Not Harder
Need to know how many sales happened? Don't use COUNT. It wastes time checking every single cell to see if it's empty.
Total Transactions = COUNT('Sales'[SalesOrderNumber])
Total Transactions = COUNTROWS('Sales')
5. Fix the Foundation (Star Schema)
You can write the best code in the world, but if your data model looks like a bowl of spaghetti, your report will struggle.
A single, giant table with 100+ columns containing Customer Name, Product Category, Order Date, Sales Amount, etc., all mixed together.
Fact Table: 'Sales' (Order ID, DateKey, CustomerKey, ProductKey, Quantity,
Amount)
Dimension Tables: 'DimCustomer', 'DimProduct', 'DimDate' linked via keys.
The Bottom Line
Speed isn't magic. It's just cleaner code. Try these out today and watch that loading nightmare disappear. 🚀