DAX 从矩阵中的年份或季度中减去固定值

DAX Subtract Fixed Values from Year or Quarter in a Matrix

需要从克莱斯勒的 Matrix 视觉对象中的年度和季度聚合中减去设定值。数据按月计算多年,需要对克莱斯勒进行固定调整,每季度为5,为15每年 总数不低于零。

预期结果:

日期 阿斯顿·马丁 宝马 克莱斯勒 总计
2020 0 27.36 26.22 53.58
第一季度 0 0 7.99 7.99
第二季度 0 17.34 9.15 26.49
第三季度 0 10.02 0 10.02
第四季度 0 0 7.53 7.53
2021 10.05 51.51 7.32 68.88
第一季度 0 18.45 0 18.45
第二季度 0 13.77 0 13.77
第三季度 10.05 4.44 12.51 27
第四季度 0 14.85 0 14.85
2022 18.14 53.52 4.08 75.74
第一季度 18.14 17.64 0 35.78
第二季度 0 21.77 0 21.77
第三季度 0 7.44 3.73 11.17
第四季度 0 6.67 1.08 7.75
总计 28.19 132.39 37.62 198.2

数据:

id 日期 价值
3 克莱斯勒 2021 年 7 月 30 日 8.88
9 克莱斯勒 9/16/2021 3.16
18 宝马 5/26/2022 5.76
69 克莱斯勒 2020 年 1 月 9 日 6.14
75 宝马 2021 年 3 月 20 日 4.33
84 宝马 2020 年 6 月 20 日 8.97
104 宝马 10/22/2021 4.91
113 阿斯顿·马丁 2022 年 3 月 5 日 5.61
119 克莱斯勒 10/22/2022 6.08
139 宝马 9/13/2020 8.33
140 克莱斯勒 2020 年 8 月 11 日 1.55
169 宝马 2021 年 3 月 2 日 6.97
206 宝马 2021 年 5 月 13 日 4.34
244 克莱斯勒 11/10/2020 8.45
247 克莱斯勒 12/18/2020 2.38
284 宝马 2/4/2022 0.73
289 宝马 10/26/2022 2.24
383 阿斯顿·马丁 2022 年 2 月 21 日 7.61
400 克莱斯勒 2020 年 4 月 5 日 9.34
402 克莱斯勒 9/11/2022 1.63
403 宝马 2020 年 5 月 27 日 8.37
414 克莱斯勒 2021 年 8 月 11 日 4.93
441 宝马 2022 年 2 月 21 日 9.5
533 克莱斯勒 9/18/2022 7.1
538 宝马 1/28/2021 7.15
556 宝马 2022 年 6 月 30 日 4.61
586 宝马 2022 年 5 月 2 日 1.44
672 宝马 10/16/2022 2.21
734 宝马 2022 年 2 月 15 日 6.74
736 克莱斯勒 2020 年 6 月 16 日 4.81
740 宝马 12/5/2022 2.22
755 宝马 9/14/2021 4.44
766 宝马 2021 年 4 月 14 日 9.43
781 阿斯顿·马丁 2021 年 8 月 14 日 6.46
784 克莱斯勒 12/30/2021 4.81
788 宝马 2022 年 5 月 17 日 4.4
815 阿斯顿·马丁 2021 年 8 月 29 日 3.59
816 阿斯顿·马丁 2022 年 3 月 17 日 4.92
831 宝马 2022 年 3 月 24 日 0.67
835 宝马 11/28/2021 9.94
844 克莱斯勒 2021 年 8 月 17 日 0.54
849 宝马 2022 年 8 月 26 日 7.43
861 宝马 2020 年 7 月 24 日 1.69
885 克莱斯勒 1/11/2022 4.27
911 宝马 2022 年 7 月 1 日 0.01
942 克莱斯勒 12/26/2020 1.7
946 宝马 2022 年 6 月 9 日 5.56
948 克莱斯勒 2020 年 3 月 13 日 6.85

假设:您有一个带有 YearQuarter 列的日期 table(不一定标记为日期 table),一个带有每个组键的组 table,以及Table table.

中的 SumValue 之类的简单度量
(Measure on Table table)
SumValue := SUM('Table'[Value])

(Measure on Table table)
CustomChrysler := 
VAR YearQuarterGroup = 
    CROSSJOIN( 
        VALUES( Dates[YearQuarter] ),VALUES( Groups[Group] ) 
        )
VAR Result = 
SUMX(
    YearQuarterGroup, 
    VAR SumVal = [SumValue]
    VAR Amount = IF( Groups[Group] = "Chrysler", SumVal - 5, SumVal )
    VAR AmountGreaterThanZero = IF( Amount < 0, 0, Amount )
    RETURN
    AmountGreaterThanZero
    )
RETURN Result

更新: 哪一个?

CustomChrysler2 := 
VAR YearQuarterGroup = 
    CROSSJOIN( 
        VALUES( Dates[YearQuarter] ),VALUES( Groups[Group] ) 
        )
VAR YearGroup = 
    CROSSJOIN( 
        VALUES( Dates[Year] ),VALUES( Groups[Group] ) 
        )
VAR ResulYearQuarter = 
SUMX(
    YearQuarterGroup, 
    VAR SumVal = [SumValue]
    VAR Amount = IF( Groups[Group] = "Chrysler", SumVal - 5, SumVal )
    VAR AmountGreaterthanZero = IF( Amount >= 0, Amount) //BLANK
    //VAR AmountGreaterThanZero = IF( Amount < 0, 0, Amount ) //Zero
    RETURN
    AmountGreaterThanZero
    )
VAR ResultYear = 
SUMX(
    YearGroup, 
    VAR SumVal = [SumValue]
    VAR Amount = IF( Groups[Group] = "Chrysler", SumVal - 15, SumVal )
    VAR AmountGreaterthanZero = IF( Amount >= 0, Amount) //BLANK
    //VAR AmountGreaterThanZero = IF( Amount < 0, 0, Amount ) //Zero
    RETURN
    AmountGreaterThanZero
    )
RETURN 
SWITCH(
    TRUE(),
    ISINSCOPE(Dates[Quarter]), ResulYearQuarter,
    ResultYear //ISINSCOPE(Dates[Year]) and Grand Total
    )