INDEX
นําไปใช้กับ: คอลัมน์จากการคํานวณตารางจากการคํานวณหน่วยวัดการคํานวณวิชวล
แสดงแถวที่ตําแหน่งสัมบูรณ์ที่ระบุโดยพารามิเตอร์ตําแหน่งภายในพาร์ติชันที่ระบุ โดยเรียงลําดับตามลําดับที่ระบุ ถ้าไม่สามารถหาพาร์ติชันปัจจุบันให้กับพาร์ติชันเดียวได้ อาจส่งกลับหลายแถว
วากยสัมพันธ์
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
พารามิเตอร์
เทอม | นิยาม |
---|---|
position |
ตําแหน่งสัมบูรณ์ (แบบ 1) จากที่ได้รับข้อมูล: - position เป็นบวก: 1 คือแถวแรก 2 คือแถวที่สอง ฯลฯ - position เป็นลบ: -1 คือแถวสุดท้าย -2 เป็นแถวสุดท้ายแถวที่สอง ฯลฯ เมื่อ position อยู่นอกขอบเขต หรือศูนย์ หรือ BLANK(), INDEX จะส่งกลับตารางว่าง ซึ่งอาจเป็นนิพจน์ DAX ใด ๆ ที่แสดงค่าสเกลา |
relation |
(ไม่บังคับ) นิพจน์ตารางที่ผลลัพธ์ถูกส่งกลับ
คอลัมน์ทั้งหมดใน partitionBy ต้องมาจากคอลัมน์นั้นหรือตารางที่เกี่ยวข้อง
ถ้าเว้นไว้: คุณต้องระบุ - orderBy อย่างชัดเจน
- นิพจน์ orderBy และ partitionBy ทั้งหมดต้องเป็นชื่อคอลัมน์ที่มีคุณสมบัติครบถ้วนและมาจากตารางเดียว
- ค่าเริ่มต้นคือ ALLSELECTED() ของคอลัมน์ทั้งหมดใน orderBy และ partitionBy |
axis |
(ไม่บังคับ) แกนในรูปร่างวิชวล พร้อมใช้งานในการคํานวณวิชวลเท่านั้น และแทนที่ relation |
orderBy |
(ไม่บังคับ) คําสั่ง ORDERBY() ที่มีนิพจน์ที่กําหนดวิธีการเรียงลําดับแต่ละพาร์ติชัน
ถ้าเว้นไว้: ต้องมีการระบุ - relation อย่างชัดเจน
- ค่าเริ่มต้นการเรียงลําดับตามทุกคอลัมน์ใน relation ซึ่งยังไม่ได้ระบุใน partitionBy |
blanks |
(ไม่บังคับ) ค่าจาระเหยที่กําหนดวิธีการจัดการค่าว่างเมื่อเรียงลําดับ relation หรือ axis
ค่าที่สนับสนุนคือ:
|
partitionBy |
(ไม่บังคับ) คําสั่ง relation จะถือว่าเป็นพาร์ติชันเดียว |
matchBy |
(ไม่บังคับ) ส่วนคําสั่ง |
reset |
(ไม่บังคับ) พร้อมใช้งานในการคํานวณวิชวลเท่านั้น ระบุว่าการคํานวณรีเซ็ตหรือไม่ และระดับใดของลําดับชั้นคอลัมน์ของรูปร่างวิชวล ค่าที่ยอมรับคือ: การอ้างอิงเขตข้อมูลไปยังคอลัมน์ในรูปร่างวิชวลปัจจุบัน NONE (ค่าเริ่มต้น) LOWESTPARENT HIGHESTPARENT หรือจํานวนเต็ม ลักษณะการทํางานขึ้นอยู่กับเครื่องหมายจํานวนเต็ม: - ถ้าศูนย์หรือเว้นไว้ การคํานวณจะไม่รีเซ็ต เทียบเท่ากับ NONE
- ถ้าเป็นค่าบวก จํานวนเต็มจะระบุคอลัมน์ที่เริ่มต้นจากสูงสุด โดยไม่ขึ้นอยู่กับเกรน HIGHESTPARENT เทียบเท่ากับ 1
- ถ้าเป็นค่าลบ จํานวนเต็มจะระบุคอลัมน์ที่เริ่มต้นจากต่ําสุด ซึ่งสัมพันธ์กับเกรนปัจจุบัน LOWESTPARENT เทียบเท่ากับ -1 |
ค่าผลลัพธ์
แถวที่ตําแหน่งสัมบูรณ์
หมาย เหตุ
แต่ละ partitionBy
และคอลัมน์ matchBy
ต้องมีค่าภายนอกที่สอดคล้องกันเพื่อช่วยกําหนด "พาร์ติชันปัจจุบัน" ที่จะทํางาน โดยมีลักษณะการทํางานต่อไปนี้:
- ถ้ามีหนึ่งคอลัมน์ภายนอกที่สอดคล้องกัน ค่านั้นจะถูกใช้
- ถ้าไม่มีคอลัมน์ภายนอกที่สอดคล้องกัน:
-
INDEX จะกําหนด
partitionBy
และคอลัมน์matchBy
ทั้งหมดที่ไม่มีคอลัมน์ภายนอกที่สอดคล้องกัน - สําหรับการรวมค่าที่มีอยู่สําหรับคอลัมน์เหล่านี้ในบริบทหลักของ INDEXINDEX ได้รับการประเมินและแถวจะถูกส่งกลับ
- ผลลัพธ์สุดท้าย INDEXคือการรวมแถวเหล่านี้
-
INDEX จะกําหนด
- ถ้ามีคอลัมน์ภายนอกที่สอดคล้องกันมากกว่าหนึ่งคอลัมน์ ข้อผิดพลาดจะถูกส่งกลับ
ถ้า matchBy
ปรากฏ INDEX จะพยายามใช้คอลัมน์ matchBy
และ partitionBy
เพื่อระบุแถว
ถ้าไม่มี matchBy
และคอลัมน์ที่ระบุภายใน orderBy
และ partitionBy
ไม่สามารถระบุเฉพาะทุกแถวใน relation
:
- INDEX จะพยายามค้นหาจํานวนคอลัมน์เพิ่มเติมน้อยที่สุดที่จําเป็นในการระบุเฉพาะทุกแถว
- ถ้าสามารถพบได้คอลัมน์ดังกล่าว INDEX จะผนวกคอลัมน์ใหม่เหล่านี้เข้ากับ
orderBy
โดยอัตโนมัติ และแต่ละพาร์ติชันจะถูกเรียงลําดับโดยใช้ชุดคอลัมน์ OrderBy ใหม่นี้ - ถ้าไม่พบคอลัมน์ดังกล่าว ข้อผิดพลาดจะถูกส่งกลับ
ตารางเปล่าจะถูกส่งกลับถ้า:
- ไม่มีค่าภายนอกที่สอดคล้องกันของคอลัมน์ PartitionBy อยู่ภายใน
relation
- ค่า
position
อ้างอิงถึงตําแหน่งที่ไม่มีอยู่ภายในพาร์ติชัน
ถ้า INDEX ถูกใช้ภายในคอลัมน์จากการคํานวณที่กําหนดไว้ในตารางเดียวกันกับ relation
และ orderBy
จะถูกละเว้น ข้อผิดพลาดจะถูกส่งกลับ
reset
สามารถใช้ในการคํานวณวิชวลเท่านั้น และไม่สามารถใช้ร่วมกับ orderBy
หรือ partitionBy
ได้ ถ้ามี reset
อยู่ สามารถระบุ axis
ได้ แต่ไม่สามารถระบุ relation
ได้
ตัวอย่างที่ 1 - คอลัมน์จากการคํานวณ
คิวรี DAX ต่อไปนี้:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
แสดงตารางต่อไปนี้:
DimDate[CalendarYear] |
---|
2005 |
ตัวอย่างที่ 2 - คอลัมน์จากการคํานวณ
คิวรี DAX ต่อไปนี้:
EVALUATE
SUMMARIZECOLUMNS (
FactInternetSales[ProductKey],
DimDate[MonthNumberOfYear],
FILTER (
VALUES(FactInternetSales[ProductKey]),
[ProductKey] < 222
),
"CurrentSales", SUM(FactInternetSales[SalesAmount]),
"LastMonthSales",
CALCULATE (
SUM(FactInternetSales[SalesAmount]),
INDEX(-1, ORDERBY(DimDate[MonthNumberOfYear]))
)
)
ORDER BY [ProductKey], [MonthNumberOfYear]
แสดงตารางต่อไปนี้:
FactInternetSales[ProductKey] | DimDate[MonthNumberOfYear] | [CurrentSales] | [LastMonthSales] |
---|---|---|---|
214 | 1 | 5423.45 | 8047.7 |
214 | 2 | 4968.58 | 8047.7 |
214 | 3 | 5598.4 | 8047.7 |
214 | 4 | 5073.55 | 8047.7 |
214 | 5 | 5248.5 | 8047.7 |
214 | 6 | 7487.86 | 8047.7 |
214 | 7 | 7382.89 | 8047.7 |
214 | 8 | 6543.13 | 8047.7 |
214 | 9 | 6788.06 | 8047.7 |
214 | 10 | 6858.04 | 8047.7 |
214 | 11 | 8607.54 | 8047.7 |
214 | 12 | 8047.7 | 8047.7 |
217 | 1 | 5353.47 | 7767.78 |
217 | 2 | 4268.78 | 7767.78 |
217 | 3 | 5773.35 | 7767.78 |
217 | 4 | 5738.36 | 7767.78 |
217 | 5 | 6158.24 | 7767.78 |
217 | 6 | 6998 | 7767.78 |
217 | 7 | 5563.41 | 7767.78 |
217 | 8 | 5913.31 | 7767.78 |
217 | 9 | 5913.31 | 7767.78 |
217 | 10 | 6823.05 | 7767.78 |
217 | 11 | 6683.09 | 7767.78 |
217 | 12 | 7767.78 | 7767.78 |
ตัวอย่างที่ 3 - การคํานวณวิชวล
การคํานวณวิชวลต่อไปนี้ DAX คิวรี:
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
ปรับปรุงตารางเพื่อให้มี สําหรับแต่ละเดือน:
- ยอดขายรวม
- ความแตกต่างกับเดือนแรกของปีที่เกี่ยวข้อง
- และความแตกต่างกับเดือนแรกของไตรมาสที่เกี่ยวข้อง
สกรีนช็อตด้านล่างแสดงเมทริกซ์วิชวลและนิพจน์การคํานวณวิชวลแรก:
การคํานวณวิชวล