我对Power Pivot和DAX度量衡还很陌生,因此这里将为您提供一些帮助!
我有下表:
我正在尝试建立DAX度量,以返回最新的[Universe]
值。我尝试将CALCULATE
,MAX
,FILTER
,EARLIER
组合使用,但是正努力获得所需的输出,如下所示。
我不一定要在表中显示输出,而是在某种程度上将其输出,因为我想在计算中使用它。
注意,这是我目前的尝试:
Total Universe:=SUM([Universe])
Last Universe Date:=CALCULATE(MAX([Date]),FILTER(tbData,LASTNONBLANK(tbData[Universe],1)))
Last Universe Value:=CALCULATE([Total Universe],FILTER(tbData,tbData[Date]=[Last Universe Date]))
Last Universe Date
返回正确的日期,但是Last Universe Value
返回“总计”值。
感谢任何帮助/指导。
答案 0 :(得分:0)
我认为这很简单,除非我缺少任何东西。在您的测量中,测试当前的Universe值是否为空。如果是,请找到该日期之前的最后一个Universe值。伪代码可能看起来像这样:
Universe Value =
VAR CurrentDate = MIN('Date')
RETURN
IF (ISBLANK(Universe), <Find most recent Universe value less than 'CurrentDate'>, Universe)
如果仅基于日期来查找最后一个日期,则可以使用类似的方法来完成。当然,您可能还想采用其他方法。这是我的第一个念头。
LastDate = TOPN(
1,
FILTER(
ALL('Date'),
'Date'[Date] < CurrentDate
)
),
'Date'[Date],
DESC
)
如果当前的Universe值为空白,我可能会将其存储在变量中,然后检索与此日期关联的值。
答案 1 :(得分:0)
Total Universe:= SUM ( 'tbData'[Universe] )
Last Universe Value:=
VAR MostRecentDate = MAX ( 'tbData'[Date] )
VAR MostRecentNonBlank =
CALCULATE (
MAX ( 'tbData'[Date] ),
ALL ( 'tbData'[Date], 'tbData'[Year], 'tbData'[Month] ), // you should really pull this out to
// a date dimension
'tbData'[Date] <= MostRecentDate,
NOT ( ISBLANK ( 'tbData'[Universe] ) )
)
RETURN
CALCULATE (
[Total Universe],
ALL ( 'tbData'[Date], 'tbData'[Year], 'tbData'[Month] ),
'tbData'[Date] = MostRecentNonBlank
)
这将在'tbData'[Channel]和'tbData'[CPT]上保留过滤器上下文。如果您不希望这样做,也可以将它们放入ALL
中。您最初引用某个度量的FILTER
正在执行从FILTER
迭代的行上下文到度量评估的过滤器上下文的上下文转换。您可以阅读有关此主题here的更多信息。