π― What You'll Learn
- Map every major Excel feature to its direct Power BI equivalent
- Translate Excel formulas (XLOOKUP, SUMIFS, IF) into DAX equivalents
- Apply the correct Power Query transformations using both the UI and M code
- Distinguish dimension tables from fact tables and build a star schema
- Avoid the most common Excel habits that break Power BI data models
π Before You Begin
- Completed the Power BI Readiness Bootcamp session (or equivalent Excel practice)
- Comfortable writing Excel formulas: IF, SUMIFS, XLOOKUP
- Basic familiarity with what PivotTables do
- Power BI Desktop installed or a free Power BI web account
π Core Concepts Mapping
Every Excel feature you already know has a Power BI equivalent. The table below is your permanent reference.
| Excel Feature | Power BI Equivalent | Key Difference |
|---|---|---|
| Excel Table (Ctrl+T) | Dataset Table | Power BI requires structured tables; named tables become data entities |
| PivotTable | Matrix Visual | Same drag-and-drop logic; Power BI adds interactive cross-filtering |
| PivotChart | Report Visuals | Power BI visuals are live-connected to the data model β no copy-paste needed |
| Slicer | Slicer Visual | Works identically; can sync across multiple report pages in Power BI |
| VLOOKUP / XLOOKUP | Relationships + RELATED() | Power BI uses model relationships β no formulas needed to join tables |
| SUMIFS / COUNTIFS | CALCULATE() + FILTER() | DAX measures are more dynamic β they respond to visual filters automatically |
| Named Range | Column Reference | Power BI uses Table[Column] syntax exclusively β ranges don't exist |
| Data β From Table/Range | Power Query Editor | Same interface in Excel and Power BI Desktop β identical M code |
π Formula Translation Guide
Browse by formula category β each tab shows the Excel syntax and its DAX equivalent side by side.
=XLOOKUP([ProductID], Products[ProductID], Products[ProductName])
-- Excel: finds ProductName by matching ProductID
-- Power BI DAX equivalent (after creating relationship in Model View):
RELATED(Products[ProductName])
-- DAX: navigates the relationship β no column matching needed
Excel XLOOKUP β Create relationship in Model View β Use RELATED() in calculated column
=VLOOKUP(A2, Table2, 3, FALSE)
-- Excel: brittle column-number approach
-- Power BI: Don't write a formula. Instead:
-- Step 1: Model View β drag CustomerID (Orders) to CustomerID (Customers)
-- Step 2: In DAX column: RELATED(Customers[CustomerName])
-- DAX: relationship-driven β survives column reordering
VLOOKUP β Model Relationship β RELATED() (never write column numbers in DAX)
=IF([Revenue]>1000, "High", "Low")
-- Excel: simple binary conditional
-- Power BI New Column:
OrderSize = IF(Sales[Revenue] > 1000, "High", "Low")
-- DAX: identical syntax β IF works the same way
Excel IF() β DAX IF() (syntax is identical β direct 1:1 translation)
=IFS([Region]="East", 0.1, [Region]="West", 0.15, TRUE, 0.05)
-- Excel: multi-branch IFS
-- Power BI DAX equivalent:
Discount = SWITCH(TRUE(),
Sales[Region] = "East", 0.1,
Sales[Region] = "West", 0.15,
0.05)
-- DAX: SWITCH(TRUE(), ...) is the standard multi-branch pattern
Excel IFS() β DAX SWITCH(TRUE(), condition, result, ...) (more readable for many branches)
=SUMIFS(Sales[Revenue], Sales[Region], "East", Sales[Year], 2024)
-- Excel: sum with multiple conditions
-- Power BI Measure:
East2024Revenue = CALCULATE(
SUM(Sales[Revenue]),
Sales[Region] = "East",
Sales[Year] = 2024
)
-- DAX: CALCULATE modifies filter context β far more dynamic
SUMIFS(range, col1, val1, col2, val2) β CALCULATE(SUM(col), filter1, filter2)
=AVERAGEIF(Sales[Quantity], ">10")
-- Excel: average with one condition
-- Power BI Measure:
AvgLargeOrders = AVERAGEX(
FILTER(Sales, Sales[Quantity] > 10),
Sales[Quantity]
)
-- DAX: AVERAGEX iterates a filtered table row-by-row
AVERAGEIF β AVERAGEX(FILTER(table, condition), expression)
=TEXT([OrderDate], "YYYY-MM")
-- Excel: formats a date as "2024-03" string
-- Power BI DAX:
MonthKey = FORMAT(Sales[OrderDate], "YYYY-MM")
-- DAX: FORMAT() is the direct equivalent of TEXT()
Excel TEXT(value, format) β DAX FORMAT(value, format) (same format strings)
=TRIM([CustomerName])
-- Excel formula: trims leading/trailing spaces
-- In Power Query (M language):
Table.TransformColumns(Source, {"CustomerName", Text.Trim})
-- M: applies Text.Trim to an entire column at once
-- In DAX calculated column:
CleanName = TRIM(Customers[CustomerName])
-- DAX TRIM also removes extra internal spaces
TRIM() works in Excel, Power Query (Text.Trim), and DAX β all three remove leading/trailing spaces
β‘ Power Query Quick Reference
The Power Query interface is identical in Excel and Power BI Desktop. Learn it once, use it everywhere.
UI Steps: Home β Remove Rows β Remove Duplicates
Table.Distinct(Source)
-- Removes all duplicate rows from the table
510 rows β 452 rows (duplicate orders removed)
UI Steps: Select column β Transform β Format β Trim
Table.TransformColumns(Source, {{"CustomerID", Text.Trim}})
-- Removes leading and trailing spaces from CustomerID column
" CUST001 " β "CUST001" (prevents join failures on relationships)
UI Steps: Click the type icon in the column header β Select Date
Table.TransformColumnTypes(Source, {{"OrderDate", type date}})
-- Converts OrderDate from text to a proper Date type
Text "2024-03-15" β Date value β enables time intelligence DAX functions
UI Steps: Click dropdown arrow on column β uncheck unwanted values
Table.SelectRows(Source, each [Region] = "East")
-- Keeps only rows where Region equals "East"
-- To exclude TEST orders:
Table.SelectRows(Source, each not Text.Contains([Notes], "TEST"))
-- Removes any row where Notes column contains the word TEST
Test rows removed β only real sales data reaches your Power BI model
UI Steps: Home β Merge Queries β Select join table and key column β Choose join type
Table.NestedJoin(
Orders, {"CustomerID"}, -- left table + key
Customers, {"CustomerID"}, -- right table + key
"CustomerData", -- name of new expanded column
JoinKind.LeftOuter -- keep all orders, match where possible
)
Orders table gains CustomerName + Region columns from Customers β same as XLOOKUP, no formula needed
π Data Modeling Fundamentals
Primary Key vs. Foreign Key
π Customers Table (Dimension)
βββββββββββββββ¬βββββββββββββββββββ
β CustomerID β CustomerName β β Primary Key (unique, no repeats)
βββββββββββββββΌβββββββββββββββββββ€
β CUST0001 β Acme Corp β
β CUST0002 β TechStart Inc β
βββββββββββββββ΄βββββββββββββββββββ
π¦ Orders Table (Fact)
ββββββββββββ¬ββββββββββββββ¬ββββββββββ
β OrderID β CustomerID β Revenue β
ββββββββββββΌββββββββββββββΌββββββββββ€
β ORD1001 β CUST0001 β $1,250 β β Foreign Key (same customer can appear many times)
β ORD1002 β CUST0001 β $890 β
β ORD1003 β CUST0002 β $2,100 β
ββββββββββββ΄ββββββββββββββ΄ββββββββββ
Customers[CustomerID] (1) ββββββ (*) Orders[CustomerID] One customer can have MANY orders β this is a One-to-Many (1:*) relationship
Star Schema (Best Practice) π
| Cardinality | Excel Equivalent | Power BI Setup |
|---|---|---|
| One-to-Many (1:*) | XLOOKUP from Fact β Dimension | Model View β Drag PK β FK |
| Many-to-One (*:1) | Same direction reversed | Same setup; filter direction matters |
| One-to-One (1:1) | Rare β usually merge tables | Avoid; combine tables in Power Query instead |
π Power BI Workflow (After Excel Prep)
- Get Data β Home β Excel Workbook β Select your named Tables (not the whole file)
- Transform Data β Power Query Editor opens. Clean, type-correct, and filter. Do not click Load immediately.
- Model View β Create relationships by dragging Primary Key to Foreign Key across tables
- Report View β Drag fields to create visuals. Same logic as PivotTable rows/values/columns.
- Publish β Power BI Service β Share dashboards with your team and set scheduled refresh
β οΈ Common Pitfalls to Avoid
| β Excel Habit | β Power BI Fix |
|---|---|
| Using merged cells for headers | Never merge β use proper flat Table headers with unique column names |
Referencing cells like B2:B100 | Always use Table[Column] structured references in all formulas |
Hardcoding values in formulas (e.g., "2024") | Use Parameters or separate lookup tables for dynamic values |
| Multiple summary tables on one sheet | One fact table + separate dimension tables (star schema) |
| Manual data refresh every morning | Set up scheduled refresh in Power BI Service β automatic and reliable |
| Using colors or highlights to convey meaning | Use conditional formatting rules or DAX measures β no manual coloring |
π₯ Practice Dataset Files
| File | Rows | Purpose | Student Action |
|---|---|---|---|
tbl_Customers_Clean.csv | 100 | Dimension table | Import as-is; use for relationships |
tbl_Products_Clean.csv | 50 | Dimension table | Import as-is; use for lookups |
tbl_Regions_Clean.csv | 5 | Lookup table | Optional; practice merging |
Sales_Raw_Messy.csv | 510 | Main practice file | Clean using Power Query (see steps below) |
Sales_Clean_Reference.csv | 452 | Answer key | Verify your cleaning results |
Suggested Student Workflow
- Open
Sales_Raw_Messy.csvin Office.com Excel and convert to Table β Name ittbl_Sales_Raw - Open Power Query: Data β From Table/Range
- Remove duplicate rows
- Trim
CustomerIDandNotescolumns to remove whitespace - Standardize
Regionto Title Case (Transform β Format β Capitalize Each Word) - Filter out rows where
Notescontains "TEST" - Remove rows with blank
CustomerIDor blankOrderDate - Close & Load Toβ¦ β Table β Name output
tbl_Sales_Clean - Build a PivotTable: Revenue by Region and Product Category
- Compare row count and totals to
Sales_Clean_Reference.csv
π Flashcard Review
Click each card to reveal the Power BI equivalent.
Tap to reveal Power BI equivalent
After creating a Model View relationship between tables
Tap to reveal Power BI equivalent
DAX measure with filter arguments
Tap to reveal Power BI equivalent
Same rows/columns/values drag-and-drop
Tap to reveal Power BI equivalent
Identical format strings in DAX
Tap to reveal definition
e.g., CustomerID in Customers table β no repeats
Tap to reveal Power BI equivalent
Standard multi-branch pattern in DAX
π§ Practice Quiz
6 questions covering formulas, Power Query, and data modeling.
1. What is the correct DAX measure to sum Revenue only for the East region in 2024?
2. Which Power Query M function removes all duplicate rows from a table?
3. In a star schema, a Sales Fact table has a CustomerID column that matches CustomerID in the Customers Dimension. What type of join is Power BI's relationship in Model View?
4. You want to average orders where Quantity > 10 in Power BI. Which DAX pattern is correct?
5. Which Excel habit is most likely to break a Power BI data model?
6. What is the DAX equivalent of the Excel function =TEXT(OrderDate, "YYYY-MM")?
π Key Takeaways
- Power BI isn't a new language β it's Excel's data modeling superpowers, unlocked.
- XLOOKUP β RELATED(), SUMIFS β CALCULATE(), IFS β SWITCH(TRUE()) β memorize these three translations.
- Power Query is identical in Excel and Power BI β every M code step you write works in both.
- Always filter early in Power Query β remove bad data before any transformations.
- A star schema β one fact table surrounded by dimension tables β is the goal for every Power BI model.