Cheat Sheet Library

Power BI Cheat Sheet

Workflow: Get data → clean it in Power Query → build the model (relationships + DAX measures) → design report visuals → publish to the Power BI Service.

  • 48 entries
  • 7 sections
  • Updated

48 entries

On this page

Desktop Shortcuts #

ShortcutAction
Ctrl + SSave
Ctrl + Z / Ctrl + YUndo / redo
Ctrl + C / Ctrl + VCopy / paste visuals (also between pages and files)
Ctrl + GGroup selected visuals
Ctrl + clickSelect several data points / use buttons while editing
Ctrl + / (DAX editor)Comment / uncomment
Shift + Enter (DAX editor)New line
Alt + ↑/↓ (DAX editor)Move a line

Power Query (Transform data) #

TaskHow
OpenHome → Transform data
Use first row as headersHome → Use First Row as Headers
Set data typesClick the icon in the column header
Remove columnsSelect the ones to keep → Remove Other Columns
Split a columnSplit Column → By Delimiter
Unpivot (wide → long)Select the ID columns → Unpivot Other Columns
Fill down empty cellsTransform → Fill → Down
Replace values / errorsRight-click the column
Join tablesHome → Merge Queries
Stack tablesHome → Append Queries
Group & summarizeTransform → Group By
Combine all files in a folderGet data → Folder → Combine
See the M codeView → Advanced Editor

Every step appears in Applied Steps. Click a step to see the data at that point, or delete it to undo.

DAX Essentials #

FunctionExample
SUM, AVERAGE, MIN, MAXTotal Sales = SUM(Sales[Amount])
COUNTROWSOrders = COUNTROWS(Sales)
DISTINCTCOUNTCustomers = DISTINCTCOUNT(Sales[CustomerID])
DIVIDEMargin % = DIVIDE([Profit], [Total Sales]) (safe for 0)
CALCULATEAntwerp Sales = CALCULATE([Total Sales], Store[City] = "Antwerp")
ALL / REMOVEFILTERS% of Total = DIVIDE([Total Sales], CALCULATE([Total Sales], ALL(Product)))
FILTERCALCULATE([Total Sales], FILTER(Sales, Sales[Qty] > 10))
SUMX (iterator)Revenue = SUMX(Sales, Sales[Qty] * Sales[Price])
IF / SWITCHSWITCH(TRUE(), [Sales] > 1000, "High", [Sales] > 500, "Mid", "Low")
SELECTEDVALUESELECTEDVALUE(Product[Name], "Multiple")
RANKXRANKX(ALL(Product[Name]), [Total Sales])
VAR / RETURNStore intermediate results (see below)

Time Intelligence (needs a date table) #

FunctionExample
TOTALYTDSales YTD = TOTALYTD([Total Sales], 'Date'[Date])
SAMEPERIODLASTYEARSales LY = CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date]))
DATEADDCALCULATE([Total Sales], DATEADD('Date'[Date], -1, MONTH))
CALENDARDate = CALENDAR(DATE(2024,1,1), DATE(2026,12,31))
Sales Growth % =
VAR Current = [Total Sales]
VAR LastYear = CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN DIVIDE(Current - LastYear, LastYear)

Modelling Rules of Thumb #

RuleWhy
Use a star schema: fact table in the middle, dimension tables around itFast and simple DAX
Prefer measures over calculated columnsCalculated at query time, no extra storage
Create a dedicated date table and Mark as date tableTime intelligence works correctly
Relationships: one-to-many, single directionAvoids ambiguous filters
Hide ID columns from the report viewCleaner field list

Service & Sharing #

TaskWhere
PublishHome → Publish
Scheduled refreshService → Dataset settings (on-premises data needs a gateway)
Row-level securityModeling → Manage roles
Share / appsWorkspace → Share or Create app (needs Pro or Premium)
Export to Excel / PowerPointReport → Export

Tips #

  • Name measures clearly and keep them in a separate empty "_Measures" table.
  • Use the Performance Analyzer (View tab) to find slow visuals.