Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
aisberg
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 3

ProdX 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
aisberg
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 (
        ADDCOLUMNS (
            VALUES( 'MG_Datum_Mandant_Portfolio'[Datum] ),
            "TWR", [TWR_PF_BW_x_Vol_share_VT div Vol_share_VT]
        ),
        [TWR]
    ),
    __relevantDates
)

 

Anonymous
Not applicable

this worked for me, thanks! 😎

Greg_Deckler
Super User
Super User

Sample data. Please see this post regarding How to Get Your Question Answered Quickly: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors