TGViewer
Data Analytics Data Analytics @sqlspecialist ยท 111K subscribers
Post #3135 4.31K
๐Ÿš€ Data Analyst Roadmap โ€” Part 28

POWER BI LEVEL 7 โ€” DAX ITERATORS: SUMX, AVERAGEX, COUNTX & VIRTUAL CALCULATIONS

You already know functions like "SUM()" and "AVERAGE()". But sometimes a business calculation needs to happen row by row before the final result is calculated. That's where DAX iterators become important.

๐Ÿ”น 1. What is an Iterator?

Iterator functions evaluate an expression for each row of a table and then combine the results.

Common iterators include: "SUMX()", "AVERAGEX()", "COUNTX()", "MINX()", "MAXX()"

๐Ÿ”น 2. SUM() vs SUMX()

Suppose your Sales table has: Quantity, Unit Price. You want total revenue.

With "SUM()", you can directly add a column:

Total Sales = SUM(Sales[SalesAmount])

But if SalesAmount doesn't exist and you need Quantity ร— Unit Price you can use "SUMX()":

Total Sales =

SUMX(

    Sales,

    Sales[Quantity] * Sales[UnitPrice]

)

DAX evaluates: Row 1 โ†’ Quantity ร— Price, Row 2 โ†’ Quantity ร— Price, Row 3 โ†’ Quantity ร— Price, Then adds all the results.

๐Ÿ”น 3. AVERAGEX()

Suppose you want the average revenue generated by each transaction:

Average Sales =

AVERAGEX(

    Sales,

    Sales[Quantity] * Sales[UnitPrice]

)

The expression is calculated for every row first. Then the average is calculated.

๐Ÿ”น 4. COUNTX()

"COUNTX()" counts the number of non-blank results produced by an expression.

Transactions With Value =

COUNTX(

    Sales,

    Sales[Quantity] * Sales[UnitPrice]

)

This can be useful when the calculation itself determines whether a value exists. For simply counting rows, however, "COUNTROWS()" is usually clearer:

Transaction Count = COUNTROWS(Sales)

๐Ÿ”น 5. MINX() and MAXX()

You can also find the minimum or maximum value from a calculated expression.

Highest Transaction =

MAXX(

    Sales,

    Sales[Quantity] * Sales[UnitPrice]

)

Lowest Transaction =

MINX(

    Sales,

    Sales[Quantity] * Sales[UnitPrice]

)

๐Ÿ”น 6. Iterators Create Row Context

This is one of the most important DAX concepts. Inside:

SUMX(

    Sales,

    Sales[Quantity] * Sales[UnitPrice]

)

DAX evaluates the expression for the current row. That is called: Row Context.

So: "SUM()" โ†’ directly aggregates a column, "SUMX()" โ†’ evaluates an expression row by row and then aggregates the result

๐Ÿ”น 7. A Practical Profit Example

Suppose your table contains: Quantity, Sales Price, Cost Price. You can calculate total profit without creating a Profit column:

Total Profit =

SUMX(

    Sales,

    (Sales[SalesPrice] - Sales[CostPrice]) * Sales[Quantity]

)

This is extremely useful because the calculation happens dynamically inside the measure.

๐Ÿ”น 8. Iterators with CALCULATE()

Iterators become even more powerful when combined with "CALCULATE()". For example, you might want to calculate sales only for high-value transactions:

High Value Sales =

SUMX(

    FILTER(

        Sales,

        Sales[SalesAmount] > 10000

    ),

    Sales[SalesAmount]

)

Here: "FILTER()" โ†’ creates the relevant set of rows, "SUMX()" โ†’ evaluates and adds the values. This combination appears frequently in real Power BI projects.

๐Ÿ”น 9. Virtual Tables

DAX can create temporary tables during a calculation. These are called: Virtual Tables. They aren't permanently stored in your model.

For example:

High Value Sales =

CALCULATE(

    [Total Sales],

    FILTER(

        Sales,

        Sales[SalesAmount] > 10000

    )

)

The filtered table exists only while the calculation is being evaluated.

๐Ÿ”น 10. SUMX() with Related Tables

Iterators can also work with relationships.

Suppose: Product table contains: Product ID, Product Name, Cost. Sales table contains: Product ID, Quantity.

You could calculate total cost using:

Total Cost =

SUMX(

    Sales,

    Sales[Quantity] * RELATED(Product[Cost])

)

"RELATED()" retrieves the related product cost for the current Sales row. Then "SUMX()" performs the calculation for every sales row.

๐Ÿ”น 11. When Should You Use SUMX()?

Use "SUMX()" when the calculation requires an expression. For example: Quantity ร— Price, Quantity ร— Cost, Revenue โˆ’ Cost, Discount ร— Quantity, Price ร— Exchange Rate

If the value already exists in a column and you simply need the total, "SUM()" is usually simpler.

๐ŸŽฏ Interview Questions

1๏ธโƒฃ What is an iterator in DAX? - A function that evaluates an expression row by row over a table.

2๏ธโƒฃ What is the difference between SUM() and SUMX()? - "SUM()" directly aggregates a column, while "SUMX()" evaluates an expression for each row before aggregating.

3๏ธโƒฃ What does the X in SUMX() represent? - It indicates that the function iterates through rows and evaluates an expression.

4๏ธโƒฃ What is row context? - The context representing the current row while DAX evaluates an expression.

5๏ธโƒฃ Can SUMX() work with FILTER()? - Yes. FILTER() can define the rows to process, while SUMX() performs the row-by-row calculation.

๐Ÿงช PRACTICE

Create a Sales table containing: Customer, Product, Quantity, Unit Price, Unit Cost

Then create: Total Sales using SUMX(), Total Cost using SUMX(), Total Profit using SUMX(), Average Transaction Value using AVERAGEX(), Highest Transaction using MAXX()

Finally, add: Region slicer, Product slicer, Month slicer. Change the filters and observe how your measures respond.

Power BI Resources: https://t.me/PowerBI_analyst

๐Ÿ’ก Double Tap โค๏ธ For More
  • โค 7
More from @sqlspecialist
  1. Oct 4, 20269๏ธโƒฃ How would you calculate month-over-month growth? Sample Answer: โ€œI would first retrievโ€ฆ
  2. Oct 4, 2026๐Ÿ“Š Data Analyst Interview Series โ€” Part 3 Guys, let's continue our Data Analyst Interviewโ€ฆ
  3. Sep 29, 2026๐Ÿ”Ÿ How would you find duplicate records in SQL? Sample Answer: "I would first identify theโ€ฆ
  4. Sep 29, 2026๐Ÿ“Š Data Analyst Interview Series โ€” Part 2 Guys, let's continue our Data Analyst Interviewโ€ฆ
  5. Sep 29, 2026๐—™๐—ฅ๐—˜๐—˜ ๐—ฅ๐—ฒ๐˜€๐—ผ๐˜‚๐—ฟ๐—ฐ๐—ฒ๐˜€ ๐—ง๐—ผ ๐—Ÿ๐—ฒ๐—ฎ๐—ฟ๐—ป ๐—”๐—œ ๐—ถ๐—ป ๐Ÿฎ๐Ÿฌ๐Ÿฎ๐Ÿฒ๐Ÿš€ โ€‹ Explore 6 free resourceโ€ฆ
  6. Sep 29, 2026"After identifying duplicates, I investigate whether they are genuine duplicate records orโ€ฆ
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook โ†’Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 โ†’