Ravindra BagaleCourses & study guides Track your progress

Chapter 49

49.1 Performance Analyzer and Model Tuning

Chala mitrano — find the slow visual, fix the DAX or the model, prove it got faster. Stop guessing.

Fictional sample data for learning. All company names and brands belong to their owners. We use the names only so students can understand. Numbers on this page are made up.
After this lesson you can
  • Run Performance Analyzer and read DAX vs visual time.
  • Describe DAX Studio / VertiPaq Analyzer at overview level.
  • Reduce cardinality and remove useless columns.
  • Avoid bi-directional relationship traps.
  • Explain when aggregation tables help.
  • Apply report-design performance tips.

Start with a problem (fictional). Nagpur city page took 18 seconds. Kabir blamed Wi-Fi. Performance Analyzer showed one matrix with a heavy iterator. After removing a high-cardinality text column and fixing a bi-di relationship, the page hit 2 seconds — and he saved before/after screenshots for Training.

Sample layout — fictional data: Analyzer to model fixes to proof
Sample layout — fictional data (not a real Service screenshot)

1. Performance Analyzer pane

Why: Without numbers, every fix is superstition.

What: Performance Analyzer records visual display time, DAX query time, and other durations per visual.

How — measure first:

Vertical steps (one under another)

  1. View → Performance Analyzer → Start recording.
  2. Refresh visuals / interact once.
  3. Stop; sort by longest DAX or total.
  4. Copy query for DAX Studio if needed.
  5. Save a screenshot before changes.

Tiny example: Matrix City x Product = 14s DAX (fictional) — target that visual first.

Ravindra Bagale's Tip

Friends, fix the top offender first — not the prettiest visual.

2. DAX Studio / VertiPaq Analyzer overview

Why: Some problems live in storage engine and columns, not one measure line.

What: DAX Studio and VertiPaq Analyzer (overview) show query plans, timings, and column sizes — learn where Training installs them.

How — use as a map:

Vertical steps (one under another)

  1. Paste the Analyzer query into DAX Studio when available.
  2. Look at storage engine vs formula engine time (high level).
  3. VertiPaq: find fat columns (long text IDs).
  4. Prioritise dropping or splitting fat columns.
  5. Do not change Prod without Dev proof.

Tiny example: Long GUID text column = huge dictionary (fictional finding).

Ravindra Bagale's Tip

Friends, tools name-drop less than screenshots of before/after ms.

3. Cardinality, data types, columns to remove

Why: High cardinality columns hurt compression and slicers.

What: Prefer integers keys, short categories, kill unused columns, avoid precise datetimes when date is enough.

How — slim the model:

Vertical steps (one under another)

  1. Remove columns not used in reports/relationships.
  2. Replace text keys with integers where possible.
  3. Split DateTime into Date + Time if needed.
  4. Watch distinct counts on fact tables.
  5. Re-run Analyzer after changes.

Tiny example: Dropping Notes text from Sales fact halved size in lab (fictional).

Ravindra Bagale's Tip

Friends, every unused column is tax on refresh and memory.

4. Relationship and bi-directional traps

Why: Bi-directional filters feel helpful until ambiguity and slow scans appear.

What: Prefer single-direction star schema; use bi-di sparingly with a documented reason.

How — check relationships:

Vertical steps (one under another)

  1. Draw the star: facts many-to-one to dimensions.
  2. Hunt active bi-di relationships.
  3. Replace with CROSSFILTER in CALCULATE when rare needs arise.
  4. Resolve ambiguity with clear bridge tables.
  5. Retest RLS after relationship changes.

Tiny example: Bi-di between City and Sales forced unexpected filter paths — flipped to single (fictional).

Ravindra Bagale's Tip

Friends, bi-di is a spice — a pinch, not a cup.

5. Aggregation tables

Why: Huge facts make every visual scan too much detail.

What: Aggregation tables store summarised grains; the engine may hit them instead of detail (Import/composite patterns).

How — know when to plan them:

Vertical steps (one under another)

  1. Identify common grains (City-Day).
  2. Build agg table in ETL or model.
  3. Manage aggregations so hits occur.
  4. Prove hit/miss with tools/Training guidance.
  5. Keep detail for drill when needed.

Tiny example: City-Day agg serves morning cards; detail for invoice drill (concept).

Ravindra Bagale's Tip

Friends, aggs are architecture — not a one-click paint job.

6. Report-design performance tips

Why: Too many visuals on one page punish every open.

What: Fewer visuals, less cross-highlighting chaos, avoid heavy charts on landing pages.

How — design light pages:

Vertical steps (one under another)

  1. Limit visuals on the home page.
  2. Prefer cards + one chart; drill to detail pages.
  3. Reduce unnecessary interactions.
  4. Avoid huge tables on first view.
  5. Measure again after UI cleanup.

Tiny example: Home page 6 visuals instead of 22 — open time drops (fictional).

Ravindra Bagale's Tip

Friends, prove speed with Analyzer numbers in the Training demo — stories stick.

Quiz (5 questions)

1. Performance Analyzer helps you:

2. High cardinality columns often:

3. Bi-directional relationships:

4. Aggregation tables aim to:

5. Report design tip:

Practice tasks (12) — hints only, no full answers

  1. Task. List steps to record with Performance Analyzer.
    Hint: section 1.
  2. Task. What do you save before changing the model?
    Hint: screenshot ms.
  3. Task. Name two VertiPaq smells (fat columns).
    Hint: section 2-3.
  4. Task. Why prefer integer keys?
    Hint: cardinality.
  5. Task. Star schema arrow direction in one line.
    Hint: section 4.
  6. Task. When CROSSFILTER instead of permanent bi-di?
    Hint: rare need.
  7. Task. City-Day agg vs invoice detail — who uses which?
    Hint: section 5.
  8. Task. Cut a 22-visual home page — proposal.
    Hint: section 6.
  9. Task. Kabir 18s to 2s — name two fixes from story.
    Hint: story.
  10. Task. Does Wi-Fi blame replace Analyzer? Why not?
    Hint: measure first.
  11. Task. RLS retest after relationship change — why?
    Hint: section 4.
  12. Task. Interview: how do you prove a fix worked?
    Hint: before/after.

Ravi Sir's cards (Excel card style)

Standalone cards — no tip or photo sections. QR points to this lesson. Download PNG to revise offline.

Interview Q&A: How do you speed up a slow Power BI report?
Download interview-card PNG
Comparison Card: Guessing vs measuring report speed
Download comparison-card PNG
Revision Card: Performance checklist
Download revision-card PNG

Think like a professional

In a real tenant, rights and sharing are controlled by Fabric / Power BI admins. Always follow your company policy. This lesson uses fictional people and numbers so you can practise the ideas safely.