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:

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.

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:
| Product | Quantity | Price | Quantity × Price |
|---|---|---|---|
| Keyboard | 2 | 50 | 100 |
| Mouse | 3 | 20 | 60 |
| Correct total with SUMX | 5 | 70 | 160 |
| Total with SUM × SUM | 5 | 70 | 350 (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:


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.

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:

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.

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:
- Power BI DAX SUM and SUMX function – How to use
- Power bi measure divide + 9 examples
- Power bi measure subtract + 7 useful examples
- Power BI Measure SUM – Complete tutorial
- Power bi measure examples (20 useful examples)
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.

I have worked with Microsoft technologies for more than 18 years, including SharePoint, Microsoft 365 and the Power Platform (Power Apps, Power Automate and Power BI), at companies like HP, TCS and KPIT. I started EnjoySharePoint in 2011 to share the solutions I build in real projects with readers in the United States, Canada, the United Kingdom, Australia, New Zealand and beyond. Microsoft has recognized this work with the Microsoft MVP award 13 times since 2014.
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?
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.
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?