Power BI-DAX-YTD计算的异常行为

时间:2019-02-21 22:40:53

标签: powerbi dax

尝试使用简单的年初至今(YTD)度量。但是事情并没有按预期进行。

数据模型

enter image description here

dim_date (周末栏不正确,但不影响原则)

enter image description here

事实

enter image description here

YTD度量定义如下:

YTD = CALCULATE(
    SUM('fact'[value]),
    DATESYTD(dim_date[Date])
)

对于YTD,这给了我以下错误的结果。

enter image description here

看起来好像不必分别计算周末和工作日的年初至今。

鉴于有16个行的日期被标记为周末,并且所有这些行均属于同一年,因此我希望YTDvalue在以上。

足够有趣的是,如果我通过使用dim_date[Date].[Date]而不是dim_date[Date]来稍微更改DAX,一切都会按预期进行。

YTD = CALCULATE(
    SUM('fact'[value]),
    DATESYTD(dim_date[Date].[Date])
)

有人可以帮忙解释一下这里到底发生了什么吗?

示例.pbix文件在此处:

https://drive.google.com/open?id=1y3ndL7yDE7T4x7Z2bPhMsa-NHRgGzYj0

1 个答案:

答案 0 :(得分:1)

dax.guide指出,

DATESYTD ( <Dates>[, <YearEndDate>] )

等同于

DATESBETWEEN (
    <DATES>,
    STARTOFYEAR ( LASTDATE ( <DATES> )[, <YEARENDDATE>] ),
    LASTDATE ( <DATES> )
)

所以发生的事情是,由于Jan 10False的最后一个weekend值,而Jan 12True的最后一个weekend值并且DATESBETWEEN函数返回的连续范围未经weekend评估上下文过滤,在一种情况下,您可以获取到Jan 10的所有日期,而在情况下,可以获取到Jan 12的所有日期。其他。

要使该度量考虑weekend值而不是在连续的日期范围内进行计算,可以将其添加为过滤器:

YTD = CALCULATE(
    SUM('fact'[value]),
    DATESYTD(dim_date[Date]),
    dim_date[weekend] IN VALUES(dim_date[weekend])
)