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

Power BI中AVERAGEX计算日平均营业额结果异常求助

问题:DAX日平均营业额计算结果不符合预期

现有数据与DAX度量值

数据表

Sales rows表

transaction_idOrderDatestore_idcustomer_idproduct_idquantity_soldunit_pricestaff_id
101/01/201955658222212
201/01/201955197221230
301/01/201955247228312
402/01/201955658226912
502/01/20195519722201530

Calendar表(dCalendar)

transaction_date
01/01/2019
02/01/2019
03/01/2019
...
28/02/2019

现有DAX度量值

Turnover = SUMX('Sales rows', 'Sales rows'[quantity_sold] * 'Sales rows'[unit_price])
Average Daily Turnover EXPR = AVERAGEX(VALUES(dCalendar[transaction_date]), SUMX ('Sales rows', 'Sales rows'[quantity_sold] * 'Sales rows'[unit_price]))
Average Daily Turnover MEASURE = AVERAGEX(VALUES(dCalendar[transaction_date]),[Turnover])

问题现象

计算结果完全不符合预期,所有日期显示相同的错误值:

  • 2019年1月1日:预期值为10(当日总营业额30除以3笔交易),实际结果为30
  • 2019年2月1日:预期值为118(当日总营业额354除以3笔交易),实际结果为354

原因分析

  1. 需求理解偏差:现有度量值计算的是「所有日历日期的日均总营业额」,但实际需求是「单日平均每笔交易的营业额」(单日总营业额 ÷ 当日交易笔数)。
  2. 上下文过滤失效:若Sales rows与dCalendar的日期列未建立正确关系(Sales rows[OrderDate]与dCalendar[transaction_date]列名或格式不匹配),会导致内部的SUMX无法按当前日期上下文过滤数据,每次计算都是全表总营业额,最终结果等于单日总营业额而非平均值。
  3. 遍历对象错误:原AVERAGEX遍历的是所有日历日期(包括无交易日期),而非当日的交易记录,逻辑完全不符合需求。

解决方法

步骤1:确保日期表关联正确

首先确认Sales rows[OrderDate]与dCalendar[transaction_date]的格式一致,并在模型中建立一对多关系(dCalendar为一端,Sales rows为多端)。

步骤2:正确的DAX度量值

1. 单日平均每笔交易营业额(匹配预期需求)

Avg Transaction per Day = 
DIVIDE(
    [Turnover], // 单日总营业额
    COUNT('Sales rows'[transaction_id]), // 当日交易笔数
    0 // 当日无交易时返回0,避免错误
)

2. 若需计算「有交易日期的日均总营业额」

如果实际需求是统计所有有交易日期的日均总营业额,可使用以下度量值:

Avg Daily Total Turnover = 
AVERAGEX(
    // 仅遍历有交易的日期
    FILTER(VALUES(dCalendar[transaction_date]), [Turnover] > 0),
    [Turnover]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 13:17:02