MEDIANX คำนวณค่ามัธยฐาน (50th Percentile) ของนิพจน์ที่ประเมินในแต่ละแถว ต่างจาก MEDIAN ที่ทำงานบนคอลัมน์เดียว MEDIANX คือ iterator function ที่ให้คุณสร้างนิพจล์ซับซ้อนก่อนหาค่ากลาง
=MEDIANX(<Table>, <Expression>)
=MEDIANX(<Table>, <Expression>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Table | table | Yes | ไม่มี | ตารางข้อมูลที่จะประเมินนิพจน์สำหรับแต่ละแถว หรือ expression ที่ส่งคืนตาราง |
| Expression | expression | Yes | ไม่มี | นิพจน์ (expression) ที่ประเมินแต่ละแถว สามารถเป็นการอ้างอิงคอลัมน์เดียว คำนวณ เช่น Sales[Qty]*Sales[Price] หรือ RELATED columns |
Median Sales Line Amount = VAR Threshold = MEDIANX( Sales, Sales[Quantity] * Sales[Price] ) RETURN ThresholdMedian Sales Line Amount =
VAR Threshold =
MEDIANX(
Sales,
Sales[Quantity] * Sales[Price]
)
RETURN
Threshold
ค่ากลางของยอดขาย = 4,250
Median Sales USA = MEDIANX( FILTER( Sales, RELATED(Store[Country]) = "USA" ), Sales[Amount] )Median Sales USA =
MEDIANX(
FILTER(
Sales,
RELATED(Store[Country]) = "USA"
),
Sales[Amount]
)
3,500
Median With Blanks = MEDIANX( Transactions, Transactions[NetAmount] )Median With Blanks =
MEDIANX(
Transactions,
Transactions[NetAmount]
)
2,100
Median by Category = IF( HASONEVALUE(Product[Category]), MEDIANX( FILTER( ALL(Sales), RELATED(Product[Category]) = VALUES(Product[Category]) ), Sales[Amount] ),…Median by Category =
IF(
HASONEVALUE(Product[Category]),
MEDIANX(
FILTER(
ALL(Sales),
RELATED(Product[Category]) = VALUES(Product[Category])
),
Sales[Amount]
),
BLANK()
)
1,800 (สำหรับหมวดหมู่ที่เลือก)
MEDIAN ทำงานบนคอลัมน์เดียว และละเว้น BLANK ส่วน MEDIANX เป็น iterator function ที่ประเมินนิพจน์ในแต่ละแถว และ รวม BLANK ในการคำนวณ ตัวอย่างเช่น MEDIAN(Sales[Price]) ประเมินเฉพาะราคา ส่วน MEDIANX(Sales, Sales[Qty]*Sales[Price]) คำนวณ Quantity*Price ก่อน แล้วจึงหาค่าเฉลี่ย
เนื่องจาก MEDIANX เป็น iterator function ที่เหมาะสำหรับ expressions ที่ซับซ้อน บางครั้ง expression ของคุณอาจส่งคืน BLANK ตั้งใจหรือไม่ตั้งใจ MEDIANX รักษา BLANK ไว้ในสถิติจึงเป็นพฤติกรรมปกติของ iterator functions (เช่น SUMX, AVERAGEX) ส่วน MEDIAN เป็นการรวม aggregate ที่ขัดเกาะ BLANK
MEDIANX ประเมิน Expression ในแต่ละแถว ซึ่งหมายถึง row context นี่เป็นจุดแข็งของ iterator function บริบทแถว (row context) ให้ acccess ไปยัง values ของแถวนั้นเท่านั้น ถ้าต้องการกำหนด filter สำหรับตาราง ใช้ FILTER() เข้ากับ MEDIANX เช่น MEDIANX(FILTER(Sales, Sales[Year]=2024), Sales[Amount]) ซึ่ง row context จาก FILTER จะนำไปสู่การประเมิน Amount สำหรับแถวที่ 2024 เท่านั้น
ได้ แต่ต้องมานี้เล็กน้อย MEDIANX คำนวณค่า single median สำหรับชุด rows ถ้าต้องการ median ต่อ category ต้องใช้ SUMPRODUCT + FILTER หรือ วิธีอื่นเช่น SUMMARIZECOLUMNS ผมแนะนำให้ใช้วิธี grouping ด้วยการคำนวณด้านหน้า (เช่น pivot table) แล้วค่อย MEDIANX บนผลลัพธ์
MEDIANX เป็น iterator function ที่หาค่ามัธยฐาน (50th percentile) ของนิพจน์ที่คำนวณในแต่ละแถว มันทำงานโดยประเมิน Expression สำหรับแต่ละแถวในตาราง แล้วจึงหาค่ากลางของผลลัพธ์ทั้งหมด
ที่เจ๋งของ MEDIANX คือมันเป็น iterator – คุณสามารถคำนวณอะไรก็ได้ก่อนหาค่าเฉลี่ย เช่น Quantity * Price, Discount Amount, หรือแม้แต่ RELATED columns จากตารางอื่น และ MEDIANX รวม BLANK ในการคำนวณ (ต่างจาก MEDIAN ที่ละเว้น BLANK) ซึ่งมีความสำคัญเมื่อข้อมูลไม่สมบูรณ์
ส่วนตัวผมถือว่า MEDIANX เป็นเครื่องมือการวิเคราะห์ที่ดีกว่า AVERAGE ในสถานการณ์ที่มี outliers เพราะ median ไม่ว่อกว่าด้วยค่าเอกโพท ใช้มันเมื่อต้องการค่ากลางที่ robust มากขึ้น