DAX Function RANKX พร้อมตัวอย่างการใช้งาน

แนะนำการใช้งานฟังก์ชัน RANKX ซึ่งเป็นฟังก์ชันของ DAX (Data Analysis Expression) สามารถใช้งานใน Power BI, Power Pivot ของ Excel และ SSAS ได้ พร้อมตัวอย่างการใช้งานและไฟล์ตัวอย่างให้ Download
DAX Function RANKX พร้อมตัวอย่างการใช้งาน
ทักษะ (ระบุได้หลายทักษะ)

Function RANKX

ใช้สำหรับการหาลำดับ Expression ในแต่ละแถวของตารางที่กำหนด เช่น ต้องการดูว่าสินค้าใดขายดีในลำดับเท่าไหร่ตามยอดขาย เป็นต้น

 

รูปแบบของ Syntax

RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])

table คือ ชื่อของตารางที่มีข้อมูลเพื่อจะทำการหาลำดับ
expression คือ คำสั่ง expression ที่จะใช้ในการคืนค่า 1 ค่า (single scalar value) เพื่อทำการตรวจสอบแต่ละ Row ใน Table เพื่อดูค่าของลำดับ (Ranking)
value นั้น โดยส่วนใหญ่จะไม่ระบุค่านี้ จะใช้เมื่อมีการนำเอาค่าไปเปรียบเทียบเพิ่มเติม จะส่งผลต่อลำดับที่ได้
order คือ การระบุประเภทของการเรียงลำดับว่าจากมากไปน้อย หรือ จากน้อยไปมาก

0 หรือ FALSE คือเรียงจากมากไปน้อย โดยค่าที่มากสุดจะได้ RANKX เท่ากับ 1
(เป็นค่าตั้งต้น กรณีไม่ได้ระบุค่านี้)
1 หรือ TRUE คือเรียงจากน้อยไปมาก โดยค่าที่น้อยสุดจะได้ RANKX เท่ากับ 1

ties คือ กำหนดค่าจะให้เรียงลำดับในกรณีมีค่าเท่ากันอย่างไร โดยมีรูปแบบด้วยกัน 2 ลักษณะ คือ

Skip คือ หากมีค่าซ้ำในลำดับที่ 11 เหมือนกัน 5 รายการ ก็จะแสดงลำดับถัดไป คือ ลำดับที่ 16 (11+5)
(เป็นค่าตั้งต้น กรณีไม่ได้ระบุค่านี้)
Dense คือ หากมีค่าซ้ำในลำดับที่ 11 เหมือนกัน 5 รายการ ก็จะแสดงลำดับถัดไป คือ ลำดับที่ 12

การคืนค่า

ผลลัพธ์เป็นค่า 1 ค่า (single scalar value)

ตัวอย่างเช่น

หากเรามีข้อมูล Table Sales ในรูป

Table Sales มีข้อมูล ID, OrderDate, ProductCode, Quantity, CostPrice, UnitPrice, Category

เราสามารถสร้าง Measure เพื่อคำนวณหาลำดับการขายในแต่ละ Product และในแต่ละ Category ได้ดังนี้

RankByCategory = RANKX(ALL(Sales[Category]),[Total Sales],,DESC)
//คำนวณลำดับยอดขายตามรายการสินค้า Category

RankByProduct = RANKX(ALL(Sales[ProductCode]),[Total Sales],,DESC)
//คำนวณลำดับยอดขายตามรายการสินค้า Product Code โดยหากมีลำดับเท่ากันจะข้ามลำดับที่ซ้ำไป เช่นในรูปมีสินค้าลำดับที่ 1 จำนวน 2 รายการ ก็จะแสดงลำดับถัดไปเป็นลำดับที่ 3 เป็นต้น

RankByProductDense = RANKX(ALL(Sales[ProductCode]),[Total Sales],,DESC,Dense)
//คำนวณลำดับยอดขายตามรายการสินค้า Product Code โดยหากมีลำดับเท่ากันจะไม่ข้ามลำดับ เช่นในรูปมีสินค้าลำดับที่ 1 จำนวน 2 รายการ ก็จะแสดงลำดับถัดไปเป็นลำดับที่ 2 เป็นต้น

โดย Total Sales = SUM(Sales[SaleAmount])

RANKX กับการกำหนดค่า Skip หรือ Dense ให้กับ Measure

โดย Measure ดังกล่าวสามารถนำไปใช้คำนวณได้กับ Dimension ที่ต้องการ โดยดังแสดงในตัวอย่างนี้ อีกทั้งจะยังคงคำนวณอัตโนมัติ เมื่อมีการ Filter จาก Slicer อีกด้วย เช่น จากในภาพจะเป็นการคำนวณลำดับการขายสินค้า โดยแสดงเฉพาะ Beverages และ Meat/Poultry ตามที่มีการเลือก Slicer ของ Category ที่กำหนด

 

ตัวอย่างการใช้งาน RANKX

ตัวอย่างการใช้งาน RANKX เพื่อคำนวณ RankByProduct และ RankByCategory

Download

ไฟล์ตัวอย่างการใช้งาน DAX Function RANKX

 

อ้างอิงจากเว็บไซต์ Microsoft

https://docs.microsoft.com/en-us/dax/rankx-function-dax

บทความเกี่ยวกับ DAX ที่น่าสนใจ


 

แนะนำหลักสูตรการอบรม

เรียนรู้คำสั่ง DAX เพื่อใช้งานด้าน Data Analysis, Data Analytic, BI โดยใช้ Power BI
ในหลักสูตร Data Analysis Expression (DAX) for Power BI (2 Days)

 

และมีหลักสูตรการอบรมเกี่ยวกับ Power BI เพิ่มเติมดังนี้ :


 

หรือรูปแบบ Online ที่
Microsoft Power BI for Business Analytics (64 บทเรียน)