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

แชร์ผ่าน


ROWNUMBER

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

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

ไวยากรณ์

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

พารามิเตอร์

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

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

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

หมายเลขแถวสําหรับบริบทปัจจุบัน

หมายเหตุ

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

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

ถ้า matchBy ปรากฏ ROWNUMBER จะพยายามใช้คอลัมน์ใน matchBy และ partitionBy เพื่อทําให้แถวปัจจุบันไม่ทึบ
ถ้าคอลัมน์ที่ระบุภายใน orderBy และ partitionBy ไม่สามารถระบุทุกแถวใน relationที่ไม่ซ้ํากันได้ จะเป็น:

  • ROWNUMBER จะพยายามค้นหาจํานวนคอลัมน์เพิ่มเติมน้อยที่สุดซึ่งจําเป็นต้องระบุเฉพาะทุกแถว
  • หากพบคอลัมน์ดังกล่าว ROWNUMBER จะ
    • ลองค้นหาจํานวนคอลัมน์เพิ่มเติมน้อยที่สุดซึ่งจําเป็นต้องระบุเฉพาะทุกแถว
    • ผนวกคอลัมน์ใหม่เหล่านี้เข้ากับส่วนคําสั่ง orderBy โดยอัตโนมัติ
    • เรียงลําดับแต่ละพาร์ติชันโดยใช้ชุดคอลัมน์ orderBy ใหม่นี้
  • ถ้าไม่พบคอลัมน์ดังกล่าวและฟังก์ชันตรวจพบความสัมพันธ์ในขณะทํางาน ข้อผิดพลาดจะถูกส่งกลับ

reset สามารถใช้ในการคํานวณวิชวลเท่านั้น และไม่สามารถใช้ร่วมกับ orderBy หรือ partitionByได้ ถ้ามี reset อยู่ สามารถระบุ axis ได้ แต่ไม่สามารถระบุ relation ได้

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

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

EVALUATE
ADDCOLUMNS(
    'DimGeography',
    "UniqueRank",
    ROWNUMBER(
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

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

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

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

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

SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))

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

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

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

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