【问题标题】:DAX Subtract Fixed Values from Year or Quarter in a MatrixDAX 从矩阵中的年份或季度中减去固定值
【发布时间】:2021-06-25 17:13:08
【问题描述】:

需要从克莱斯勒矩阵视觉对象中的年份和季度汇总中减去设定值。多年的数据是按月计算的,需要对Chrysler only进行固定调整,每个季度为 5,每年为 15,没有总计低于零。

预期结果:

Date Aston Martin BMW Chrysler Grand Total
2020 0 27.36 26.22 53.58
Qtr1 0 0 7.99 7.99
Qtr2 0 17.34 9.15 26.49
Qtr3 0 10.02 0 10.02
Qtr4 0 0 7.53 7.53
2021 10.05 51.51 7.32 68.88
Qtr1 0 18.45 0 18.45
Qtr2 0 13.77 0 13.77
Qtr3 10.05 4.44 12.51 27
Qtr4 0 14.85 0 14.85
2022 18.14 53.52 4.08 75.74
Qtr1 18.14 17.64 0 35.78
Qtr2 0 21.77 0 21.77
Qtr3 0 7.44 3.73 11.17
Qtr4 0 6.67 1.08 7.75
Grand Total 28.19 132.39 37.62 198.2

数据:

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

【问题讨论】:

    标签: powerbi dax powerbi-desktop


    【解决方案1】:

    假设:您有一个包含 YearQuarter 列的日期表(不一定标记为日期表)、一个包含每个组的键的 Groups 表,以及 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
        )
    

    【讨论】:

    • 这很好,但我还需要每年 -15 且总数不会低于零。两个单独的计算:每季度 -5 和每年 -15,不低于零
    • 我的问题和可能对其他想要合作的人的澄清:在年度级别,我应该从 SUM 中减去 15 而不做任何更改吗?我的意思是,克莱斯勒在 2020 年的结果应该是 41.22 - 15 = 26.22(?)
    • 你对 26.22 是正确的,我修复了结果
    • Grand Total 的定义是什么? [Year] 级别不再代表 [Quarter] 级别修改值的总和。我的意思是,应该如何计算总计?
    • 刚刚编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多