MAXX ประเมินนิพจน์สำหรับทุกแถวของตาราง แล้วคืนค่าที่มากที่สุด เหมาะกับการหาค่าสูงสุดจากค่าที่คำนวณต่อแถว ไม่ใช่แค่การสรุปคอลัมน์โดยตรง
=MAXX(<table>, <expression>)
=MAXX(<table>, <expression>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table | table | Yes | ตาราง (หรือผลลัพธ์ตาราง) ที่ต้องการไล่ทีละแถว | |
| expression | scalar | Yes | นิพจน์ที่ต้องการประเมินในแต่ละแถว และต้องได้ผลเป็นค่าสเกลาร์ |
เช่น ยอดต่อบรรทัด = จำนวน * ราคาต่อหน่วย แล้วหาแถวที่สูงสุด
เช่น คะแนนรวม = คะแนน1 + คะแนน2 แล้วหาค่าสูงสุด
Max Line Amount = MAXX( Sales, Sales[Quantity] * Sales[UnitPrice] )Max Line Amount =
MAXX(
Sales,
Sales[Quantity] * Sales[UnitPrice]
)
9999.00 (ยอดต่อบรรทัดที่สูงที่สุด)
Max Sale By Region = MAXX( FILTER(Sales, Sales[Region] = "Central"), Sales[SalesAmount] + Sales[Freight] )Max Sale By Region =
MAXX(
FILTER(Sales, Sales[Region] = "Central"),
Sales[SalesAmount] + Sales[Freight]
)
2450.50 (ค่าการขายรวมค่าขนส่งสูงสุดในภาคกลาง)
Max Product Price = MAXX( Sales, RELATED(Products[ListPrice]) ) // Sales เชื่อมกับ Products ผ่าน ProductIDMax Product Price =
MAXX(
Sales,
RELATED(Products[ListPrice])
)
// Sales เชื่อมกับ Products ผ่าน ProductID
5000.00 (ราคาสินค้าสูงสุด)
Max Profit Per Sale = MAXX( Sales, (Sales[SalesAmount] - Sales[CostAmount]) * Sales[ProfitMargin] )Max Profit Per Sale =
MAXX(
Sales,
(Sales[SalesAmount] - Sales[CostAmount]) * Sales[ProfitMargin]
)
15750.75 (กำไรต่อบรรทัดที่สูงที่สุด)
MAX สรุปจากคอลัมน์หรือเปรียบเทียบ 2 ค่า ส่วน MAXX จะประเมินนิพจน์ทีละแถวในตาราง แล้วค่อยหาค่าสูงสุดจากผลรวมทั้งหมด MAX ใช้กับคอลัมน์ตรง ๆ MAXX ใช้กับการคำนวณต่อแถว
MINX ใช้หลักเดียวกัน แต่คืนค่าที่น้อยที่สุดแทนที่จะเป็นค่าที่มากที่สุด ทั้งคู่เป็นฟังก์ชัน iterator ที่ประเมินนิพจน์ต่อแถว
MAXX เป็นฟังก์ชันแบบ iterator จึงอาจช้ากว่าแบบสรุปคอลัมน์โดยตรง หากต้องการแค่ค่าสูงสุดของคอลัมน์ ให้ใช้ MAX กับคอลัมน์แทน บนตารางขนาดใหญ่ (หลักแสน) MAXX อาจใช้เวลานานขึ้น
ได้ แต่ต้องระวัง MAXX ใน Calculated Column จะสร้าง Row Context ซึ่งทำให้นิพจน์ประเมินเหนือกว่า Filter Context ที่กำหนด ควรใช้เมื่อต้องการแถวแรก (ALL) หรือหลีกเลี่ยงหากมี Context ที่ซับซ้อน
MAXX จะข้าม (skip) ค่า Blank และคืนค่าที่มากที่สุดจากค่าที่ไม่ใช่ Blank หากทุกค่าเป็น Blank ผลลัพธ์จะเป็น Blank
ไม่ ถ้าต้องการประเมินทุกแถวของตาราง ใช้ MAXX(TableName, expression) ตรง ๆ ใช้ FILTER เมื่อต้องการจำกัดแถวที่ประเมิน
MAXX เป็นฟังก์ชันแบบ Iterator ที่ไล่ประเมินนิพจน์ทีละแถวในตาราง แล้วคืนค่าที่มากที่สุดจากผลลัพธ์ทั้งหมด เหมาะเมื่อค่าที่ต้องการหาสูงสุดไม่ได้อยู่ในคอลัมน์ตรง ๆ แต่เป็นค่าที่ต้องคำนวณต่อแถว เช่น จำนวน * ราคาต่อหน่วย หรือคะแนนรวมจากหลายคอลัมน์
ที่เจ๋งคือ MAXX จะสร้าง Row Context ขณะที่ประเมิน expression ต่อแถว ซึ่งต่างจาก MAX ที่ต้องทำงานกับคอลัมน์โดยตรง ท่านจึงใช้ MAXX ได้เมื่อต้องการประเมินคำนวณจำนวนเชิงซ้อน
ส่วนตัวผมคิดว่า MAXX เป็นตัวช่วยเก่งมาก ถ้าเข้าใจ Row Context กับ Filter Context ให้ดี 😎