PowerBi中MIN和MINX,MAX和MAXX有什么区别?

331 阅读3分钟

在 Power BI(DAX)中,MINMINX 的区别,和 SUM vs SUMX 非常类似:一个是直接对列求最小值,另一个是对每一行计算表达式后求最小值


✅ 一句话总结:

🔹 MIN 是对某一列直接取最小值
🔹 MINX 是对一张表逐行计算表达式后取最小值


🔍 区别对比表

特性MINMINX
计算方式直接对一列求最小值对每行计算表达式,结果集中再取最小值
输入参数单个列名表 + 表达式
是否逐行运算❌ 否✅ 是
场景简单列最小值表达式或跨表字段组合后的最小值

🎯 示例对比

✅ 示例 1:MIN 的用法

最早订单日期 = MIN(Sales[OrderDate])

👉 表示直接从 Sales 表的 OrderDate 列中,找出最早的一天。


✅ 示例 2:MINX 的用法

最低利润 = 
MINX(
    Sales,
    Sales[Quantity] * RELATED(Product[ProfitPerUnit])
)

👉 对 Sales 表每一行计算:
数量 × 单位利润,然后从所有结果中找出最小利润


🔥 实战区别场景

想要做的事用哪个?示例
取一列中的最小值MINMIN(Sales[Amount])
计算“数量 × 单价”的每一行,再取最小值MINXMINX(Sales, Sales[Qty] * Sales[Price])
取每个产品的最低利润(跨表字段)MINX + RELATEDMINX(Sales, Sales[Qty] * RELATED(Product[Profit]))

🧠 常和 MINX 搭配的函数

函数说明
RELATED()跨表取字段(例如产品成本)
FILTER()筛选特定行后再求最小值
VAR复杂表达式里定义变量更清晰

📌 总结口诀

🟡 简单字段最小值 → 用 MIN
🟢 表达式最小值、逐行计算 → 用 MINX


同理,我们可以扩展到MAX和MAXX:

✅ 总体思维图

功能用于哪种情况举例
MIN对“某一列”直接取最小值MIN(Sales[Amount])
MINX对“每一行的表达式”求最小值MINX(Sales, Sales[Qty] * Sales[Price])
MAX对“某一列”直接取最大值MAX(Sales[Amount])
MAXX对“每一行的表达式”求最大值MAXX(Sales, Sales[Qty] * Sales[Price])

🟡 MIN vs MINX

对比点MINMINX
输入参数一列(Column)表 + 表达式(Row Context)
是否逐行处理❌ 否✅ 是
典型用途找一列中的最小值每行计算利润等复杂值后,再找最小值

🔸 示例:

-- 直接找订单日期最小值
最早订单日期 = MIN(Sales[OrderDate])

-- 找最小的订单利润
最低利润 = MINX(Sales, Sales[Quantity] * Sales[ProfitPerUnit])

🔵 MAX vs MAXX

对比点MAXMAXX
输入参数一列(Column)表 + 表达式(Row Context)
是否逐行处理❌ 否✅ 是
典型用途找一列中的最大值每行计算利润、金额后,再取最大值

🔹 示例:

-- 找销售最大金额
最大销售额 = MAX(Sales[Amount])

-- 找最大利润订单
最大利润 = MAXX(Sales, Sales[Quantity] * Sales[ProfitPerUnit])

✅ 总结口诀

功能使用场景用法
MIN某列的最小值MIN(表[列])
MINX表达式的最小值MINX(表, 表达式)
MAX某列的最大值MAX(表[列])
MAXX表达式的最大值MAXX(表, 表达式)

📌 小贴士:

  • 如果你写的是这样:

    MAXX(Sales, Sales[Amount])
    

    其实和:

    MAX(Sales[Amount])
    

    结果一样,只是第一种写法更灵活、能扩展表达式。


🎯 推荐应用场景

目标函数推荐
最早/最晚下单时间MIN() / MAX()
最贵商品的成本(跨表)MAXX(Product, Product[Cost])
每笔交易利润的最大值(跨字段计算)MAXX(Sales, Sales[Qty] * Sales[Profit])