Forum Discussion

DieLem's avatar
DieLem
Helper II
8 years ago
Solved

Create calculated row

Good Day, I have a two-part request. I have a table with data in grouped in the "Classification" row, that has Current Month, YTD etc calculations done on the columns. I would like to add a COS...
  • Stachu's avatar
    Stachu
    8 years ago

    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.

    RatioFlagClassificationNominatorDenominator
    FALSETrading IncomeNANA
    FALSECost of SalesNANA
    FALSETaxationNANA
    TRUECoS%Trading IncomeCost of Sales
    TRUETax%Trading IncomeTaxation

     

    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])