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> 運算式都必須是完整資料行名稱,且來自單一資料表。 - 預設為 <orderBy> 和 <partitionBy> 中所有資料行的 ALLSELECTED()。 |
軸 | (選擇性)視覺圖形中的軸。 僅適用於視覺計算,並取代 <關聯>。 |
orderBy | (選擇性) ORDERBY() 子句,其中包含定義每個分割區排序方式的運算式。 如果省略:必須明確指定 - <relation>。 - 預設會依 <relation> 中尚未在 <partitionBy> 中指定的每個資料行排序。 |
blanks | (選擇性) 列舉,會定義排序時如何處理空白值。 這個參數會保留供日後使用。 目前,唯一支援的值是 DEFAULT,其中數值的行為是空白值,會在零與負值之間排序。 字串的行為是空白值,會在所有字串之前排序,包括空字串。 |
partitionBy | (選擇性) PARTITIONBY() 子句包含定義如何分割 <relation> 的資料行。 如果省略,<relation> 會視為單一分割區。 |
matchBy | (選擇性) MATCHBY() 子句,其中包含定義如何比對資料及識別目前資料列的資料行。 |
reset | (選擇性)僅適用於視覺計算。 指出計算是否重設,以及視覺圖形數據行階層的哪個層級。 接受的值包括:NONE、LOWESTPARENT、HIGHESTPARENT 或整數。 行為取決於整數符號: - 如果零或省略,則計算不會重設。 相當於 NONE。 - 如果為正數,整數會識別從最高、與粒紋無關的數據行。 HIGHESTPARENT 相當於 1。 - 如果為負數,整數會識別從最低開始的數據行,相對於目前的粒紋。 LOWESTPARENT 相當於 -1。 |
傳回值
位於絕對位置的資料列。
備註
每個 <partitionBy> 和 <matchBy> 資料行都必須有對應的外部值,以下列行為來協助定義要操作的「目前分割區」:
- 如果只有一個對應的外部資料行,則會使用其值。
- 如果沒有對應的外部資料行:
- INDEX 會先將所有 <partitionBy> 和 <matchBy> 資料行判斷為沒有對應的外部資料行。
- 針對 INDEX 的父內容中這些資料行現有值的每個組合,都會評估 INDEX,並傳回資料列。
- INDEX 最終輸出是這些資料列的聯集。
- 如果有多個對應的外部資料行,則會傳回錯誤。
如果 <matchBy> 存在,則 INDEX 會嘗試使用 <matchBy> 和 <partitionBy> 資料行來識別資料列。
如果 <matchBy> 不存在,且 <orderBy> 和 <partitionBy> 中所指定的資料行無法唯一識別 <relation> 中的每個資料列:
- INDEX 會嘗試尋找唯一識別每個資料列所需的最少額外資料行數目。
- 如果能夠找到這類資料行,則 INDEX 會自動將這些新資料行附加至 <orderBy>,且每個分割區都會使用這組新的 OrderBy 資料行集來排序。
- 如果找不到這類資料行,就會傳回錯誤。
如果發生下列情況,就會傳回空白的資料表:
- PartitionBy 資料行的對應外部值不存在於 <relation> 內。
- <position> 值是指不存在於分割區內的位置。
如果在與 <relation> 相同資料表上定義的計算資料行內使用 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))
增強數據表,使其在每個月包含:
- 總銷售量;
- 與個別年份第一個月的差異;
- 和個別季度第一個月的差異。
下列螢幕快照顯示視覺化矩陣和第一個視覺計算表示式: