Master the PL-300

An interactive study guide built on 7 memory techniques to help you pass the Microsoft Power BI Data Analyst Associate exam.

Prepare 25-30%Model 25-30%Visualise 25-30%Secure 15-20%
What it covers

Power Query data preparation, DAX measures and calculated columns, semantic data modelling, report design and visualisation, workspace governance, row-level security, and Copilot integration.

Ideal for

BI developers, report authors, data analysts, and business intelligence professionals who create Power BI reports and dashboards.

Aspire to this if

You want to master Power BI as your primary analytics tool, move from ad-hoc reporting to enterprise-grade BI, or validate your skills for a data analyst role.

The Map

Tap any component to see what you need to know for the exam.

🗄️ Data SourcesConnections & Parameters🧹 Power QueryTransform & Clean🔄 DataflowsReusable Power Query🧮 Semantic ModelTables & Relationships📐 DAX EngineMeasures & Calculations🎨 VisualsCharts & Formatting📊 ReportsInteractive Pages🖨️ Paginated ReportsPixel-Perfect Printing🏢 WorkspacesCollaboration & Publishing🌉 GatewaysOn-Premises Bridge🔒 SecurityRLS & Governance☁️ OneLake / DirectLakeFabric Integration
🗄️ Data Sources
Connections & Parameters
🧹 Power Query
Transform & Clean
🔄 Dataflows
Reusable Power Query
🧮 Semantic Model
Tables & Relationships
📐 DAX Engine
Measures & Calculations
🎨 Visuals
Charts & Formatting
📊 Reports
Interactive Pages
🖨️ Paginated Reports
Pixel-Perfect Printing
🏢 Workspaces
Collaboration & Publishing
🌉 Gateways
On-Premises Bridge
🔒 Security
RLS & Governance
☁️ OneLake / DirectLake
Fabric Integration

The Story

Follow the narrative to build a mental model of how everything connects.

🔌

The Connection

Every Power BI journey begins with a connection. The analyst opens Get Data and faces a wall of 100+ connectors -SQL Server, Excel, SharePoint, web APIs, Dataverse, and more. Each source has its own authentication story: OAuth for cloud services, Windows credentials for on-prem databases, and API keys for web sources. Privacy levels (Public, Organisational, Private) control how these sources can be combined.

Exam IntelKnow privacy levels and their combination rules. Organisational + Private = error unless you explicitly allow. Parameters dynamically change connection strings at refresh time. Shared semantic models = live connection to an existing published model.
🧹

The Workshop

Raw data enters the Power Query workshop, where the real transformation begins. Column Quality reveals that 3% of the dates are errors and 12% of postal codes are empty. The analyst removes duplicates, replaces nulls with defaults, splits the full address column, and unpivots the monthly columns into a proper fact table. Every click generates an M step that can be reviewed, reordered, or edited.

Exam IntelColumn Quality = % valid/error/empty. Column Distribution = distinct vs unique counts. Column Profile = min/max/mean statistics. Know the difference between Reference (shared upstream) and Duplicate (independent copy). Append = UNION rows, Merge = JOIN columns.
🏗️

The Blueprint

With clean data loaded, the analyst lays out the model blueprint. A central Sales fact table links to Customer, Product, Date, and Store dimensions in a classic star schema. Each relationship is one-to-many from dimension to fact, with single-direction cross-filtering. The Date table is marked as the official date table, unlocking built-in time intelligence.

Exam IntelStar schema = best practice for Power BI. Single cross-filter direction is default -bi-directional only when needed (many-to-many). Role-playing dimensions use inactive relationships + USERELATIONSHIP(). Mark your date table to enable TOTALYTD, SAMEPERIODLASTYEAR, etc.
📐

The Formula

DAX is the language of the semantic model. The analyst writes their first measure: Total Sales = SUM(Sales[Amount]). Then CALCULATE enters the picture, wrapping that measure with filter modifications. Time intelligence follows -YTD sales, same period last year, rolling 3-month averages. Each measure lives in the model, not in a visual, making it reusable across every report page.

Exam IntelCALCULATE = modify filter context. Time intelligence needs a proper date table. Measures = query time (filter context), Calculated columns = refresh time (row context). Quick measures generate DAX for you. Calculation groups with SELECTEDMEASURE() reduce redundancy.
🎨

The Canvas

The report canvas comes alive with visuals. A clustered bar chart compares regional sales. A line chart shows the 12-month trend. Cards display KPI totals. Conditional formatting highlights underperformers in red. The analyst adds a slicer for year, configures cross-filtering between charts, and applies a custom JSON theme so everything matches the corporate brand.

Exam IntelKnow which visual suits which scenario: bar for comparison, line for trend, scatter for correlation, map for geography, card for KPI. Conditional formatting options: background colour, font colour, data bars, icons, web URL. Visual calculations = DAX scoped to a single visual.
🧭

The Navigation

A flat report is just the beginning. The analyst adds bookmarks to capture different page states -an executive overview, a drill-down into marketing spend, a what-if scenario. Buttons linked to bookmarks create a guided navigation experience. Drillthrough pages let users right-click any product to jump to its detail page. Sync slicers keep the date filter consistent across all pages.

Exam IntelBookmarks = saved page state (filters, visibility, slicers). Buttons can navigate between bookmarks, pages, or URLs. Drillthrough = right-click navigation with auto-applied filters. Sync slicers = consistent filtering across pages. Selection pane controls visibility for bookmarks.
✨

The Copilot

With Copilot enabled on the workspace, the analyst asks it to create a summary page. Copilot builds a layout with key visuals and a narrative that explains the trends in natural language. The narrative visual updates dynamically as slicers change, giving executives plain-English insights without needing to interpret charts.

Exam IntelCopilot can create new report pages from a prompt. The narrative visual with Copilot generates natural-language summaries. Copilot can summarise a semantic model to help users understand what data is available. Requires Premium/PPU capacity.
🚀

The Launch

The report is published to a workspace. The analyst sets up a scheduled refresh -every morning at 6 AM through the on-premises gateway. They create an app to package the workspace content into a polished read-only experience for business users. Subscriptions send PDF snapshots to executives who prefer email. Alerts notify the sales director when daily revenue drops below threshold.

Exam IntelPublish from Desktop to workspace. Apps = read-only distribution to consumers. Scheduled refresh up to 8/day (shared) or 48/day (Premium). Gateways bridge on-prem sources. Subscriptions = scheduled email of report pages. Alerts = threshold-based notifications on dashboard tiles.
🔒

The Vault

Security is the final layer. The analyst defines RLS roles in Power BI Desktop -a "Region Manager" role with a DAX filter [Region] = USERPRINCIPALNAME(). In the service, they assign Azure AD security groups to each role. Sensitivity labels from Microsoft Purview mark the financial data as Confidential. Workspace roles ensure only the BI team can edit while the broader organisation views through the app.

Exam IntelRLS = DAX filter expressions + USERPRINCIPALNAME(). Define roles in Desktop, assign groups in Service. "View as" role to test. Sensitivity labels classify content. Workspace roles: Admin > Member > Contributor > Viewer. Item-level sharing for individual reports/dashboards.
📈

The Insight

The story comes full circle when users discover insights they did not expect. The Analyze feature explains why a sudden spike occurred. Grouping and binning reveal hidden segments in continuous data. AI visuals like Key Influencers and Decomposition Tree let business users explore drivers without writing DAX. Anomaly detection flags outliers automatically. The data analyst has built not just a report, but an analytical platform.

Exam IntelAnalyze feature = right-click "Explain the increase/decrease." Grouping = custom categories, Binning = equal-size numeric ranges. AI visuals: Key Influencers, Decomposition Tree, Q&A, Smart Narrative. Reference lines, error bars, and forecasting on trend charts. Copilot can summarise findings.

Mnemonic Wall

Memorable acronyms and phrases to anchor key exam concepts in your memory.

🗺️
PMVS
The 4 PL-300 exam domains in order. Prepare, Model, and Visualise are each 25-30%; Secure is 15-20%.
💾
IDD
"IDD -three storage modes." Import = in-memory (fastest, scheduled refresh). DirectQuery = live (real-time, slower). DirectLake = reads Delta directly (Fabric only, best of both).
🧹
QDP
Data profiling tools in Power Query. Quality = % valid/error/empty. Distribution = distinct vs unique counts. Profile = min/max/mean statistics. Enable from the View tab.
🔗
RAMP
"RAMP up your Power Query skills." Reference shares upstream steps; Duplicate is independent. Append = UNION rows; Merge = JOIN columns.
⭐
STARS
"STARS guide your model." Star schema with single-direction cross-filtering is the gold standard. Use bi-directional only when many-to-many requires it.
📐
CRAFT
"CRAFT your DAX." CALCULATE modifies filter context. RELATED fetches from the one-side. ALL removes filters. FILTER returns a table. Time intelligence needs a date table.
⏰
TYSD
"TYSD -time intelligence essentials." All require a contiguous date table marked as Date Table. DATEADD is the most flexible -shifts by any interval.
📊
BLSCM
"BLSCM -pick the right visual." Bar = comparison. Line = trend over time. Scatter = correlation. Card = single KPI. Map = geography.
🔖
BDSS
"BDSS -report interactivity toolkit." Bookmarks save page state. Drillthrough = right-click navigation. Sync slicers = cross-page consistency. Selection pane = show/hide layers.
🔒
DRUG
"DRUG test your RLS." The full RLS workflow: define DAX filter roles in Desktop, assign AD groups in the service, use USERPRINCIPALNAME() for dynamic filtering, verify with View as.
👥
AMCV
Workspace roles from most to least powerful. Admin manages settings and access. Member publishes content. Contributor edits but cannot share. Viewer is read-only.
🌉
SPEC
"SPEC your gateway." Standard = shared, supports DirectQuery. Personal = single user, no DQ. Cluster multiple machines for high availability.
📋
FACT
"FACT check your model." Facts contain numeric measures. Dimensions contain descriptive attributes. Relationships flow from the one-side (dimension) to the many-side (fact).
🧮
CMC
"CMC -Columns, Measures, Choose wisely." Calculated columns add rows to the model (storage cost). Measures compute dynamically (no storage). Default to measures unless you need row-level values.
🚀
PAGED
"PAGED through optimisation." Use Performance Analyzer to find slow visuals. Remove columns you do not use. Reduce granularity where possible. DAX query view lets you test measures in isolation.

Versus Arena

Side-by-side comparisons to sharpen your understanding of similar concepts.

vs
ImportvsDirectQueryvsDirectLake

Import vs DirectQuery vs DirectLake

AspectImportDirectQueryDirectLake
Data locationIn-memory cacheSource system / OneLake Delta
PerformanceFastest (cached)Slower (live queries) / Fast (reads parquet)
FreshnessScheduled refresh onlyReal-time / Near real-time
Size limit1GB shared / 10GB+ PremiumNo limit / Capacity guardrails
Gateway neededYes (for on-prem)Yes (for on-prem) / No (Fabric native)
Best forSmall-medium datasetsMust be live / Fabric-native data
DAX supportFullLimited complex DAX / Full with fallback
vs
Calculated ColumnvsMeasure

Calculated Column vs Measure

AspectCalculated ColumnMeasure
EvaluatedRefresh time (static)Query time (dynamic)
ContextRow contextFilter context
StorageStored in model (costs memory)No storage cost
Use in slicerYes -it is a columnNo -not a column
Use forRow-level flags, categories, keysAggregations, ratios, KPIs
Best practiceUse sparingly -prefer Power QueryPrefer measures for all calculations
vs
Star SchemavsSnowflake

Star Schema vs Snowflake

AspectStar SchemaSnowflake
DimensionsDenormalised (flat)Normalised (split into sub-tables)
JoinsFewer (fact → dim)More (fact → dim → sub-dim)
PerformanceFaster in Power BI (fewer lookups)Slower (more relationships to traverse)
StorageSlightly more (redundancy)Slightly less (normalised)
Power BI preferenceStrongly preferred -the recommended patternFlatten to star where possible
vs
SlicervsFilter

Slicer vs Filter

AspectSlicerFilter
VisibilityVisible on canvas -users interactHidden in Filters pane or applied via DAX
ScopePage, visual, or synced across pagesVisual-level, page-level, or report-level
User controlFull -users change selectionsCan be locked so users cannot modify
TypesList, dropdown, between, relative dateBasic, advanced, top N, relative date
Best forPrimary user-facing filtersBackground constraints, author-level controls
vs
DashboardvsReport

