尝试使用简单的年初至今(YTD)度量。但是事情并没有按预期进行。
数据模型
dim_date (周末栏不正确,但不影响原则)
事实
YTD
度量定义如下:
YTD = CALCULATE(
SUM('fact'[value]),
DATESYTD(dim_date[Date])
)
对于YTD,这给了我以下错误的结果。
看起来好像不必分别计算周末和工作日的年初至今。
鉴于有16个行的日期被标记为周末,并且所有这些行均属于同一年,因此我希望YTD
和value
在以上。
足够有趣的是,如果我通过使用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
答案 0 :(得分:1)
dax.guide指出,
DATESYTD ( <Dates>[, <YearEndDate>] )
等同于
DATESBETWEEN (
<DATES>,
STARTOFYEAR ( LASTDATE ( <DATES> )[, <YEARENDDATE>] ),
LASTDATE ( <DATES> )
)
所以发生的事情是,由于Jan 10
是False
的最后一个weekend
值,而Jan 12
是True
的最后一个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])
)