0

我有一个简单的 PowerPivot 工作簿,其中一个表中有一些 SalesTargets,这些是按月计算的。通常是每个月的第一天,以及一个日期维度。

我已经编写了一个 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 的日期总和

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

如果我从代码中的两个区域中删除工作日逻辑,一切都会正常工作..并且可以跨月、季和年滚动而不会出现问题..

我敢肯定,如果我了解这里的问题所在,我将能够解决它......但我只是看不到它。

谢谢

4

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

希望这篇文章对某人有所帮助:)

于 2014-08-19T11:20:00.767 回答