为什么SAMEPERIODLASTYEAR函数不能产生正确的结果

时间:2019-04-17 19:09:47

标签: powerbi dax powerbi-desktop

首先,我计算了迄今为止写给Premiu的年份:

YTD WP = TOTALYTD([Ttl WP],dim_Date[Date])  //works fine

然后为了计算上一年的值,我使用了SAMEPERIODLASTYEAR函数:

PY WP = CALCULATE([YTD WP],
                SAMEPERIODLASTYEAR(dim_Date[Date]), ALL(dim_Date)
)

结果应该是725.5亿美元。它将在哪里获得1.276亿美元?

enter image description here

因此,很遗憾,它没有给我正确的结果。

我已经有类似的报告并且功能正常,但是为什么在这种情况下它不起作用?

enter image description here

更新1:

使用DATESYTD来获取上一年的数字也会给我1.27亿

PY WP = CALCULATE([YTD WP],
                DATEADD(DATESYTD(dim_Date[Date]),-1,YEAR)
)

更新2:

PY WP = CALCULATE(
                [YTD WP], SAMEPERIODLASTYEAR(DATESYTD(dim_Date[Date])), ALL(dim_Date) 
                )

enter image description here

更新3:

将dim_Date表标记为“ Date”表。

PY WP = TOTALYTD([Ttl WP], SAMEPERIODLASTYEAR(dim_Date[Date]))

但是仍然给出错误的数字。

enter image description here

我使用过滤器功能来确定数字应该是:

PrevYear = CALCULATE([Ttl WP],FILTER(dim_Date,dim_Date[Date] >=VALUE("2018-01-01") && dim_Date[Date] <=VALUE("2018-03-31")))

我得到了正确的号码。

enter image description here

1 个答案:

答案 0 :(得分:0)

您忘记将dim_Date表标记为Date Table。否则,时间智能功能将无法正常工作。

为此,请右键单击dim_Date表,然后从上下文菜单中选择标记为日期表。然后,您可以选择Date列作为键。以下代码段摘自Time Intelligence in Power Pivot文档,但适用于与DAX兼容的所有产品。

  

为了使用时间智能功能,您需要在数据模型中包含一个日期表。日期表必须包含一列,其中包含数据中每年每一天的每一行。该列被认为是“日期”列(尽管可以随意命名)。许多时间智能功能都需要date列,以便根据您选择作为报表字段的日期进行计算。例如,如果您有一个通过使用CLOSINGBALANCEQTR函数计算期末季度末余额的度量,为了使Power Pivot知道季度末的确切时间,它必须引用日期表中的日期列才能知道季度开始和结束的时间。

完成此操作后,尽管PY WP度量可以简化为:

[PY WP] = TOTALYTD([Ttl WP], SAMEPERIODLASTYEAR(dim_Date[Date]))

有关更多信息,请参见Set and use date tables in Power BI;