基于DAX计算不同PurchaseOrderId及产品类别的订单平均价值
DAX实现订单平均价值计算(含按ProductCategory分组)
需求明确
你需要计算的订单平均价值公式为:(所有唯一订单的Subtotal总和 + 所有唯一订单的Wet总和) / 唯一PurchaseOrderId的数量,同时需支持按ProductCategory维度拆分计算该平均值。
DAX度量值实现
创建以下度量值(替换'销售表'为你实际的表名):
订单平均价值 = VAR TotalSubtotal = SUMX(DISTINCT('销售表'[PurchaseOrderId]), CALCULATE(SUM('销售表'[Subtotal]))) VAR TotalWet = SUMX(DISTINCT('销售表'[PurchaseOrderId]), CALCULATE(SUM('销售表'[Wet]))) VAR DistinctOrderCount = DISTINCTCOUNT('销售表'[PurchaseOrderId]) RETURN DIVIDE(TotalSubtotal + TotalWet, DistinctOrderCount, 0)
代码解释
TotalSubtotal:先提取所有唯一的PurchaseOrderId,再对每个单独订单计算其Subtotal的总和,最终汇总得到所有订单的Subtotal总金额(对应你样本中的5586.93)TotalWet:逻辑与TotalSubtotal一致,计算所有订单的Wet总金额(对应样本中的1620.20)DistinctOrderCount:统计数据中唯一的PurchaseOrderId数量(对应样本中的7)DIVIDE:安全执行除法运算,第三个参数设置为0,避免出现除数为0的错误
按ProductCategory分组计算
上述度量值本身支持维度筛选:
在Power BI的可视化组件(如矩阵、柱状图)中添加ProductCategory字段作为行/列分组,度量值会自动根据当前类别上下文,计算该类别下的订单平均价值。
辅助验证(可选)
若要单独验证各部分数值,可创建以下辅助度量值:
总Subtotal = SUMX(DISTINCT('销售表'[PurchaseOrderId]), CALCULATE(SUM('销售表'[Subtotal]))) 总Wet = SUMX(DISTINCT('销售表'[PurchaseOrderId]), CALCULATE(SUM('销售表'[Wet]))) 唯一订单数 = DISTINCTCOUNT('销售表'[PurchaseOrderId])
内容的提问来源于stack exchange,提问作者Amandeep
相关产品推荐
相关产品推荐

