DAX 前一个非空日

DAX previous non empty day

抱歉,如果我错过了类似的 question/answer。

基本上我正在尝试在 DAX 中进行日常比较,但找不到获取前一个非空日的度量的好方法。

我试过 PREVIOUSDAY 函数,但是当天数有差距时,比如周六和周日没有促销,结果不是我需要的

PreviousAmount = CALCULATE([Total $ Amount], PREVIOUSDAY('Fact'[Date]))

我能想到的是在日期维度中添加一个辅助列来指示之前的非空日期(即,如果日期是星期一,那么之前的非空日期将是之前的星期五)。然后我可以使用 CALCULATE 函数并按非空日期进行过滤。

但是除了这样做,还有什么方法可以即时进行计算吗?提前致谢。

下面table应该反映了我想要实现的目标:

<table border="1">
    <th>Date</th><th>Amount</th><th>What I got</th><th>What I hope</th>
    <tr>
      <td>01/07/2016</td>
      <td>7983</td>
      <td></td>
      <td></td>
    </tr>
  <tr>
      <td>04/07/2016</td>
      <td>15933</td>
      <td></td>
      <td>7983</td>
    </tr>
  <tr>
  <tr>
      <td>05/07/2016</td>
      <td>38591</td>
      <td>15933</td>
      <td>15933</td>
    </tr>
  <tr>
      <td>06/07/2016</td>
      <td>7859</td>
      <td>38591</td>
    <td>38591</td>
    </tr>
  <tr>
      <td>07/07/2016</td>
      <td>3252</td>
      <td>7859</td>
    <td>7859</td>
    </tr>
  <tr>
      <td>07/07/2016</td>
      <td>9474</td>
      <td>3252</td>
    <td>3252</td>
    </tr>
</table>

它可能不是最简洁的,但您可以创建一个计算列来存储前一天的值

PreviousDate =
CALCULATE (
    MAX ( [Date] ),
    FILTER ( AmountTable, AmountTable[Date] < EARLIER ( AmountTable[Date] ) )
)

然后为前一天的金额创建一个新的计算列

=
CALCULATE (
    SUM ( [Amount] ),
    FILTER (
        ALL ( AmountTable ),
        AmountTable[Date] = EARLIER ( AmountTable[PreviousDate] )
    )
)