首页 文章

每月表格DAX分摊/范围预算

提问于
浏览
0

我有一个简单的PowerPivot工作簿,在一个表中有一些SalesTargets,这些是按月...通常是每月的第1个,以及日期维度 .

我已经写了(通过很多痛苦)DAX查询来分配我们为了月份间报告而收集的月度目标(否则将没有目标数据)...

然而,我发现我的查询存在一些问题,我不知道如何解决这个问题,如果我试图仅在日级别显示分配的目标值,那天工作日有点错误 . ..基本上什么都没有显示在任何层次结构级别,我不知道为什么:(

不知道为什么,我无法解决它...这是我目前的代码:

Measure :=
CALCULATE (
    SUMX (
        VALUES ( Dates[Date] ),
        CALCULATE (
            CALCULATE (
                SUM ( SalesTargets[Target] ),
                ALL ( Dates[Date] ),
                SUMMARIZE ( Dates, Dates[MonthName] )
            )
                / CALCULATE (
                    DISTINCTCOUNT ( Dates[Date] ),
                    ALL ( Dates[Date] ),
                    Dates[IsWorkingDay] = 1,
                    SUMMARIZE ( Dates, Dates[MonthName] )
                )
        )
    ),
    Dates[IsWorkingDay] = 1
)

代码试图在一个月级别对销售目标求和,然后将该数字除以IsWorkingDay = 1的日期总和

此过程是针对日期表的所有日期[日期](最低粒度)执行的,然后我尝试再次过滤IsWorkingDay = 1的日期 .

如果我从代码中的两个区域中删除工作日逻辑,一切正常..并且在几个月,几个季度和几年内卷起来没有问题 .

我相信如果我明白这里的问题是什么,我就能解决它......我只是看不到它 .

谢谢

1 回答

  • 1

    这就是我最终的目的:

    SalesTarget :=
    CALCULATE (
        SUMX (
            VALUES ( Dates[Date] ),
            CALCULATE (
                CALCULATE (
                    [Sum of Target],
                    ALL ( 'Dates' ),
                    SUMMARIZE ( Dates, Dates[MonthName], Dates[Year] )
                )
                    / CALCULATE (
                        [Sum of IsWorkingDay],
                        ALL ( 'Dates' ),
                        SUMMARIZE ( 'Dates', 'Dates'[MonthName] )
                    )
            )
        ),
        Dates[IsWorkingDay] = 1
    )
    

    请注意,这里唯一真正的区别是删除IsWorkingDay = 1的不同天数

    我注意到,当我将测量结果分成较小的一组时,这并没有给我正确的答案,因此在经过一段时间的游戏之后将其改为其他内容 .

    在我的日期表中,IsWorkingDay是1或0的布尔字段,但您也可以使用以下内容执行此操作:

    WorkingDays :=
    CALCULATE (
        COUNTROWS ( 'Dates' ),
        ALL ( 'Dates' ),
        SUMMARIZE ( 'Dates', 'Dates'[MonthName] ),
        'Dates'[IsWorkingDay] = "Working Day"
    )
    

    希望这篇文章能帮助别人:)

相关问题