Dashboard vs Report

AspectDashboardReport
Created inPower BI service onlyPower BI Desktop (or service)
ContentTiles pinned from multiple reportsVisuals from a single semantic model
PagesSingle page onlyMultiple pages
InteractivityClick tile → navigates to source reportFull cross-filtering, slicers, drillthrough
AlertsYes -on card/gauge tilesNo -alerts only on dashboard tiles
Q&AYes -natural language query boxYes -via Q&A visual
Best forExecutive overview, monitoring KPIsDetailed analysis, self-service exploration
vs
RLSvsOLS

RLS vs OLS

AspectRLSOLS
RestrictsRows of dataTables and columns (metadata)
MethodDAX filter expressions per roleTabular Editor -set permissions to None
User seesObject exists but data is filteredObject completely hidden -as if it does not exist
DynamicYes -USERPRINCIPALNAME()Per role, not per user expression
Define in DesktopYes -Manage Roles dialogNo -requires Tabular Editor
Common useRegion managers see only their regionHide salary table from non-HR roles
vs
PaginatedvsInteractive Report

Paginated vs Interactive Report

AspectPaginatedInteractive Report
ToolPower BI Report BuilderPower BI Desktop
PurposePixel-perfect printing, PDF exportInteractive exploration, dashboarding
LayoutFixed -precise to the millimetreFlexible -responsive canvas
Data sourceSQL, semantic model, ODBCSemantic model (Import/DQ/DL)
InteractivityParameters, drill-down, toggleFull: slicers, cross-filter, bookmarks
Best forInvoices, statements, operational listsAnalysis, KPIs, self-service BI
vs
WorkspacevsApp

Workspace vs App

AspectWorkspaceApp
AudienceBI team -authors and editorsBusiness users -consumers
AccessRole-based (Admin/Member/Contributor/Viewer)Granted to AD groups or entire org
EditingYes -full authoring environmentNo -read-only consumption
ContentAll items: reports, models, dataflows, etc.Curated subset -select which reports to include
NavigationFlat list of itemsCustom navigation with sections and links
PublishingContinuous -changes visible immediatelyExplicit -update app to push changes
vs
DataflowvsSemantic Model

Dataflow vs Semantic Model (Dataset)

AspectDataflowSemantic Model
PurposeData preparation and transformationData modelling and calculations
LanguageM (Power Query)DAX
RelationshipsNo -outputs flat tablesYes -star schema with relationships
ReusabilityShared across multiple semantic modelsShared via live connection or shared dataset
Where it runsPower BI service (cloud)Power BI Desktop or service
Best forCentralised data prep for multiple teamsDefining the analytical layer with measures

Cheat Sheet

Organised reference grouped by exam domain — everything you need on one page.

Prepare the Data

25-30%

Connect to Data

  • Get Data: SQL Server, Excel, SharePoint, web, OData, Dataverse, 100+ sources
  • Privacy levels: Public, Organisational, Private -controls source combining
  • Parameters: dynamic server/database/file path, changed at refresh time
  • Shared semantic model: live-connect to an existing published model
  • Credentials: OAuth, Windows, service account, anonymous -set per source

Profile & Clean

  • Column Quality: % valid, error, empty (enable from View tab)
  • Column Distribution: distinct count vs unique count
  • Column Profile: min, max, mean, standard deviation, value distribution
  • Replace errors, fill nulls, remove duplicates, trim whitespace
  • Resolve import errors: data type mismatches, encoding, delimiter issues

Transform & Load

  • Data types: set correct types early (text, whole number, decimal, date, boolean)
  • Group By: aggregate rows; Add Column: custom, conditional, index columns
  • Pivot: row values → columns; Unpivot: columns → rows (normalise)
  • Append: stack rows (UNION); Merge: join columns (JOIN on key)
  • Reference: shared upstream query; Duplicate: independent copy

Fact & Dimension

  • Fact tables: numeric measures, foreign keys, high row count
  • Dimension tables: descriptive attributes, surrogate keys, lower row count
  • Split combined tables into proper fact/dim structure in Power Query
  • Configure data loading: disable auto date/time per table, choose load vs transform

