【问题标题】:Dax measure to correctly calculate previous week category and subtotalDax 度量以正确计算前一周的类别和小计
【发布时间】:2020-11-08 21:18:39
【问题描述】:

我在 powerbi 中使用矩阵表来显示不同区域(类别)的前一周总数。我的大部分工作都在工作,但我无法正确地让表格上的小计工作。 我认为这与我正在使用的过滤有关 - 我无法更正它。

screen capture

如您所见,我之前第 24 周的总计丢失了

Dax 代码是:

VAR Area =
    MAX ( 'SumTable'[Area Name] )
VAR CurrentWeek =
    SELECTEDVALUE ( SumTable[WeekofYear] )
VAR CurrentYear =
    SELECTEDVALUE ( SumTable[Year] )
VAR MaxWeekNumber =
    CALCULATE ( MAX ( SumTable[WeekofYear] ), ALL ( SumTable ) )
RETURN
    IF (
        HASONEVALUE ( SumTable[Area Name] ),
        SUMX (
            FILTER (
                ALL ( SumTable ),
                IF (
                    CurrentWeek = 1,
                    SumTable[WeekofYear] = MaxWeekNumber
                        && SumTable[Year] = CurrentYear - 1
                        && SumTable[Area Name] = Area,
                    SumTable[WeekofYear] = CurrentWeek - 1
                        && SumTable[Year] = CurrentYear
                        && SumTable[Area Name] = Area
                )
            ),
            SumTable[BOE]
        ),
        SUMX (
            FILTER (
                ALLSELECTED ( SumTable ),
                IF (
                    CurrentWeek = 1,
                    SumTable[WeekofYear] = MaxWeekNumber
                        && SumTable[Year] = CurrentYear - 1,
                    SumTable[WeekofYear] = CurrentWeek - 1
                        && SumTable[Year] = CurrentYear
                )
            ),
            SumTable[BOE]
        )
    )

数据表: Example Table Format

谢谢你,第一次发帖!

B

【问题讨论】:

    标签: powerbi dax powerbi-desktop


    【解决方案1】:

    我将首先从我的日期表中拆分我的数据表。

    而且我猜你不需要整个表格,只需要年份和周数的列,并将区域保持在上下文中,这样你就不必担心 HASONEVALUE 是否可以正常工作。

    SELECTEDVALUE 仅在上下文中只有该列的单个值时返回,而不是总计和小计的情况。

    MyMeasure = 
    VAR CurrentWeek =
        MAX( SumTable[WeekofYear] )
    VAR CurrentYear =
        MAX( SumTable[Year] )
    VAR MaxWeekNumber =
        CALCULATE ( MAX ( SumTable[WeekofYear] ), SumTable[Year] = CurrentYear-1  )
    RETURN
        IF(
           CurrentWeek = 1,
           CALCULATE(
               SUM(SumTable[BOE]),
               FILTER (
                   ALL ( SumTable[Year],SumTable[WeekofYear]),
                   SumTable[WeekofYear] = MaxWeekNumber
                   && SumTable[Year] = CurrentYear - 1
               )
           ),
           CALCULATE (
               SUM ( SumTable[BOE] ),
               FILTER (
                   ALL ( SumTable[WeekofYear] ),
                   SumTable[WeekofYear] = CurrentWeek-1
               )
           )
    )
    

    我没有机会确认此代码。

    【讨论】:

    • 谢谢你 - 效果很好 - 我会审查你的 cmets 并确保实施。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多