AVERAGE
和 AVERAGEX
都是 DAX 中用于求平均值的函数,但它们的用法和适用场景是有明显区别的,下面我们来详细对比一下:
✅ 一句话总结区别:
🔹
AVERAGE
是对一列"直接求平均"🔹
AVERAGEX
是对"计算后的结果"求平均,适合更复杂的逻辑
🔍 一、AVERAGE
用法
📘 语法:
DAX
AVERAGE(<column>)
📌 说明:
- 只能对一列数值型数据求平均值
- 无法处理表达式或计算逻辑
✅ 示例:
DAX
平均销售额 = AVERAGE(Sales[销售额])
意思是:对 Sales[销售额]
这一列,直接计算平均值。
🧠 二、AVERAGEX
用法
📘 语法:
DAX
AVERAGEX(<table>, <expression>)
📌 说明:
- 可以对表的每一行执行计算表达式,然后再对结果求平均
- 更灵活,适合复杂逻辑(如计算利润率、折扣率等)
✅ 示例:
DAX
平均利润率 =
AVERAGEX(
Sales,
Sales[利润] / Sales[销售额]
)
意思是:对 Sales
表的每一行先计算"利润率",然后对所有行的利润率求平均值。
📊 三、实际应用场景对比
应用场景 | 用哪个? | 说明 |
---|---|---|
直接对一列字段求平均 | AVERAGE |
简洁高效 |
先做计算,再对结果求平均 | AVERAGEX |
更强大 |
想计算每个客户的平均订单金额 | AVERAGEX |
每客户先求,再平均 |
想看每个订单的折扣率平均 | AVERAGEX |
必须先行计算 |
🧪 四、注意事项
项 | AVERAGE |
AVERAGEX |
---|---|---|
输入参数 | 一列数值字段 | 表和表达式 |
可扩展性 | 低 | 高,适合复杂逻辑 |
性能 | 较快(因简单) | 略慢(因行级计算) |
✅ 总结
函数 | 适合场景 |
---|---|
AVERAGE |
快速对一列字段求平均 |
AVERAGEX |
对每行执行公式后再平均 |