Model the Data

25-30%

Design the Model

  • Star schema: fact tables surrounded by flat dimension tables
  • Relationships: 1:many from dim to fact, single cross-filter direction by default
  • Bi-directional only for many-to-many bridge tables -avoid otherwise
  • Role-playing dimensions: inactive relationships + USERELATIONSHIP()
  • Mark date table as Date Table to enable time intelligence functions

Table & Column Properties

  • Hide columns not needed in reports (foreign keys, IDs)
  • Set Sort By Column for custom sort orders (e.g., month name sorted by month number)
  • Data categories: City, Country, Latitude, Longitude, Web URL, Image URL
  • Default summarisation: set to None for dimension columns, Sum/Average for measures
  • Display folders: organise measures into logical groups

DAX Calculations

  • CALCULATE: modifies filter context -most important DAX function
  • Time intelligence: TOTALYTD, SAMEPERIODLASTYEAR, DATEADD, DATESYTD, PARALLELPERIOD
  • SUMX/AVERAGEX: iterators that evaluate expression row by row
  • Statistical: MEDIAN, PERCENTILE.INC, STDEV.P, RANKX
  • Semi-additive: LASTDATE, LASTNONBLANK for snapshot/balance measures
  • Quick measures: auto-generate DAX for running total, period-over-period, etc.

Optimise the Model

  • Remove unnecessary columns and tables to shrink model size
  • Performance Analyzer: separate DAX query time from visual render time
  • DAX query view: test and debug measures in isolation
  • Reduce granularity: aggregate detail data if individual rows are not needed
  • Avoid bi-directional filters and complex calculated columns where possible

Visualise & Analyse

25-30%

Create Reports

  • Visual types: bar (comparison), line (trend), scatter (correlation), card (KPI), map (geo)
  • Conditional formatting: background, font, data bars, icons, web URL
  • Narrative visual with Copilot: natural-language summary that updates with slicers
  • Custom themes (JSON): consistent colours, fonts, and formatting
  • Visual calculations: DAX scoped to a single visual (like window functions)

Enhance Reports

  • Bookmarks: save page state (filters, visibility) for guided navigation
  • Custom tooltips: a report page displayed on hover
  • Edit interactions: control how visuals cross-filter and cross-highlight
  • Drillthrough: right-click navigation to detail page with auto-applied filters
  • Sync slicers: keep filters consistent across multiple pages

Report UX

  • Mobile layout: separate phone-optimised arrangement of visuals
  • Personalise visuals: let users change chart type/axis/measures temporarily
  • Accessibility: alt text, tab order, high-contrast themes
  • Export settings: control which formats users can export to
  • Auto page refresh: near real-time updates for DirectQuery sources

Analyse Patterns

  • Analyze feature: "Explain the increase/decrease" on data point changes
  • Grouping: custom categories from selected data points
  • Binning: equal-size numeric ranges for histograms
  • AI visuals: Key Influencers, Decomposition Tree, Q&A, Smart Narrative
  • Reference lines, error bars, forecasting on trend charts
  • Anomaly detection: automatic outlier flagging in line charts

Manage & Secure

15-20%

Workspaces & Apps

  • Workspace roles: Admin > Member > Contributor > Viewer
  • Apps: read-only distribution with custom navigation and audiences
  • Publish from Desktop: overwrites existing model + report in workspace
  • Deployment pipelines: Dev → Test → Prod (Premium/PPU required)
  • Promote = team trusted; Certify = org quality standard

Distribution

  • Subscriptions: scheduled email of report pages (PDF/PNG)
  • Alerts: threshold notifications on dashboard card/gauge tiles only
  • Embed: Publish to Web (public), Embed in SharePoint, secure embed with AAD
  • Item-level sharing: share individual reports/dashboards without workspace access

Gateways & Refresh

  • Standard gateway: shared, IT-managed, supports DirectQuery + scheduled refresh
  • Personal gateway: single user, no sharing, no DirectQuery
  • Cluster: multiple machines for high availability
  • Scheduled refresh: up to 8/day shared, 48/day Premium
  • Incremental refresh: RangeStart/RangeEnd parameters, query folding recommended

