MAXX ประเมินนิพจน์สำหรับทุกแถวของตาราง แล้วคืนค่าที่มากที่สุด เหมาะกับการหาค่าสูงสุดจากค่าที่คำนวณต่อแถว ไม่ใช่แค่การสรุปคอลัมน์โดยตรง
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| table | table | ตาราง (หรือผลลัพธ์ตาราง) ที่ต้องการไล่ทีละแถว |
| expression | scalar | นิพจน์ที่ต้องการประเมินในแต่ละแถว และต้องได้ผลเป็นค่าสเกลาร์ |
MAXX เป็นฟังก์ชันแบบ Iterator ที่ไล่ประเมินนิพจน์ทีละแถวในตาราง แล้วคืนค่าที่มากที่สุดจากผลลัพธ์ทั้งหมด เหมาะเมื่อค่าที่ต้องการหาสูงสุดไม่ได้อยู่ในคอลัมน์ตรง ๆ แต่เป็นค่าที่ต้องคำนวณต่อแถว เช่น จำนวน * ราคาต่อหน่วย หรือคะแนนรวมจากหลายคอลัมน์
ที่เจ๋งคือ MAXX จะสร้าง Row Context ขณะที่ประเมิน expression ต่อแถว ซึ่งต่างจาก MAX ที่ต้องทำงานกับคอลัมน์โดยตรง ท่านจึงใช้ MAXX ได้เมื่อต้องการประเมินคำนวณจำนวนเชิงซ้อน
ส่วนตัวผมคิดว่า MAXX เป็นตัวช่วยเก่งมาก ถ้าเข้าใจ Row Context กับ Filter Context ให้ดี 😎
เช่น ยอดต่อบรรทัด = จำนวน * ราคาต่อหน่วย แล้วหาแถวที่สูงสุด
เช่น คะแนนรวม = คะแนน1 + คะแนน2 แล้วหาค่าสูงสุด
MAXX คำนวณ Quantity * UnitPrice สำหรับทุกแถวใน Sales แล้วคืนค่าที่มากที่สุดจากทั้งหมด
ใช้ FILTER เพื่อจำกัดตาราง แล้ว MAXX ประเมินนิพจน์เฉพาะแถวที่เข้าเงื่อนไขเท่านั้น
ใช้ RELATED เพื่อดึงข้อมูลจากตาราง Products สำหรับแต่ละแถวของ Sales ก่อนหาค่าสูงสุด
expression สามารถมีการคำนวณหลายขั้น ไม่ต้องเป็นการคำนวณธรรมดา MAXX จะประเมินนิพจน์ทั้งหมดสำหรับทุกแถว
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 จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
AVERAGEX เป็น Iterator Function ที่วนลูปตารางทีละแถว คำนวณ Expression แล้วนำผลลัพธ์มาหาค่าเฉลี่ย เหมาะสำหรับกรณีที่ต้องการเฉลี่ยค่าที่คำนวณได้ เช่น ราคา×จำนวน หรือค่าเฉลี่ยของ Measure ในแต่ละกลุ่ม
MAX คืนค่าสูงสุดจากคอลัมน์ภายใต้ filter context หรือเปรียบเทียบสองค่าสเกลาร์แล้วเลือกค่าที่มากกว่า ทำงานกับ numeric, date และ text columns โดย scan ทุก row ที่ผ่าน filter แล้วเลือกค่าสูงสุด เหมาะสำหรับ measures และ calculated columns (ต้อง wrap ด้วย CALCULATE)
MAXA คืนค่ามากสุดโดยตีความ TRUE=1, FALSE/BLANK=0 และข้ามข้อความที่ไม่ใช่ตัวเลข ใช้กับคอลัมน์ที่มีทั้งตัวเลขและค่าตรรกะเพื่อประเมินค่ามากสุดอย่างสอดคล้อง
MIN คืนค่าน้อยที่สุดจากคอลัมน์ภายใต้ filter context ปัจจุบัน หรือเปรียบเทียบสองค่า scalar expression แล้วคืนค่าที่น้อยกว่า รองรับตัวเลข วันที่ และข้อความ ทำงานภายใต้ filter context ทำให้ค่าที่หาได้จะถูกกรองตาม slicer หรือ visual filter อัตโนมัติ เหมาะกับการหาราคาต่ำสุด วันที่เร็วที่สุด หรือการตั้งเพดาน (cap) ให้กับค่าคำนวณ
MINA คืนค่าน้อยสุดโดยพิจารณา TRUE เป็น 1, FALSE/BLANK เป็น 0 และข้ามข้อความที่ไม่ใช่ตัวเลข ใช้กับคอลัมน์ที่มีตัวเลขและค่าตรรกะปนกันเพื่อหาค่าน้อยสุดอย่างมีบริบท
MINX ประเมินนิพจน์สำหรับทุกแถวของตาราง แล้วคืนค่าที่น้อยที่สุด ต่างจาก MIN ที่ใช้กับคอลัมน์โดยตรง MINX เหมาะกับการหาค่าต่ำสุดจากค่าที่คำนวณต่อแถว เช่น (Quantity × UnitPrice)
CURRENTGROUP คืนตารางย่อยของกลุ่มปัจจุบันและใช้ได้เฉพาะภายใน GROUPBY ช่วยให้คำนวณค่าที่อิงแถวภายในกลุ่มได้ เช่น SUMX/COUNTROWS/ MAXX ของกลุ่มนั้น
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่