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