根据日期返回列中的最新值

问题描述 投票:0回答:2

我对 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
返回总计值。

感谢任何帮助/指导。

dax powerpivot
2个回答
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 值为空,则检索与该日期关联的值。


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
迭代的行上下文到筛选器上下文的上下文转换以进行度量评估。您可以在此处阅读有关此主题的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.