ดัชนี
นําไปใช้กับ: การคํานวณคอลัมน์จากการคํานวณ ตารางจากการคํานวณ หน่วยวัดภาพการคํานวณ
แสดงแถวที่ตําแหน่งสัมบูรณ์ที่ระบุโดยพารามิเตอร์ตําแหน่งภายในพาร์ติชันที่ระบุ โดยเรียงลําดับตามลําดับที่ระบุ ถ้าไม่สามารถหาพาร์ติชันปัจจุบันให้กับพาร์ติชันเดียวได้ อาจส่งกลับหลายแถว
ไวยากรณ์
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
พารามิเตอร์
เงื่อนไข | คำนิยาม |
---|---|
ฐานะ | ตําแหน่งสัมบูรณ์ (ตาม 1) ที่จะได้รับข้อมูล: - <ตําแหน่ง> เป็นบวก: 1 คือแถวแรก 2 คือแถวที่สอง ฯลฯ - <ตําแหน่ง> เป็นลบ: -1 คือแถวสุดท้าย -2 คือแถวสุดท้าย เป็นต้น เมื่อ <ตําแหน่ง> อยู่นอกขอบเขตหรือศูนย์ หรือ BLANK() INDEX จะส่งกลับตารางว่าง ซึ่งอาจเป็นนิพจน์ DAX ใด ๆ ที่แสดงค่าสเกลา |
ความสัมพันธ์ | (ไม่บังคับ) นิพจน์ตารางที่ผลลัพธ์ถูกส่งกลับ ถ้าระบุคอลัมน์ทั้งหมดใน <partitionBy> ต้องมาจากตารางหรือตารางที่เกี่ยวข้อง ถ้าเว้นไว้: - <orderBy> ต้องระบุอย่างชัดเจน - นิพจน์ orderBy และ <partitionBy>> ทั้งหมด<ต้องเป็นชื่อคอลัมน์ที่มีคุณสมบัติครบถ้วนและมาจากตารางเดียว - ค่าเริ่มต้นเป็น ALLSELECTED() ของคอลัมน์<ทั้งหมดใน orderBy> และ <partitionBy> |
แกน | (ไม่บังคับ) แกนในรูปร่างวิชวล พร้อมใช้งานในการคํานวณวิชวลเท่านั้น และแทนที่<ความสัมพันธ์> |
orderBy | (ไม่บังคับ) คําสั่ง ORDERBY() ที่มีนิพจน์ที่กําหนดวิธีการเรียงลําดับแต่ละพาร์ติชัน ถ้าเว้นไว้: - <ต้องระบุความสัมพันธ์> อย่างชัดเจน - ค่าเริ่มต้นในการเรียงลําดับตามทุกคอลัมน์ที่สัมพันธ์กับ<>ไม่ได้ระบุไว้ใน <partitionBy> |
ช่อง ว่าง | (ไม่บังคับ) ค่าจาระเลี่ยงที่กําหนดวิธีการจัดการค่าว่างเมื่อเรียงลําดับ พารามิเตอร์นี้สงวนไว้สําหรับการใช้งานในอนาคต ในปัจจุบัน ค่าที่สนับสนุนเท่านั้นเป็นค่าเริ่มต้น ซึ่งลักษณะการทํางานสําหรับค่าตัวเลขจะเป็นค่าว่างที่เรียงลําดับระหว่างค่าศูนย์และค่าลบ ลักษณะการทํางานสําหรับสตริงเป็นค่าว่างจะถูกเรียงลําดับก่อนสตริงทั้งหมด รวมถึงสตริงที่ว่างเปล่า |
partitionBy | (ไม่บังคับ) คําสั่ง PARTITIONBY() ที่มีคอลัมน์ที่กําหนดวิธีการ<แบ่งพาร์ติชันความสัมพันธ์> ถ้ามีการเว้นไว้ <ความสัมพันธ์> จะถือว่าเป็นพาร์ติชันเดียว |
matchBy | (ไม่บังคับ) ส่วนคําสั่ง MATCHBY() ที่มีคอลัมน์ที่กําหนดวิธีการจับคู่ข้อมูลและระบุแถวปัจจุบัน |
รี เซ็ต | (ไม่บังคับ) พร้อมใช้งานในการคํานวณวิชวลเท่านั้น ระบุว่าการคํานวณรีเซ็ตหรือไม่ และระดับใดของลําดับชั้นคอลัมน์ของรูปร่างวิชวล ค่าที่ยอมรับคือ: NONE, LOWESTPARENT, HIGHESTPARENT หรือจํานวนเต็ม ลักษณะการทํางานจะขึ้นอยู่กับเครื่องหมายจํานวนเต็ม: - ถ้าเป็นศูนย์หรือเว้นไว้ การคํานวณจะไม่รีเซ็ต เทียบเท่ากับ NONE - ถ้าเป็นค่าบวก จํานวนเต็มจะระบุคอลัมน์ที่เริ่มต้นจากสูงสุด เป็นอิสระจากเกรน HIGHESTPARENT เทียบเท่ากับ 1 - ถ้าเป็นค่าลบ จํานวนเต็มจะระบุคอลัมน์โดยเริ่มต้นจากต่ําสุด ซึ่งสัมพันธ์กับเกรนปัจจุบัน LOWESTPARENT เทียบเท่ากับ -1 |
ค่าที่ส่งกลับ
แถวที่ตําแหน่งสัมบูรณ์
หมายเหตุ
แต่ละ <พาร์ติชันโดย> และ <คอลัมน์ matchBy> ต้องมีค่าภายนอกที่สอดคล้องกันเพื่อช่วยกําหนด "พาร์ติชันปัจจุบัน" ที่จะทํางาน โดยมีลักษณะการทํางานต่อไปนี้:
- ถ้ามีหนึ่งคอลัมน์ภายนอกที่สอดคล้องกัน ค่านั้นจะถูกใช้
- ถ้าไม่มีคอลัมน์ภายนอกที่สอดคล้องกัน:
- INDEX จะกําหนดพาร์ติชันทั้งหมด <โดย> และ <คอลัมน์ matchBy> ที่ไม่มีคอลัมน์ภายนอกที่สอดคล้องกันก่อน
- สําหรับการรวมค่าที่มีอยู่สําหรับคอลัมน์เหล่านี้ในบริบทหลักของ INDEX INDEX จะมีการประเมิน INDEX และแถวจะถูกส่งกลับ
- ผลลัพธ์สุดท้ายของ INDEX คือการรวมแถวเหล่านี้
- ถ้ามีคอลัมน์ภายนอกที่สอดคล้องกันมากกว่าหนึ่งคอลัมน์ ข้อผิดพลาดจะถูกส่งกลับ
ถ้ามี <matchBy> ปรากฏ INDEX จะพยายามใช้ <คอลัมน์ matchBy> และ <partitionBy> เพื่อระบุแถว
หาก <matchBy> ไม่ปรากฏ และคอลัมน์ที่ระบุภายใน <orderBy> และ <partitionBy> ไม่สามารถระบุทุกแถวที่สัมพันธ์กับ<:>
- INDEX จะพยายามค้นหาจํานวนคอลัมน์เพิ่มเติมน้อยที่สุดที่จําเป็นในการระบุเฉพาะทุกแถว
- ถ้าสามารถพบได้คอลัมน์ดังกล่าว INDEX จะผนวกคอลัมน์ใหม่เหล่านี้เข้ากับ <orderBy> โดยอัตโนมัติ และแต่ละพาร์ติชันจะถูกเรียงลําดับโดยใช้ชุดคอลัมน์ OrderBy ใหม่นี้
- ถ้าไม่พบคอลัมน์ดังกล่าว ข้อผิดพลาดจะถูกส่งกลับ
ตารางเปล่าจะถูกส่งกลับถ้า:
- ไม่มีค่าภายนอกที่สอดคล้องกันของคอลัมน์ PartitionBy อยู่ภายใน<ความสัมพันธ์>
- ค่า <ตําแหน่ง> อ้างอิงถึงตําแหน่งที่ไม่มีอยู่ภายในพาร์ติชัน
ถ้ามีการใช้ INDEX ภายในคอลัมน์จากการคํานวณที่กําหนดไว้ในตารางเดียวกันเป็น <ความสัมพันธ์> และ <orderBy> ถูกเว้นไว้ ข้อผิดพลาดจะถูกส่งกลับ
<Reset> สามารถใช้ในการคํานวณวิชวลเท่านั้น และไม่สามารถใช้ร่วมกับ <orderBy> หรือ <partitionBy> ได้ ถ้า <รีเซ็ต> ปรากฏ <อยู่ สามารถระบุแกน> ได้ แต่ <ไม่สามารถระบุความสัมพันธ์> ได้
ตัวอย่างที่ 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))
ปรับปรุงตารางเพื่อให้ประกอบด้วย สําหรับแต่ละเดือน:
- ยอดขาย
รวม - ผลต่างไปยังเดือนแรกของปี
ที่เกี่ยวข้อง และความแตกต่างของเดือนแรกของไตรมาสที่เกี่ยวข้อง
สกรีนช็อตด้านล่างแสดงเมทริกซ์วิชวลและนิพจน์การคํานวณวิชวลแรก: