How to Multiply in Power BI With DAX: Columns, Measures and Tables

Quantity times price, an amount times a tax rate, last year’s sales times a growth factor: some kind of multiplication shows up in almost every Power BI report I build. The operator itself is simple, but there’s one common mistake that quietly produces wrong totals, and I see it in reports all the time. In this tutorial, I’ll show you the right way to multiply in each situation, and explain why the wrong way fails.

Quick answer: DAX doesn’t have a multiply function; you use the * operator. To multiply two columns and total the result, write a measure such as SUMX(Sales, Sales[Quantity] * Sales[Price]), which multiplies row by row before adding up. When the columns are in different tables, use RELATED() inside SUMX. Avoid SUM(Sales[Quantity]) * SUM(Sales[Price]), because it multiplies the totals instead of the rows.

How multiplication works in DAX

In DAX, you multiply with the asterisk, so 3 * 3 returns 9. There’s no separate MULTIPLY function. A few rules from Microsoft’s DAX operator reference are worth keeping in mind, because they explain most of the surprises people run into.

First, DAX follows the normal order of operations: multiplication and division happen before addition and subtraction. That means 5 + 2 * 3 returns 11, while (5 + 2) * 3 returns 21. When a formula mixes operators, brackets make your intention clear.

Second, DAX converts values to numbers where it can. "5" * "10" returns 50 even though both values are text. It works, but it’s better to fix the column’s data type so you don’t rely on the conversion:

DAX multiplication of two text values converted to numbers in Power BI

Third, DAX has no percent operator. To take 15% of an amount, multiply by the decimal value: [Amount] * 0.15. And finally, a blank multiplied by a number stays blank. BLANK() * 5 returns blank, not 0, which is different from Excel.

How to multiply two columns in the same table

For the first example, I’ll use a simple table with two number columns, value-1 and value-2. You have two ways to multiply them, and the right choice depends on whether you need a value for each row or a total that responds to your report’s filters.

Power BI table with two number columns to multiply

Option 1: Create a calculated column

A calculated column gives you the result on every row, which is handy when you want to see or filter by the line total. Right-click the table in the Data pane, select New column, and enter:

Line Total = 'Table'[value-1] * 'Table'[value-2]

Because a calculated column is evaluated one row at a time, a plain multiplication is all you need. Keep in mind that calculated columns are computed when the data refreshes and stored in the model, so they add to its size and don’t respond to slicers.

Option 2: Create a measure with SUMX

Most of the time, what you really want is a total that changes with your slicers and filters, and that’s a measure. Select Modeling > New measure and use SUMX, which goes through the table one row at a time, multiplies the two values on each row, and then adds up the results (SUMX reference):

Total = SUMX ( 'Table', 'Table'[value-1] * 'Table'[value-2] )

Microsoft’s own Power BI training uses exactly this pattern to calculate revenue from quantity, price and discount:

Revenue =
SUMX (
    Sales,
    Sales[Order Quantity] * Sales[Unit Price] * ( 1 - Sales[Unit Price Discount Pct] )
)

A SUMX measure works in any visual, responds to every slicer, and doesn’t store an extra column in your model.

Why SUM × SUM gives you the wrong total

The most common mistake is writing SUM('Table'[Quantity]) * SUM('Table'[Price]). It feels natural, and on individual rows of a table visual the numbers even look correct. The problem appears in the total row, or in any visual that groups several rows together, because the formula first adds up all the quantities, then adds up all the prices, and only then multiplies the two totals.

Here’s a small example that shows the difference:

ProductQuantityPriceQuantity × Price
Keyboard250100
Mouse32060
Correct total with SUMX570160
Total with SUM × SUM570350 (5 × 70)

The real revenue is 160, but SUM × SUM reports 350. The fix is always the same: multiply row by row first, with SUMX or a calculated column, and add up afterwards. The earlier version of this tutorial used SUM × SUM, so if you followed it, switch your measures to SUMX.

How to multiply columns from two different tables

Often the numbers you want to multiply live in separate tables. In this example, the quantities are in a Product table and the prices are in a Product details table:

Power BI Product table with product ID and quantity
Power BI Product details table with ID, name and price

Before DAX can combine them, the two tables need a relationship. Open Model view and drag ProductID from the Product table onto ID in Product details, or create it through Manage relationships > New. Product details is the “one” side of the relationship, because it has one row per product.

Relationship between the Product table and the Product details table in Power BI

With the relationship in place, use RELATED() inside SUMX to look up the price for each row of the Product table:

Total Amount =
SUMX (
    'Product table',
    'Product table'[Quantity] * RELATED ( 'Product details'[Price] )
)

