MATCHBY ระบุคอลัมน์ที่ใช้จับคู่และระบุแถวปัจจุบันใน window functions เพื่อให้การเลื่อน/เลือกตำแหน่งแถวทำงานถูกต้องเมื่อมีค่า ORDERBY ซ้ำ หรือเมื่อจำเป็นต้องกำหนดเอกลักษณ์ของแถว
=MATCHBY(<Column>[, <Column>])
=MATCHBY(<Column>[, <Column>])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Column | column | Yes | คอลัมน์ที่ใช้ระบุและจับคู่แถวปัจจุบันภายในกลุ่ม | |
| Column2 | column | Optional | ไม่ระบุ | คอลัมน์เพิ่มเติมเพื่อช่วยระบุเอกลักษณ์ของแถว |
ถ้าหลายแถวมีค่าที่ใช้เรียงเท่ากัน ให้เพิ่ม MATCHBY เพื่อระบุแถวให้ชัด
เช่นใช้ ProductKey + Date เพื่อให้แถวมีเอกลักษณ์
ยอดขายแถวก่อนหน้า (แนวคิด) = VAR t = OFFSET( -1, SUMMARIZECOLUMNS(Product[ProductKey], "Sales", [Total Sales]), ORDERBY([Sales], DESC), MATCHBY(Product[ProductK…=ยอดขายแถวก่อนหน้า (แนวคิด) =
VAR t =
OFFSET(
-1,
SUMMARIZECOLUMNS(Product[ProductKey], "Sales", [Total Sales]),
ORDERBY([Sales], DESC),
MATCHBY(Product[ProductKey])
)
RETURN
MINX(t, [Sales])
ได้ค่ายอดขายของแถวก่อนหน้าตามลำดับที่กำหนด
แถวอันดับ 1 ต่อหมวด (แนวคิด) = INDEX( 1, SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]), ORDERBY([Sales], DESC), PARTITIONBY(P…=แถวอันดับ 1 ต่อหมวด (แนวคิด) =
INDEX(
1,
SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]),
ORDERBY([Sales], DESC),
PARTITIONBY(Product[Category]),
MATCHBY(Product[ProductKey])
)
ได้ตาราง 1 แถวตามตำแหน่งที่เลือก
MATCHBY หลายคีย์ (แนวคิด) = MATCHBY(Sales[ProductKey], Sales[OrderDate])=MATCHBY หลายคีย์ (แนวคิด) =
MATCHBY(Sales[ProductKey], Sales[OrderDate])
กำหนดคีย์ผสมเพื่อระบุแถว
ใช้กับกลุ่ม window functions เช่น OFFSET, INDEX, WINDOW และมักใช้ร่วมกับ ORDERBY/PARTITIONBY
ไม่จำเป็นเสมอไป แต่ถ้าลำดับที่กำหนดมีค่าซ้ำและทำให้ผลไม่นิ่ง การเพิ่ม MATCHBY จะช่วยให้การระบุแถวชัดเจนขึ้น
MATCHBY ใช้ภายในกลุ่มฟังก์ชัน Window Functions (เช่น OFFSET, INDEX, WINDOW) เพื่อกำหนดว่า “คอลัมน์ใด” จะถูกใช้ในการระบุและจับคู่แถวปัจจุบันเมื่อคำนวณตำแหน่ง/การเลื่อนแถว ช่วยให้ผลลัพธ์นิ่งขึ้นในกรณีที่การเรียงลำดับ (ORDERBY) มีค่าซ้ำหรือมีแถวที่ดูเหมือนกัน
แนวคิดคือ: ORDERBY กำหนดลำดับ, PARTITIONBY กำหนดกลุ่ม, และ MATCHBY ช่วยระบุเอกลักษณ์ของแถวเพื่อให้การ “แมตช์แถวปัจจุบัน” ทำได้ถูกต้องตามที่คุณตั้งใจ