我对 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
返回总计值。
感谢任何帮助/指导。
我认为这非常简单,除非我遗漏了一些东西。在您的测量中,测试当前的 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 值为空,则检索与该日期关联的值。
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
迭代的行上下文到筛选器上下文的上下文转换以进行度量评估。您可以在此处阅读有关此主题的更多信息。