RELATED() follows the relationship from the “many” side to the “one” side, and it only works when DAX is looking at one row at a time. That’s why it sits inside SUMX here, or you could use it in a calculated column on the Product table.

How to multiply a measure or column by a number

Multiplying a total by a fixed number is perfectly safe, because the number is the same for every row, so it doesn’t matter whether you multiply before or after adding up. Microsoft’s measures documentation uses this example to project 6% growth:

Projected Sales = SUM ( 'Reseller Sales'[Last Years Sales] ) * 1.06

The same approach works for tax, unit conversions and similar calculations:

Tax = [Total Sales] * 0.2
Amount in Cents = SUM ( Sales[Amount] ) * 100

For percentages, I usually don’t multiply by 100 at all. Calculate the ratio with DIVIDE([Profit], [Sales]) and set the measure’s format to Percentage. The value stays correct for further calculations, and the report still displays it as a percentage.

How to multiply only the rows that meet a condition

Sometimes only part of the data should be multiplied. In this table of investments by year, I want to multiply the amounts from 2020 onwards by 100 and leave earlier years as they are:

Power BI investment table by year

The trick is to put the IF inside SUMX, so the condition is checked on each row before anything is added up:

Adjusted Investment =
SUMX (
    'Investment Table',
    IF (
        'Investment Table'[Year] >= 2020,
        'Investment Table'[Investment] * 100,
        'Investment Table'[Investment]
    )
)

How to multiply two measures

[Measure A] * [Measure B] is valid DAX. Power BI calculates each measure for the current context, such as a row in your visual or the grand total, and multiplies the two results. That’s exactly right for something like total units multiplied by an average price.

It falls into the same trap as SUM × SUM, though, when what you need is the sum of many row-level products. In that case, iterate over the rows you care about, for example each product, and multiply the measures inside the iterator:

Cost =
SUMX (
    VALUES ( 'Table'[Product] ),
    [Total Quantity Sold] * [Average Unit Price]
)

This calculates both measures for each product, multiplies them, and adds the results, so the grand total matches the sum of the rows you see in the table.

Power BI table visual with quantity sold, unit price and total cost

What PRODUCT and PRODUCTX do

DAX does have a PRODUCT() function, but it doesn’t multiply two columns together. It multiplies all the values down a single column, which is useful for compounding, such as combining monthly growth factors:

Growth Factor = PRODUCT ( Rates[Factor] )
Future Value = [Present Value] * PRODUCTX ( Periods, 1 + Periods[Interest Rate] )

Data types and rounding

For money, use the Fixed decimal number data type. It stores four decimal places exactly and avoids the small floating-point differences you can get with Decimal number (Power BI data types). Be aware that multiplying two Fixed decimal values returns a Decimal number, so check the result’s format. When you need an exact number of decimals, round the result with ROUND([Total], 2).

These DAX tutorials cover the functions used in this article in more depth:

Frequently Asked Questions

How do I multiply two columns in Power BI?

In a calculated column, use ‘Table'[Column1] * ‘Table'[Column2]. For a measure, use SUMX(‘Table’, ‘Table'[Column1] * ‘Table'[Column2]), which multiplies row by row and then adds up the results.

Is there a multiply function in DAX?

No. DAX uses the * operator for multiplication. PRODUCT and PRODUCTX exist, but they multiply all the values down one column rather than two columns together.

Why is my multiplied total wrong in Power BI?

You probably multiplied two sums, such as SUM(Quantity) * SUM(Price). That multiplies the totals. Use SUMX so each row is multiplied first and the results are added up afterwards.

How do I multiply columns from different tables in Power BI?

Create a relationship between the tables, then use RELATED inside SUMX, for example SUMX(Orders, Orders[Quantity] * RELATED(Products[Price])).

How do I multiply a measure by a percentage in DAX?

Multiply by the decimal value, for example [Total Sales] * 0.15 for 15%. DAX doesn’t have a % operator.

3 thoughts on “How to Multiply in Power BI With DAX: Columns, Measures and Tables”

  1. Hi Bhawana, Thank you for the explanation. For the last example, the total price and new measure of the column do not match the above figures. Could you please explain how to get that right?

  2. Your multiplication measure does not work over large sets of data. You need to use SUMX. You can test by adding any of the rows to bottom table. Your formula adds new row of same data and multiplies resulting in higher amount.

  3. HI, the new measure created with sumx also shows a strange sum at the bottom 83444 if you quickly sum up the values uptop you end up with less then 8k. How to get that measure working w/o creating a calc. column?

Comments are closed.