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] )
)
)
抱歉,如果我错过了类似的 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] )
)
)