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

请求调整Power BI账户级日滚动平均度量值(适配缺失数据)

账户专属滚动平均度量值调整

原始数据

DateAccountValue
12/26/2023AAA497
12/26/2023BBB328
12/26/2023CCC398
12/22/2023AAA997
12/22/2023BBB709
12/22/2023CCC943
12/21/2023AAA825
12/21/2023CCC130
12/20/2023AAA275

原有度量值(按日求和的滚动平均)

DailySum = SUM('Table'[Value])

AvgDaily = 
  var thisDate = MAX('Table'[Date])
  var lastN = 
    TOPN(10,
      SUMMARIZE(
        FILTER(ALL('Table'), 'Table'[Date] <= thisDate),
        'Table'[Date],
        "Sum", [Value]
      ),
      [Date], DESC
    )
  return IF(COUNTROWS(lastN) = 10, AVERAGEX(lastN, [Sum]) )

当前需求

不再忽略账户维度,计算每个账户专属的滚动平均:

  • 取该账户最近3个数据实例(而非固定最近3个日期,适配数据缺失场景)
  • 示例:AAA账户在12/26的滚动平均为 (497+997+825)/3 = 773

调整后的度量值

AccountRollingAvg = 
VAR CurrentAccount = SELECTEDVALUE('Table'[Account])
VAR CurrentDate = MAX('Table'[Date])
-- 获取当前账户下,日期小于等于当前日期的所有数据,并按日期倒序取最近3条
VAR Last3Records = 
    TOPN(
        3,
        FILTER(
            ALL('Table'),
            'Table'[Account] = CurrentAccount && 'Table'[Date] <= CurrentDate
        ),
        'Table'[Date], DESC
    )
-- 计算平均,若不足3条可返回实际平均值(如需仅当满3条才返回,可添加IF判断)
RETURN AVERAGEX(Last3Records, 'Table'[Value])

补充说明

  • CurrentAccount 捕获当前上下文的账户,确保计算限定在单个账户范围内
  • Last3Records 自动跳过该账户无数据的日期,只取存在记录的最近3条
  • 如果需要仅当账户有至少3条数据时才返回平均值,可将返回语句修改为:
    RETURN IF(COUNTROWS(Last3Records) >= 3, AVERAGEX(Last3Records, 'Table'[Value]))
    

内容的提问来源于stack exchange,提问作者bigjdawg43

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:34:59