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

如何编写DAX公式计算过往同类训练日的平均训练负荷?

按日码计算过往同类训练日的平均训练量DAX公式修正

你的原公式存在逻辑问题:CALCULATE中使用ALL('Position Averages'[Day Code])清除了日码的筛选上下文,导致最终计算的是所有训练日的整体平均,而非按日码分组的同类训练日平均值。以下是修正后的方案:

基础版公式(获取同类日所有历史数据的平均)

按日码计算的过往同类训练日平均训练量 = 
AVERAGEX(
    -- 迭代当前筛选范围内的唯一日码
    VALUES('Position Averages'[Day Code]),
    CALCULATE(
        AVERAGE('Position Averages'[Average Player Load (Session)]),
        -- 仅清除日期和活动名称的筛选,保留日码的筛选逻辑
        ALL('Position Averages'[Date], 'Position Averages'[Activity Name])
    )
)

公式说明:

  • VALUES('Position Averages'[Day Code]):提取当前筛选下的所有独立日码,作为迭代计算的基准,确保每个日码单独统计。
  • ALL('Position Averages'[Date], 'Position Averages'[Activity Name]):清除日期和活动名称的筛选限制,让计算覆盖该日码对应的所有历史训练数据。
  • AVERAGE(...):计算该日码下所有训练日的平均训练量。
  • AVERAGEX:对每个日码的计算结果再做平均(如果当前视图包含多个日码,会输出所有日码的平均水平;若仅查看单个日码,则直接输出该日码的历史平均)。

进阶版公式(仅计算早于当前图表最大日期的过往数据)

如果需要严格排除当前图表中显示的最新日期数据,只统计过往同类日的平均值,可以添加日期筛选条件:

按日码计算的过往同类训练日平均训练量 = 
AVERAGEX(
    VALUES('Position Averages'[Day Code]),
    CALCULATE(
        AVERAGE('Position Averages'[Average Player Load (Session)]),
        ALL('Position Averages'[Date], 'Position Averages'[Activity Name]),
        -- 筛选出早于当前视图最大日期的历史数据
        'Position Averages'[Date] < MAX('Position Averages'[Date])
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:33:21