You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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/2021HAPV3$99.00
2/26/2021VBBR3$131.81
3/1/2021TIMS3$120.12
3/1/2021ALSO3$188.64
6/28/2021BBDC3$61.71
6/28/2021ABEV3$104.50
6/28/2021CCRO3($3.12)
6/28/2021PSSA3($127.37)
6/29/2021MULT3($27.26)
6/29/2021ALSO3($24.79)
7/8/2021GMAT3$104.64

错误的尝试代码

我原本用下面的代码,但它返回的是每个日期的总出现次数,不是累计计数:

Cumul Count Date (Wrong) = 
CALCULATE( 
    COUNT( Tbl[Date] ), 
    FILTER( 
        ALL( Tbl ), 
        Tbl[Date] = EARLIER( Tbl[Date] ) 
    ) 
)

错误结果与期望结果对比

日期股票代码(Ticker)净结果(Net result)日期累计计数(错误)日期累计计数(正确)
2/24/2021HAPV3$99.0011
2/26/2021VBBR3$131.8111
3/1/2021TIMS3$120.1221
3/1/2021ALSO3$188.6422
6/28/2021BBDC3$61.7141
6/28/2021ABEV3$104.5042
6/28/2021CCRO3($3.12)43
6/28/2021PSSA3($127.37)44
6/29/2021MULT3($27.26)21
6/29/2021ALSO3($24.79)22
7/8/2021GMAT3$104.6411

正确的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 22:34:49