Bird
Raised Fist0
Power BIbi_tool~10 mins

Optimizing DAX queries in Power BI - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a calculated measure that sums the Sales column.

Power BI
Total Sales = SUM([1])
Drag options to blanks, or click blank then click option'
ASales[Amount]
BSales[Quantity]
CCustomers[Amount]
DProducts[Price]
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong table or column name.
Summing a quantity instead of amount.
2fill in blank
medium

Complete the code to calculate the average sales per customer.

Power BI
Average Sales per Customer = DIVIDE(SUM(Sales[Amount]), [1])
Drag options to blanks, or click blank then click option'
ACOUNT(Sales[OrderID])
BSUM(Customers[CustomerID])
CCOUNTROWS(Sales)
DDISTINCTCOUNT(Customers[CustomerID])
Attempts:
3 left
💡 Hint
Common Mistakes
Using COUNT instead of DISTINCTCOUNT.
Counting orders instead of customers.
3fill in blank
hard

Fix the error in the code to filter sales greater than 1000.

Power BI
High Sales = CALCULATE(SUM(Sales[Amount]), Sales[Amount] [1] 1000)
Drag options to blanks, or click blank then click option'
A<
B<=
C>
D=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '=' instead of '>'.
Using '<' which filters smaller amounts.
4fill in blank
hard

Fill both blanks to create a measure that calculates total sales for the current year only.

Power BI
Sales Current Year = CALCULATE(SUM(Sales[Amount]), [1](Sales, YEAR(Sales[Date]) = [2](TODAY())))
Drag options to blanks, or click blank then click option'
AYEAR
BFILTER
DTODAY
Attempts:
3 left
💡 Hint
Common Mistakes
Using TODAY instead of YEAR(TODAY()).
Not using FILTER to apply the condition.
5fill in blank
hard

Fill in the blank to create a measure that calculates the percentage of total sales for each product category.

Power BI
Category Sales % = DIVIDE(SUM(Sales[Amount]), CALCULATE(SUM(Sales[Amount]), ALL([1])), 0) * 100
Drag options to blanks, or click blank then click option'
ACustomers
BProducts
CCategory
DSales
Attempts:
3 left
💡 Hint
Common Mistakes
Using ALL(Sales) which removes too many filters.
Using ALL(Category) which is not a table.

Practice

(1/5)
1.

What is a simple way to improve the performance of a DAX query in Power BI?

SUM(Sales[Amount]) is slow. What should you do?

easy
A. Avoid using filters in the query
B. Add more columns to the table
C. Use complex nested IF statements
D. Use variables to store intermediate results

Solution

  1. Step 1: Understand the role of variables in DAX

    Variables store intermediate results to avoid repeated calculations, making queries faster.
  2. Step 2: Apply variables to the example

    Using variables in SUM(Sales[Amount]) can reduce repeated scans and improve speed.
  3. Final Answer:

    Use variables to store intermediate results -> Option D
  4. Quick Check:

    Variables improve performance [OK]
Hint: Use variables to avoid repeated calculations [OK]
Common Mistakes:
  • Adding unnecessary columns slows down queries
  • Using complex nested IFs increases calculation time
  • Ignoring filters can cause large data scans
2.

Which of the following is the correct syntax to define a variable in a DAX measure?

Measure = ?
easy
A. Measure = DEFINE Total = SUM(Sales[Amount]) USE Total
B. Measure = VAR Total = SUM(Sales[Amount]) RETURN Total
C. Measure = LET Total = SUM(Sales[Amount]) THEN Total
D. Measure = SET Total = SUM(Sales[Amount]) OUTPUT Total

Solution

  1. Step 1: Recall DAX variable syntax

    DAX uses VAR to declare variables and RETURN to output the result.
  2. Step 2: Match syntax with options

    Measure = VAR Total = SUM(Sales[Amount]) RETURN Total correctly uses VAR Total = SUM(Sales[Amount]) RETURN Total.
  3. Final Answer:

    Measure = VAR Total = SUM(Sales[Amount]) RETURN Total -> Option B
  4. Quick Check:

    VAR and RETURN are correct DAX keywords [OK]
