cancel
Showing results for
Did you mean:
Frequent Visitor

## DAX equivalent to PRODUCT() on a Measure in a variable context?

I need to calculate in a flexible context per day:

`A_prod(day 1) = A(day 1)A_prod(day 2) = A(day 1) * A(day 2)A_prod(day 3) = A(day 1) * A(day 2) * A(day 3)`

and so on.

If [A] would be a column, I could use PRODUCT(), for example this:

`Measure A_prod := CALCULATE(PRODUCT('table'[A]);FILTER(ALLSELECTED( 'table');'table'[date] <= MAX('table'[date])))`

Calculating this for each date I would be near to my target. But this will work only on a colum 'table'[A] with fixed data. And my [A] is not a columns but a measure and it's value depends on the context.

To be less abstract:
[A] := SUM([B] * [C]) / SUM ([C])
but the elements to be included into the SUM depend on the content.

I tried to use ADDCOLUMNS on a SUMMARIZE table, but the context is not used in the calculations, SUMMARIZE table seams to be the same in any context.

`ProdX 3 := CALCULATE(PRODUCTX (ADDCOLUMNS ( SUMMARIZE ( 'MG_Datum_Mandant_Portfolio', 'MG_Datum_Mandant_Portfolio'[Datum] ), "TWR", [TWR_PF_BW_x_Vol_share_VT div Vol_share_VT] ),[TWR]);FILTER(ALLSELECTED( 'MG_Datum_Mandant_Portfolio');'MG_Datum_Mandant_Portfolio'[Datum] <= MAX('MG_Datum_Mandant_Portfolio'[Datum])))`
`--with ProdX 4 I get the same result as in ProdX 3ProdX 4 := CALCULATE(PRODUCTX (ADDCOLUMNS ( SUMMARIZE ( ALLSELECTED('MG_Datum_Mandant_Portfolio'), 'MG_Datum_Mandant_Portfolio'[Datum] ), "TWR", [TWR_PF_BW_x_Vol_share_VT div Vol_share_VT] ),[TWR]);FILTER(ALLSELECTED( 'MG_Datum_Mandant_Portfolio');'MG_Datum_Mandant_Portfolio'[Datum] <= MAX('MG_Datum_Mandant_Portfolio'[Datum])))`

4 REPLIES 4
Frequent Visitor

y error was the wrong usage of ALLSELECTED

A good article is here: https://www.sqlbi.com/articles/the-definitive-guide-to-allselected/

I did a test with COUNT and I understand my error, need to filter ALLSELECTED only the date filter, but not the table wich context is required.

TWR_PF_BW Test01 =
CALCULATE(
COUNT('MG_Datum_Mandant_Portfolio_GroupBy'[TWR_PF_BW]);
FILTER(
ALLSELECTED( 'Datum');
'Datum'[Datum] <= MAX('Datum'[Datum])
)
)

Anonymous
Not applicable

``````// Try this. I wrote this blindly since I know nothing about
// what the model is and what you're really trying to achieve...
measure_ =
var __maxDate = max( 'MG_Datum_Mandant_Portfolio'[Datum] )
var __relevantDates =
FILTER(
ALLSELECTED ( 'MG_Datum_Mandant_Portfolio' ),
'MG_Datum_Mandant_Portfolio'[Datum] <= __maxDate
)
return
CALCULATE (
PRODUCTX (
VALUES( 'MG_Datum_Mandant_Portfolio'[Datum] ),
"TWR", [TWR_PF_BW_x_Vol_share_VT div Vol_share_VT]
),
[TWR]
),
__relevantDates
)``````

Resolver II

this worked for me, thanks! 😎

Super User IV

---------------------------------------

##### I have a NEW book! DAX Cookbook from Packt
Over 120 DAX Recipes!

Proud to be a Super User!

Announcements

#### 2021 Release Wave 2 Plan

Power Platform release plan for the 2021 release wave 2 describes all new features releasing from October 2021 through March 2022.

#### Microsoft named a Leader in The Forrester Wave

Microsoft received the highest score of any vendor in both the strategy and current offering categories.

#### Microsoft Dynamics 365 & Power Platform User Professionals

DynamicsCon is a FREE, 4 half-day virtual learning experience for 11,000+ Microsoft Business Application users and professionals.

Top Solution Authors
Top Kudoed Authors