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))

增強數據表,使其在每個月包含:
- 總銷售量;
- 與個別年份第一個月的差異;
- 和個別季度第一個月的差異。

下列螢幕快照顯示視覺化矩陣和第一個視覺計算表示式:

DAX 視覺計算

OFFSET
ORDERBY
PARTITIONBY
WINDOW
RANK
ROWNUMBER