Hint: Remember: VAR ... RETURN in DAX for variables [OK]
Common Mistakes:
  • Using LET or DEFINE instead of VAR
  • Forgetting RETURN keyword
  • Using SET or OUTPUT which are not DAX keywords
3.

Consider this DAX measure:

Measure =
VAR FilteredSales = FILTER(Sales, Sales[Region] = "West")
RETURN SUMX(FilteredSales, Sales[Amount])

What is the main performance issue with this measure?

medium
A. FILTER creates a filtered table and SUMX iterates over it, which can be slow if Sales is large
B. FILTER is applied before SUMX, which is efficient
C. FILTER creates a filtered table but SUMX uses the original table, causing repeated scans
D. FILTER creates a table but SUMX iterates over original Sales table

Solution

  1. Step 1: Analyze FILTER and SUMX behavior

    FILTER creates a filtered table of Sales where Region is "West". SUMX iterates over this filtered table.
  2. Step 2: Understand performance impact

    If Sales is large, creating and iterating over a filtered table can be slow. Better to filter early or use CALCULATE with SUM.
  3. Final Answer:

    FILTER creates a filtered table and SUMX iterates over it, which can be slow if Sales is large -> Option A
  4. Quick Check:

    FILTER + SUMX on large tables can slow queries [OK]
Hint: Avoid FILTER + SUMX on big tables; use CALCULATE [OK]
Common Mistakes:
  • Thinking SUMX iterates original table, not filtered
  • Assuming FILTER before SUMX is always fast
  • Ignoring table size impact on performance
4.

Identify the error in this DAX measure that aims to optimize performance:

Measure =
VAR TotalSales = SUM(Sales[Amount])
RETURN
CALCULATE(TotalSales, FILTER(Sales, Sales[Region] = "East"))
medium
A. Using FILTER inside CALCULATE is always slow
B. TotalSales should be inside FILTER function
C. TotalSales is a scalar evaluated outside CALCULATE, so the filter does not apply
D. No error; measure is optimized

Solution

  1. Step 1: Check variable type and usage

    TotalSales = SUM(Sales[Amount]) is a scalar value computed in the original filter context.
  2. Step 2: Analyze CALCULATE arguments

    CALCULATE(TotalSales, FILTER(Sales, Sales[Region]="East")) is syntactically valid, but since TotalSales is a pre-computed scalar, the modified filter context does not re-evaluate it. It returns the unfiltered total instead of East sales, defeating the performance optimization goal for filtered calculation.
  3. Final Answer:

    TotalSales is a scalar evaluated outside CALCULATE, so the filter does not apply -> Option C
  4. Quick Check:

    Scalar variable used incorrectly with CALCULATE filter [OK]
Hint: Scalar variables computed outside aren't affected by CALCULATE filters [OK]
Common Mistakes:
  • Thinking CALCULATE re-evaluates scalar variables in new context
  • Thinking FILTER inside CALCULATE is always slow
  • Not distinguishing scalar vs table types
5.

You want to optimize a DAX measure that calculates total sales for the current year only. Which approach is best for performance?

Option 1:
Measure = CALCULATE(SUM(Sales[Amount]), FILTER(Sales, YEAR(Sales[Date]) = YEAR(TODAY())))

Option 2:
Measure = CALCULATE(SUM(Sales[Amount]), Sales[Date].[Year] = YEAR(TODAY()))
hard
A. Option 2 is better because it uses column filter, not row filter
B. Option 1 is better because FILTER is more flexible
C. Both options have same performance
D. Neither option works; use SUMX instead

Solution

  1. Step 1: Compare FILTER vs direct column filter

    Option 1 uses FILTER which scans row by row, applying YEAR function, which is slow.
  2. Step 2: Understand column filter advantage

    Option 2 uses a direct filter on the date column's Year attribute, which is faster because it uses existing column indexing and avoids row-by-row evaluation.
  3. Final Answer:

    Option 2 is better because it uses column filter, not row filter -> Option A
  4. Quick Check:

    Use column filters over FILTER for better speed [OK]
Hint: Filter on columns, not rows, for faster DAX queries [OK]
Common Mistakes:
  • Using FILTER with row context unnecessarily
  • Assuming FILTER is always faster
  • Ignoring built-in column filters
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard