Forum Discussion
Create calculated row
- 8 years ago
try this
EDIT - removed inactive link, uploaded the sample file
- 8 years ago
assuming there is Tax% in classification table
you create a new measure defining the new ratioRatioTax := DIVIDE ( CALCULATE ( [RegularSum], ALL ( 'Classification'[Classification] ), 'Classification'[Classification] = "Trading Income" ), CALCULATE ( [RegularSum], ALL ( 'Classification'[Classification] ), 'Classification'[Classification] = "Taxation" ) )and adjust the final measure
SumAndRatio:= VAR varClassification = UPPER(IF(HASONEVALUE(Classification[Classification]),VALUES(Classification[Classification]),BLANK())) RETURN SWITCH(varClassification, "COS%",[RatioCoS], "Tax%",[RatioTax], [RegularSum] )
etc.
you could also consider extending the classification table with the definions of ratios, and use that as more general pattern, e.g.RatioFlag Classification Nominator Denominator FALSE Trading Income NA NA FALSE Cost of Sales NA NA FALSE Taxation NA NA TRUE CoS% Trading Income Cost of Sales TRUE Tax% Trading Income Taxation Ratio = VAR Nom = SELECTEDVALUE(Classification[Nominator]) VAR Denom = SELECTEDVALUE(Classification[Denominator]) RETURN DIVIDE ( CALCULATE ( [RegularSum], ALL ( 'Classification'[Classification] ), 'Classification'[Classification] = Nom ), CALCULATE ( [RegularSum], ALL ( 'Classification'[Classification] ), 'Classification'[Classification] = Denom ) )SumAndRatio = VAR varRatioFlag = IF(HASONEVALUE(Classification[RatioFlag]),VALUES(Classification[RatioFlag]),BLANK()) RETURN IF(varRatioFlag,[Ratio],[RegularSum])
assuming there is Tax% in classification table
you create a new measure defining the new ratio
RatioTax :=
DIVIDE (
CALCULATE (
[RegularSum],
ALL ( 'Classification'[Classification] ),
'Classification'[Classification] = "Trading Income"
),
CALCULATE (
[RegularSum],
ALL ( 'Classification'[Classification] ),
'Classification'[Classification] = "Taxation"
)
)and adjust the final measure
SumAndRatio:= VAR varClassification = UPPER(IF(HASONEVALUE(Classification[Classification]),VALUES(Classification[Classification]),BLANK())) RETURN SWITCH(varClassification, "COS%",[RatioCoS], "Tax%",[RatioTax], [RegularSum] )
etc.
you could also consider extending the classification table with the definions of ratios, and use that as more general pattern, e.g.
| RatioFlag | Classification | Nominator | Denominator |
| FALSE | Trading Income | NA | NA |
| FALSE | Cost of Sales | NA | NA |
| FALSE | Taxation | NA | NA |
| TRUE | CoS% | Trading Income | Cost of Sales |
| TRUE | Tax% | Trading Income | Taxation |
Ratio =
VAR Nom = SELECTEDVALUE(Classification[Nominator])
VAR Denom = SELECTEDVALUE(Classification[Denominator])
RETURN
DIVIDE (
CALCULATE (
[RegularSum],
ALL ( 'Classification'[Classification] ),
'Classification'[Classification] = Nom
),
CALCULATE (
[RegularSum],
ALL ( 'Classification'[Classification] ),
'Classification'[Classification] = Denom
)
)SumAndRatio = VAR varRatioFlag = IF(HASONEVALUE(Classification[RatioFlag]),VALUES(Classification[RatioFlag]),BLANK()) RETURN IF(varRatioFlag,[Ratio],[RegularSum])
Thanks for sharing the information.
I've copied the approach in my dashboard and the ratios are really calculating automatically.
However, when I am trying to visualize in Matrix, the row of the ratios still empty.
Like in snapshot1 (left side is MTD, the right side is YTD), the ratios are blank.
But when I click "Gross Margin%" in YTD matrix, the ratio pops up in MTD matrix at the total level
Below are the DAX I built in my dashboard:
1. Simply sum up dollar value
*SignedData_USD_Sum = Sum(BUCONSOL_Combined[*SignedData_USD])
2. Calculate ratios
Do you happen to know any error I might make?
Thanks!