Thep Excel

PARTITIONBY – แบ่งกลุ่มก่อนคำนวณใน Window Functions

PARTITIONBY ระบุคอลัมน์ที่ใช้แบ่งกลุ่มสำหรับ window functions เพื่อให้การเลื่อน/เลือกตำแหน่งเกิดขึ้น “ภายในกลุ่ม” ตามที่กำหนด มักใช้ร่วมกับ ORDERBY และ MATCHBY

=PARTITIONBY(<Column>[, <Column>])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
4/10

Difficulty
5/10

Usefulness
4/10

Syntax & Arguments

=PARTITIONBY(<Column>[, <Column>])

Argument Type Required Default Description
Column column Yes คอลัมน์ที่ใช้แบ่งกลุ่ม (partition) ก่อนทำ window calculation
Column2 column Optional ไม่ระบุ คอลัมน์เพิ่มเติมสำหรับแบ่งกลุ่ม

How it works

ดึงอันดับที่ N ภายในแต่ละกลุ่ม

เช่นดึงสินค้าขายดีอันดับ 1 ภายในแต่ละหมวด

เลื่อนแถวก่อนหน้า/ถัดไปภายในกลุ่ม

เช่นเทียบยอดขายกับแถวก่อนหน้าในหมวดเดียวกัน

Examples

ตัวอย่างที่ 1: INDEX อันดับ 1 ต่อหมวด (แนวคิด)
อันดับ 1 ต่อหมวด (แนวคิด) = INDEX( 1, SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]), ORDERBY([Sales], DESC), PARTITIONBY(Prod…
PARTITIONBY ทำให้ INDEX เลือกตำแหน่งภายในแต่ละหมวด แทนที่จะเลือกจากทั้งตารางรวมกัน
DAX Formula:

=อันดับ 1 ต่อหมวด (แนวคิด) =
INDEX(
    1,
    SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]),
    ORDERBY([Sales], DESC),
    PARTITIONBY(Product[Category])
)

Result:

ได้ตาราง 1 แถวต่อหมวด (ตามบริบทที่เหมาะสม)

ตัวอย่างที่ 2: ใช้กับ OFFSET ภายในกลุ่ม (แนวคิด)
แถวก่อนหน้าในหมวด (แนวคิด) = OFFSET( -1, SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]), ORDERBY([Sales], DESC), PARTITIONBY(P…
OFFSET จะเลื่อนตำแหน่งโดยไม่ข้ามไปข้ามหมวด เพราะมีการแบ่งกลุ่มไว้ก่อน
DAX Formula:

=แถวก่อนหน้าในหมวด (แนวคิด) =
OFFSET(
    -1,
    SUMMARIZECOLUMNS(Product[Category], Product[ProductKey], "Sales", [Total Sales]),
    ORDERBY([Sales], DESC),
    PARTITIONBY(Product[Category])
)

Result:

ได้แถวก่อนหน้าภายในหมวดเดียวกันตามลำดับยอดขาย

ตัวอย่างที่ 3: ใช้คู่กับ MATCHBY เมื่อมีค่าซ้ำ (แนวคิด)
แนวคิด: PARTITIONBY แบ่งกลุ่ม, ORDERBY เรียง, MATCHBY ระบุแถวเมื่อค่าซ้ำ
เมื่อคีย์เรียงมีค่าซ้ำ การเพิ่ม MATCHBY จะช่วยให้การระบุแถวปัจจุบันชัดขึ้น
DAX Formula:

=แนวคิด: PARTITIONBY แบ่งกลุ่ม, ORDERBY เรียง, MATCHBY ระบุแถวเมื่อค่าซ้ำ

Result:

ช่วยให้ผลลัพธ์นิ่งและกำหนดได้ชัดเจน

FAQs

PARTITIONBY ใช้เดี่ยว ๆ ได้ไหม?

โดยหลักใช้ภายใน window functions (OFFSET/INDEX/WINDOW) เพื่อกำหนดการแบ่งกลุ่ม

ถ้าไม่ใช้ PARTITIONBY จะเกิดอะไรขึ้น?

การคำนวณตำแหน่ง/การเลื่อนแถวจะทำบนชุดข้อมูลรวมทั้งหมด (ไม่แบ่งกลุ่ม) ซึ่งอาจไม่ตรงกับสิ่งที่ต้องการ

Resources & Related

Additional Notes

PARTITIONBY ใช้ภายในกลุ่ม Window Functions (เช่น OFFSET, INDEX, WINDOW) เพื่อกำหนด “การแบ่งกลุ่ม” (partition) ของข้อมูล ก่อนที่จะทำการเรียงลำดับด้วย ORDERBY และคำนวณตำแหน่ง/การเลื่อนแถวภายในแต่ละกลุ่ม

แนวคิดคือ: PARTITIONBY แบ่งกลุ่ม, ORDERBY เรียงในกลุ่ม, และ MATCHBY ช่วยระบุเอกลักษณ์ของแถวในกรณีที่ลำดับมีค่าซ้ำ

Leave a Reply

Your email address will not be published. Required fields are marked *