Security & Governance

  • RLS: DAX filter expressions per role -USERPRINCIPALNAME() for dynamic security
  • Define RLS in Desktop, assign AD groups to roles in Service
  • Sensitivity labels: from Microsoft Purview -classify as Confidential, etc.
  • Labels propagate downstream to exports and derived items
  • Workspace roles + item-level sharing = defence in depth

The Memory Palace

Walk through themed rooms — each object anchors a concept in spatial memory.

Data Source Lobby

Connecting to Data -Where the raw materials arrive

🔌
Get Data
100+ connectors: SQL Server, Excel, SharePoint, web APIs, OData, Dataverse. Know the big ones
🔐
Privacy Levels
Public, Organisational, Private. Controls how sources combine. Private + Org = error unless allowed
⚙️
Parameters
Dynamic server, database, file path. Change at refresh time without editing queries
🔗
Shared Semantic Model
Live-connect to an existing published model. No data import -just point and report
🌉
Gateways
Standard = shared, supports DQ. Personal = single user, no DQ. Cluster for HA
💾
Storage Modes
Import = cached + scheduled refresh. DirectQuery = live. DirectLake = Fabric Delta, no refresh

Power Query Workshop

Transform & Clean -Where raw becomes refined

📊
Data Profiling
Quality (valid/error/empty %), Distribution (distinct/unique), Profile (min/max/mean). View tab
🧹
Clean Operations
Remove duplicates, replace errors, fill nulls, trim whitespace, change types
🔀
Append vs Merge
Append = stack rows (UNION). Merge = join columns (JOIN). Know when each is appropriate
↕️
Pivot vs Unpivot
Pivot: row values → columns. Unpivot: columns → rows. Unpivot to normalise wide tables
🔗
Reference vs Duplicate
Reference shares upstream steps (efficient). Duplicate creates independent copy (isolated)
🏭
Fact & Dimension Split
Separate combined tables: measures into facts, attributes into dimensions. Star schema prep

Model Architect's Office

Relationships & DAX -Where data becomes meaning

⭐
Star Schema
Fact tables (measures) surrounded by flat dimensions. 1:many relationships, single cross-filter
📐
CALCULATE
Modifies filter context. The single most important DAX function. CALCULATE(measure, filter1, filter2)
⏰
Time Intelligence
TOTALYTD, SAMEPERIODLASTYEAR, DATEADD, PARALLELPERIOD. All need a proper marked date table
🔄
Role-Playing Dimensions
Same dim used for multiple relationships (e.g., OrderDate, ShipDate). Inactive + USERELATIONSHIP()
🧮
Calculation Groups
SELECTEDMEASURE() applies reusable time intelligence (YTD, PY) across all measures
🚀
Optimisation
Performance Analyzer, DAX query view, remove unused columns, reduce granularity

Visualisation Gallery

Charts & Formatting -Where insights take shape

📊
Visual Selection
Bar = comparison, Line = trend, Scatter = correlation, Card = KPI, Map = geography
🎨
Conditional Formatting
Background colour, font colour, data bars, icons, web URL. Rules or gradient scales
🔖
Bookmarks & Navigation
Save page state for guided stories. Buttons trigger bookmarks, pages, or URLs
🔍
Drillthrough
Right-click a data point → navigate to detail page with auto-applied filters
✨
Copilot Features
Create new pages from prompt. Narrative visual with Copilot for natural-language summaries
🤖
AI Visuals
Key Influencers, Decomposition Tree, Q&A, Smart Narrative. No DAX required from users

Governance Vault

Security & Deployment -Where trust is enforced

🔒
Row-Level Security
DAX filter expressions per role. USERPRINCIPALNAME() for dynamic. Define in Desktop, assign in Service
👥
Workspace Roles
Admin > Member > Contributor > Viewer. Apps for read-only consumer distribution
🏷️
Sensitivity Labels
Microsoft Purview: Public, General, Confidential, Highly Confidential. Propagate downstream
📱
Apps & Distribution
Package workspace into read-only app. Subscriptions for email. Alerts on dashboard tiles
🔄
Scheduled Refresh
Up to 8/day shared, 48/day Premium. Gateway required for on-prem. Incremental with RangeStart/RangeEnd
⭐
Endorsement
Promoted = team trusted. Certified = org quality standard. Helps users find reliable content

