INDEX

適用於:導出數據行計算數據表Measure視覺計算

傳回絕對位置的數據列,由 position 參數指定,在指定的數據分割內,依指定的順序排序。 If 目前的分割區無法推斷為單一數據分割,可能會傳回多個數據列。

語法

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

參數

術語 定義
position 要從中取得數據的絕對位置(1-based):
- position 為正數:1 是 first 列、2 是 second 列等。
- position 為負數:-1 為 last 列,-2 為 secondlast 列等。
position 脫離界限時,or 零,orBLANK(), INDEX 會傳回空的數據表。 它可以是傳回純量 value的任何 DAX 表達式。
relation (選擇性)傳回輸出的數據表運算式。
If 指定,partitionByall 數據行必須來自 orrelated 數據表。
If 省略:必須明確指定
- orderBy
- AllorderByandpartitionBy 表示式必須是完整數據行名稱,and 來自單一數據表。
- 預設為 orderByandpartitionBy中 all 數據行的 ALLSELECTED()
axis (選擇性)視覺圖形中的軸。 只能在視覺計算中使用,and 會取代 relation
orderBy (選擇性)ORDERBY() 子句,其中包含 define 每個分割區排序方式的表達式。
If 省略:必須明確指定
- relation
- 預設會依已在 partitionBy中指定之 notrelation 中的每個數據行排序。
blanks (選擇性)列舉,定義排序時如何處理 blankvalues。
此參數保留供日後使用。
目前,唯一支援的 value 是 DEFAULT,其中數值 values 的行為 blankvalues 會以零 and 負 values排序。 字串的行為 blankvalues 在 all 字串之前排序,包括空字串。
partitionBy (選擇性)PARTITIONBY() 子句,其中包含 define 如何分割 relation 的數據行。
If 省略,relation 會視為單一分割區。
matchBy (選擇性)MATCHBY() 子句,其中包含 define 如何比對數據 and 識別目前數據列的數據行。
reset (選擇性)僅適用於視覺計算。 指出 if 計算重設,and 視覺效果圖形的數據行階層層級。 接受的 values 為:NONELOWESTPARENTHIGHESTPARENT、or 整數。 行為取決於整數 sign:
- If 省略零 or,計算會 not 重設。 相當於 NONE
- If 正數,整數會識別從最高、與粒紋無關的數據行。 HIGHESTPARENT 相當於1。
- If 負數,整數會識別從最低開始的數據行,相對於目前的粒紋。 LOWESTPARENT 相當於 -1。

傳回 value

位於絕對位置的數據列。

言論

每個 partitionByandmatchBy 數據行都必須有對應的外部 value,以下列行為協助 define 要運作的「目前分割區」:

  • If 只有一個對應的外部數據行,則會使用其 value。
  • If 沒有對應的外部資料列:
    • INDEX 會 first 判斷沒有對應外部數據行的 allpartitionByandmatchBy 數據行。
    • 針對 INDEX父內容中這些數據行之現有 values 的每個組合,都會在傳回數據列 and 評估 INDEX。
    • INDEX的最終輸出是這些數據列的 union。
  • If 有多個對應的外部數據行,則會傳回 error。

If matchBy 存在,INDEX 會嘗試使用 matchByandpartitionBy 數據行來識別數據列。 If matchBy not and orderBy and partitionBy 中指定的數據行無法唯一識別 relation中的每個資料列:

  • INDEX 會嘗試 find 唯一識別每個數據列所需的最少額外數據行數目。
  • If 可以找到這類數據行,INDEX 會自動將這些新數據行附加至 orderBy,and 每個分割區都會使用此新的一組 OrderBy 數據行進行排序。
  • If 找不到這類數據行,則會傳回 error。

if傳回空資料表:

  • PartitionBy 數據行的對應外部 value,not 存在於 relation內。
  • position value 是指 not 存在於數據分割內的位置。

If INDEX 是在與 relationandorderBy 相同的數據表上定義的匯出數據行內使用,則會傳回 error。

reset 只能用於視覺計算,and 不能與 orderByorpartitionBy搭配使用。 If 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))

增強數據表,使其 contains,每個 month:
- 總銷售額;
- 個別 year之 firstmonth 的差異;
- and 個別 quarterfirstmonth 的差異。

下列螢幕快照顯示可視化矩陣 andfirst 視覺計算表示式:

DAX 視覺計算

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER