อ่านในภาษาอังกฤษ

แชร์ผ่าน


ยศ

นําไปใช้กับ: การคํานวณคอลัมน์จากการคํานวณ ตารางจากการคํานวณ หน่วยวัดภาพการคํานวณ

แสดงการจัดอันดับสําหรับบริบทปัจจุบันภายในพาร์ติชันที่ระบุ โดยเรียงลําดับตามลําดับที่ระบุ ถ้าหาค่าตรงกันไม่พบ อันดับจะเป็นค่าว่าง

ไวยากรณ์

RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

พารามิเตอร์

เงื่อนไข คำนิยาม
ties (ไม่บังคับ) กําหนดวิธีการจัดการการจัดอันดับเมื่อมีการผูกแถวตั้งแต่สองแถวขึ้นไป
ถ้าระบุ ค่าที่สนับสนุนคือ DENSE หรือ SKIP อย่างใดอย่างหนึ่ง
ถ้าเว้นไว้:
- ค่าเริ่มต้นคือข้าม
ความสัมพันธ์ (ไม่บังคับ) นิพจน์ตารางที่ส่งกลับแถวผลลัพธ์
ถ้าระบุ คอลัมน์ <ทั้งหมดใน orderBy> และ <partitionBy> ต้องมาจากคอลัมน์นั้น
ถ้าเว้นไว้:
- <orderBy> ต้องระบุ
อย่างชัดเจน- คอลัมน์ orderBy> และ <partitionBy> ทั้งหมด<จะต้องมีคุณสมบัติครบถ้วนและมาจากตารางเดียว
- ค่าเริ่มต้นเป็น ALLSELECTED() ของคอลัมน์<ทั้งหมดใน orderBy> และ <partitionBy>
แกน (ไม่บังคับ) แกนในรูปร่างวิชวล พร้อมใช้งานในการคํานวณวิชวลเท่านั้น และแทนที่<ความสัมพันธ์>
orderBy (ไม่บังคับ) คําสั่ง ORDERBY() ที่มีคอลัมน์ที่กําหนดวิธีการเรียงลําดับแต่ละพาร์ติชัน
ถ้าเว้นไว้:
- <ต้องระบุความสัมพันธ์> อย่างชัดเจน
- ค่าเริ่มต้นในการเรียงลําดับตามทุกคอลัมน์ที่สัมพันธ์กับ<>ไม่ได้ระบุไว้ใน <partitionBy>
ช่อง ว่าง (ไม่บังคับ) ค่าจาระเลี่ยงที่กําหนดวิธีการจัดการค่าว่างเมื่อเรียงลําดับ
ค่าที่ได้รับการสนับสนุนคือ:
  • KEEP (ค่าเริ่มต้น) ซึ่งลักษณะการทํางานสําหรับค่าตัวเลขจะถูกเรียงลําดับระหว่างค่าศูนย์และค่าลบ ลักษณะการทํางานสําหรับสตริงเป็นค่าว่างจะถูกเรียงลําดับก่อนสตริงทั้งหมด รวมถึงสตริงที่ว่างเปล่า
  • ก่อนอื่น ช่องว่างจะถูกเรียงลําดับในตอนแรกเสมอ โดยไม่คํานึงถึงการเรียงลําดับจากน้อยไปหามากหรือจากมากไปหาน้อย
  • LAST ช่องว่างจะถูกเรียงลําดับที่ส่วนท้ายเสมอ โดยไม่คํานึงถึงการเรียงลําดับจากน้อยไปหามากหรือจากมากไปหาน้อย

หมายเหตุ เมื่อ<>มีการระบุ<>พารามิเตอร์และช่องว่างในฟังก์ชัน ORDERBY() ของแต่ละนิพจน์ช่องว่างบนนิพจน์ orderBy แต่ละรายการจะมีความสําคัญสําหรับนิพจน์ orderBy ที่เกี่ยวข้องและนิพจน์ orderBy โดยไม่มี<ช่องว่าง>ที่ระบุจะเปลี่ยน<เป็นพารามิเตอร์ที่ว่างเปล่า>บนฟังก์ชันหน้าต่างหลัก
partitionBy (ไม่บังคับ) คําสั่ง PARTITIONBY() ที่มีคอลัมน์ที่กําหนดวิธีการ<แบ่งพาร์ติชันความสัมพันธ์>
ถ้ามีการเว้นไว้ <ความสัมพันธ์> จะถือว่าเป็นพาร์ติชันเดียว
matchBy (ไม่บังคับ) ส่วนคําสั่ง MATCHBY() ที่มีคอลัมน์ที่กําหนดวิธีการจับคู่ข้อมูลและระบุแถวปัจจุบัน
รี เซ็ต (ไม่บังคับ) พร้อมใช้งานในการคํานวณวิชวลเท่านั้น ระบุว่าการคํานวณรีเซ็ตหรือไม่ และระดับใดของลําดับชั้นคอลัมน์ของรูปร่างวิชวล ค่าที่ยอมรับคือ: NONE, LOWESTPARENT, HIGHESTPARENT หรือจํานวนเต็ม ลักษณะการทํางานจะขึ้นอยู่กับเครื่องหมายจํานวนเต็ม:
- ถ้าเป็นศูนย์หรือเว้นไว้ การคํานวณจะไม่รีเซ็ต เทียบเท่ากับ NONE
- ถ้าเป็นค่าบวก จํานวนเต็มจะระบุคอลัมน์ที่เริ่มต้นจากสูงสุด เป็นอิสระจากเกรน HIGHESTPARENT เทียบเท่ากับ 1
- ถ้าเป็นค่าลบ จํานวนเต็มจะระบุคอลัมน์โดยเริ่มต้นจากต่ําสุด ซึ่งสัมพันธ์กับเกรนปัจจุบัน LOWESTPARENT เทียบเท่ากับ -1

ค่าที่ส่งกลับ

หมายเลขอันดับสําหรับบริบทปัจจุบัน

หมายเหตุ

  • แต่ละ <orderBy>, <partitionBy> และ <matchBy> ต้องมีค่าภายนอกที่สอดคล้องกันเพื่อช่วยกําหนดแถวปัจจุบันที่จะทํางาน โดยมีลักษณะการทํางานต่อไปนี้:

    • ถ้ามีหนึ่งคอลัมน์ภายนอกที่สอดคล้องกัน ค่านั้นจะถูกใช้
    • ถ้าไม่มีคอลัมน์ภายนอกที่สอดคล้องกัน จะเป็น:
      • RANK จะกําหนด orderBy>, <partitionBy> และ <matchBy> คอลัมน์ทั้งหมด<ที่ไม่มีคอลัมน์ภายนอกที่สอดคล้องกัน
      • สําหรับการรวมค่าที่มีอยู่สําหรับคอลัมน์เหล่านี้ในบริบทหลัก RANK จะมีการประเมิน RANK และแถวจะถูกส่งกลับ
      • ผลลัพธ์สุดท้ายของ RANK คือหมายเลขอันดับ
  • ถ้า <matchBy> ปรากฏอยู่ RANK จะพยายามใช้คอลัมน์ใน <matchBy> และ <partitionBy> เพื่อปฏิเสธแถวปัจจุบัน

  • หากคอลัมน์ที่ระบุภายใน <orderBy> และ <partitionBy> ไม่สามารถระบุเฉพาะทุกแถวที่มีความ <สัมพันธ์กับ>กันได้ อย่างน้อยสองแถวอาจมีการจัดอันดับเดียวกันและการจัดอันดับจะถูกกําหนดโดยพารามิเตอร์ความสัมพันธ์

  • RANK ส่งกลับค่าว่างสําหรับแถวทั้งหมด ขอแนะนําให้คุณทดสอบนิพจน์ของคุณอย่างละเอียด

  • อันดับจะไม่เปรียบเทียบ RANKX เป็น SUM เปรียบเทียบกับ SUMX

  • <Reset> สามารถใช้ในการคํานวณวิชวลเท่านั้น และไม่สามารถใช้ร่วมกับ <orderBy> หรือ <partitionBy> ได้ ถ้า <รีเซ็ต> ปรากฏ <อยู่ สามารถระบุแกน> ได้ แต่ <ไม่สามารถระบุความสัมพันธ์> ได้

ตัวอย่างที่ 1 - คอลัมน์จากการคํานวณ

คิวรี DAX ต่อไปนี้:

EVALUATE
ADDCOLUMNS(
    'DimGeography',
    "Rank",
    RANK(
    	DENSE,
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
        LAST,
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

แสดงตารางที่จัดอันดับแต่ละภูมิศาสตร์ด้วย EnglishCountryRegionName เดียวกันตาม StateProvinceName และ City ค่าคอลัมน์ orderBy> ที่ว่างเปล่า<จะเรียงลําดับที่ส่วนท้าย

ตัวอย่างที่ 2 - การคํานวณวิชวล

คิวรี DAX การคํานวณวิชวลต่อไปนี้:

SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))

SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))

สร้างสองคอลัมน์ที่จัดอันดับแต่ละเดือนตามยอดขายทั้งหมด ทั้งภายในแต่ละปี และประวัติทั้งหมด

สกรีนช็อตด้านล่างแสดงเมทริกซ์วิชวลและนิพจน์การคํานวณวิชวลแรก:

การคํานวณวิชวล DAX

ดัชนี
ORDERBY
PARTITIONBY
หน้าต่าง
ROWNUMBER