Pattern Spotter

Decision trees and trigger-answer pairs — see the pattern, know the answer.

Which Connectivity Mode?
Which Connectivity Mode?
  ├── Data in OneLake (Fabric lakehouse)? → DirectLake
  ├── Must be real-time, source supports live queries? → DirectQuery
  ├── Data fits in memory, can schedule refresh? → Import
  ├── Mix of sources with different needs? → Composite Model (mix Import + DQ)
  └── Want to reuse someone else's model? → Live Connection to shared semantic model
Calculated Column or Measure?
Calculated Column or Measure?
  ├── Need to use the value as a slicer or filter? → Calculated Column
  ├── Need a row-level flag or category? → Calculated Column (or better: Power Query)
  ├── Need an aggregation (SUM, AVG, COUNT)? → Measure
  ├── Need a ratio or KPI that responds to filters? → Measure
  ├── Could you do it in Power Query instead? → Yes → do it there (no DAX storage cost)
  └── Not sure? → Default to Measure -they are almost always the right choice
Which Visual Type?
Which Visual Type?
  ├── Comparing categories (sales by region)? → Bar or Column chart
  ├── Showing trends over time? → Line chart or Area chart
  ├── Single KPI or metric? → Card or Multi-row Card
  ├── Part-to-whole relationship? → Pie/Donut (few categories) or Treemap (many)
  ├── Geographic data? → Map or Filled Map
  ├── Correlation between two measures? → Scatter chart
  └── Detailed tabular data? → Table or Matrix with conditional formatting
How to Handle Security?
How to Handle Security?
  ├── Different users see different rows? → RLS -DAX filter expression per role
  ├── Need dynamic per-user filtering? → RLS with USERPRINCIPALNAME()
  ├── Hide entire tables/columns from existence? → OLS -Tabular Editor required
  ├── Classify data sensitivity? → Sensitivity Labels (Microsoft Purview)
  ├── Control who can edit vs view? → Workspace roles + App audiences
  └── Share individual items, not whole workspace? → Item-level sharing + per-item permissions

Decision Cards

"modify filter context"→CALCULATE function
"year-to-date" or "YTD"→TOTALYTD (or DATESYTD inside CALCULATE)
"same period last year"→SAMEPERIODLASTYEAR or DATEADD with -1 year
"row context at refresh time"→Calculated Column
"filter context at query time"→Measure
"stack rows from multiple tables"→Append Queries (UNION)
"join columns from two tables"→Merge Queries (JOIN)
"columns into rows" or "normalise wide table"→Unpivot Columns
"USERPRINCIPALNAME()"→Dynamic Row-Level Security
"objects hidden as if they do not exist"→OLS (Object-Level Security)
"scheduled email of report page"→Subscription
"threshold notification on dashboard tile"→Data Alert (dashboard card/gauge only)
"distinct count vs unique count"→Column Distribution profiling
"reuse query without re-running"→Reference (not Duplicate)
"inactive relationship"→USERELATIONSHIP() for role-playing dimensions
"apply same time calc to all measures"→Calculation Groups with SELECTEDMEASURE()
"Explain the increase/decrease"→Analyze feature (right-click)
"natural-language summary updates with slicers"→Narrative Visual with Copilot

Train with practitioners, not presenters

Lucid Labs delivers Microsoft certification training led by Microsoft Certified Trainers (MCTs) and grounded in real-world project experience. We adapt every session to your team's environment, data stack, and business objectives — because the best exam prep comes from engineers who build these solutions every day.

🎯
Tailored Content
Training built around your actual data, your reports, and your business questions -not generic slides.
🛠️
Hands-On Labs
Build real Power BI reports from raw data to published dashboard with expert guidance at every step.
📈
Exam + Capability
Pass the PL-300 exam and build lasting Power BI skills your team can apply from day one.
Talk to us about Microsoft Power BI Data Analyst (PL-300) training

Custom training for teams & individuals — remote or on-site across Australia

Keith Oak
Keith Oak
Chief Technology Officer — Lucid Labs

Microsoft Solutions Partner architect specialising in Fabric, Azure Data & AI, and GitHub Enterprise. 18+ years delivering data platforms for Australian businesses — building the systems these exams test every day.