如何在DAX计算表中添加重复日期的累计计数列
解决DAX计算列中按日期分组的累计计数问题
我需要给计算表Tbl添加一个计算列,实现按日期分组的累计计数——同一日期内的行从1开始递增,遇到新日期时计数重置为1。
原计算表DAX代码
Tbl = SUMMARIZECOLUMNS( dDates[Date], fPurchases[Ticker], "Net result", SUMX( fPurchases, fPurchases[Shares] * ( fPurchases[Share Price] - fPurchases[Average Cost] ) ) )
生成的Tbl前几行数据
| 日期 | 股票代码(Ticker) | 净结果(Net result) |
|---|---|---|
| 2/24/2021 | HAPV3 | $99.00 |
| 2/26/2021 | VBBR3 | $131.81 |
| 3/1/2021 | TIMS3 | $120.12 |
| 3/1/2021 | ALSO3 | $188.64 |
| 6/28/2021 | BBDC3 | $61.71 |
| 6/28/2021 | ABEV3 | $104.50 |
| 6/28/2021 | CCRO3 | ($3.12) |
| 6/28/2021 | PSSA3 | ($127.37) |
| 6/29/2021 | MULT3 | ($27.26) |
| 6/29/2021 | ALSO3 | ($24.79) |
| 7/8/2021 | GMAT3 | $104.64 |
错误的尝试代码
我原本用下面的代码,但它返回的是每个日期的总出现次数,不是累计计数:
Cumul Count Date (Wrong) = CALCULATE( COUNT( Tbl[Date] ), FILTER( ALL( Tbl ), Tbl[Date] = EARLIER( Tbl[Date] ) ) )
错误结果与期望结果对比
| 日期 | 股票代码(Ticker) | 净结果(Net result) | 日期累计计数(错误) | 日期累计计数(正确) |
|---|---|---|---|---|
| 2/24/2021 | HAPV3 | $99.00 | 1 | 1 |
| 2/26/2021 | VBBR3 | $131.81 | 1 | 1 |
| 3/1/2021 | TIMS3 | $120.12 | 2 | 1 |
| 3/1/2021 | ALSO3 | $188.64 | 2 | 2 |
| 6/28/2021 | BBDC3 | $61.71 | 4 | 1 |
| 6/28/2021 | ABEV3 | $104.50 | 4 | 2 |
| 6/28/2021 | CCRO3 | ($3.12) | 4 | 3 |
| 6/28/2021 | PSSA3 | ($127.37) | 4 | 4 |
| 6/29/2021 | MULT3 | ($27.26) | 2 | 1 |
| 6/29/2021 | ALSO3 | ($24.79) | 2 | 2 |
| 7/8/2021 | GMAT3 | $104.64 | 1 | 1 |
正确的DAX计算列代码
方法1:用COUNTROWS+FILTER实现
日期累计计数(正确) = VAR CurrentDate = Tbl[Date] VAR CurrentTicker = Tbl[Ticker] RETURN COUNTROWS( FILTER( Tbl, Tbl[Date] = CurrentDate && Tbl[Ticker] <= CurrentTicker ) )
说明:如果同一日期下存在重复的Ticker,需要替换为表格中唯一标识每行的列(如交易ID)来保证计数准确。
方法2:用RANKX函数实现
日期累计计数(正确) = RANKX( FILTER(Tbl, Tbl[Date] = EARLIER(Tbl[Date])), Tbl[Ticker], , ASC, DENSE )
说明:DENSE参数确保计数连续不跳号,符合需求中的累计逻辑。
内容的提问来源于stack exchange,提问作者leolapa
相关产品推荐
相关产品推荐

