Forum Discussion
How to do an inter calculation in matrix ?
Hi there,
Good wishes everyone,
As you can see on the left hand side, there is a matrix which contains discounted and nominal prices for 2 periods. I want to achieve results like the picture shown in right hand side. I want to subtract q2 2021 Discounted and nominal prices from fa 2020 discounted and nominal prices.
A seperate table may also work with seperate columns in the same tables.
I've seen this already in this forum.
I thought I will tag that member to answer my question, but he is not active, since feb 2020.
Birinder , from where the fa20 , and q2 2021 is coming?
Can you share sample data and sample output in table format? Or a sample pbix after removing sensitive data.
Birinder , If you need diff between two period, separated by 1 period or one year. With help from period/date table, Period rank and Year , Period number you can do
example
new column in period or date table
Period Rank = RANKX(all(Period),Period[year period],,ASC,Dense)
measure
This Period = CALCULATE(sum('Table'[Qty]), FILTER(ALL(Period),Period[Period Rank]=max(Period[Period Rank])))
Last Period = CALCULATE(sum('Table'[Qty]), FILTER(ALL(Period),Period[Period Rank]=max(Period[Period Rank])-1))This Period = CALCULATE(sum('Table'[Qty]), FILTER(ALL(Period),'Period'[Year]=max('Period'[Year]) && Period[Period]=max(Period[Period])))
Last year same Period = CALCULATE(sum('Table'[Qty]), FILTER(ALL(Period),'Period'[Year]=max('Period'[Year])-1 && Period[Period]=max(Period[Period])))Actually, I am somewhat confused if you are looking for something other than period diff. Sorry for that
Hi, Birinder
I recovered some data by the picture you gave me, and I hope it will restore your problem.
Measure = VAR n1 = CALCULATE ( MAX ( 'Table'[Price] ), FILTER ( 'Table', [Period] = "Q2 2021" && [Currency] = MAX( 'Table'[Currency] ) && [Methods] = MAX( 'Table'[Methods] ) ) ) VAR n2 = CALCULATE ( MAX ( 'Table'[Price] ), FILTER ( 'Table', [Period] = "FA 2020" && [Currency] = MAX('Table'[Currency] ) && [Methods] = MAX('Table'[Methods] ) ) ) RETURN n1 - n2Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi, Birinder
I simulated some more data, and I hope this time it fits your situation.
Use the function to create a new table.
Table = SELECTCOLUMNS(Dim_facts,"Currencies_ID",[Currencies_ID])Add calculated columns using lookupvalue.
Price = LOOKUPVALUE(Dim_facts[Price],Dim_facts[Currencies_ID],[Currencies_ID])Price = LOOKUPVALUE(Dim_facts[Price],Dim_facts[Currencies_ID],[Currencies_ID])Junk_Dimension_id = LOOKUPVALUE(Dim_facts[Junk_Dimension_id],Dim_facts[Currencies_ID],[Currencies_ID])Methods = LOOKUPVALUE(Dim_methods[Methods],Dim_methods[Junk_Dimension_id],[Junk_Dimension_id])Period_id = LOOKUPVALUE(Dim_facts[Period_id],[Currencies_ID],[Currencies_ID])Period = LOOKUPVALUE(Dim_period[Period],Dim_period[Period_id],[Period_id])Measure just uses the function in the previous reply.
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi, Birinder
This source data is really too large.
By the same token, both Junk_Dimension_id and Period_id can be used as the columns selected for the new table.
Table = SELECTCOLUMNS(Dim_facts,"Junk_Dimension_id",[Junk_Dimension_id])Table = SELECTCOLUMNS(Dim_facts,"Period_id",[Period_id])Hope this helps you.
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi, Birinder
You can also start by selecting the Dim_Currency table.
Table = SELECTCOLUMNS(Dim_Currency,"Currencies_id",[Currencies_id])Best Regards,
18 Replies
- amitchandakSuper User
Birinder , from where the fa20 , and q2 2021 is coming?
Can you share sample data and sample output in table format? Or a sample pbix after removing sensitive data.
- BirinderHelper III
Hi amitchandak
The data is connected lively.
It's quite complex but I can't share you the data due to confideniality concerns for our company.However, I will answer your every question.
Source of Period is a table which is named as "Period (v)" and it belongs to dimension "Dim_period".
Source of Price is a table which is named as "FACTS" and it belongs to dimension "Dim_facts".Source of Method is a table which is named as "Method (f)" and it belongs to dimension "Dim_methods".
Source of currency is a table which is named as "Currency USD" and it belongs to dimension "Dim_currency".
- amitchandakSuper User
Birinder , I wanted to FA and Qtr are different columns in the table, Assume they FY and QTR
We can measure like
This YearQtr= CALCULATE(sum('Table'[Qty]),filter(ALL('Date'),'Date'[YearQtr]=max('Date'[YearQtr])))
This FY= CALCULATE(sum('Table'[Qty]),filter(ALL('Date'),'Date'[FY]=max('Date'[FY])))then we can take diff.
We can use time intelligence for Period can not use time intelligence we can follow rank approach of WOW
refer below if needed
Power BI — Year on Year with or Without Time Intelligence
https://medium.com/@amitchandak.1978/power-bi-ytd-questions-time-intelligence-1-5-e3174b39f38a
https://www.youtube.com/watch?v=km41KfM_0uA
Power BI — Qtr on Qtr with or Without Time Intelligence
https://medium.com/@amitchandak.1978/power-bi-qtd-questions-time-intelligence-2-5-d842063da839
https://www.youtube.com/watch?v=8-TlVx7P0A0
Power BI — Month on Month with or Without Time Intelligence
https://medium.com/@amitchandak.1978/power-bi-mtd-questions-time-intelligence-3-5-64b0b4a4090e
https://www.youtube.com/watch?v=6LUBbvcxtKA
Power BI — Week on Week and WTD
https://medium.com/@amitchandak.1978/power-bi-wtd-questions-time-intelligence-4-5-98c30fab69d3
https://community.powerbi.com/t5/Community-Blog/Week-Is-Not-So-Weak-WTD-Last-WTD-and-This-Week-vs-Last-Week/ba-p/1051123
https://www.youtube.com/watch?v=pnAesWxYgJ8
- v-zhangtiCommunity Support
Hi, Birinder
I recovered some data by the picture you gave me, and I hope it will restore your problem.
Measure = VAR n1 = CALCULATE ( MAX ( 'Table'[Price] ), FILTER ( 'Table', [Period] = "Q2 2021" && [Currency] = MAX( 'Table'[Currency] ) && [Methods] = MAX( 'Table'[Methods] ) ) ) VAR n2 = CALCULATE ( MAX ( 'Table'[Price] ), FILTER ( 'Table', [Period] = "FA 2020" && [Currency] = MAX('Table'[Currency] ) && [Methods] = MAX('Table'[Methods] ) ) ) RETURN n1 - n2Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- BirinderHelper III
Hi v-zhangti
Thank you for such great effort on my problem.
But below I also mentioned that all the tables are from different dimensions. Its a live data. There are dimensions and each dimension has multiple tables and within those tables there lies the data.
Do you any ideas on how we can achieve this ?- v-zhangtiCommunity Support
Hi, Birinder
The fact that you can compose a matrix view like this means that there are associations in each table. You might consider using the LOOKUPVALUE function to aggregate the fields you need into one table.
https://docs.microsoft.com/dax/lookupvalue-function-dax
In the case of the Measure I did, Currency, Period, and Methods need to appear in a table for easy filtering.
If possible, I still hope you can provide simple PBIX files for testing, which can remove sensitive data in advance.
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.