OFFSET

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

根據指定的 offset,傳回位於 目前數據列 位於相同數據表內之 or 之前的單一數據列。 If 目前數據列無法推斷為單一數據列,可能會傳回多個數據列。

語法

DAX
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

參數

術語 定義
delta 之前的數據列數(負 value)or 后(正 value),這是要從中取得數據的目前數據列。 它可以是傳回純量 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

一 or 來自 relation的更多數據列。

言論

Except DAX 數據表函式所加入的數據行,relation中的每個數據行,當 matchBynot 存在時,ormatchByandpartitionBy中的每個數據行,當 matchBy 存在時,必須有對應的外部 value,以協助 define 要操作的目前數據列,並具有下列行為:

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

DAX 數據表函式會新增 relation數據行的 Ifall,則會傳回 error。

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

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

if傳回空資料表:

  • OrderBy or PartitionBy 數據行的對應外部 valuenot 存在於 relation內。
  • delta value 會導致數據分割記憶體在 not 的數據列。

If OFFSET 用於與 relation相同數據表上定義的匯出數據行內,andorderBy 省略,則會傳回 error。

reset 只能用於視覺計算,and 不能與 orderByorpartitionBy搭配使用。 If reset 存在,可以指定 axis,但無法指定 relation

範例 1 - 計算結果列

下列 DAX 查詢:

DAX
DEFINE
VAR vRelation = SUMMARIZECOLUMNS ( 
                    DimProductCategory[EnglishProductCategoryName], 
                    DimDate[CalendarYear], 
                    "CurrentYearSales", SUM(FactInternetSales[SalesAmount]) 
                  )
EVALUATE
ADDCOLUMNS (
    vRelation, 
    "PreviousYearSales", 
    SELECTCOLUMNS(
        OFFSET ( 
                -1, 
                vRelation, 
                ORDERBY([CalendarYear]), 
                PARTITIONBY([EnglishProductCategoryName])
        ),
        [CurrentYearSales]
    )
)

傳回數據表,摘要說明每個 product 類別 andcalendaryear的總銷售額,以及 previousyear中該類別的總銷售額。

範例 2 - measure

下列 DAX 查詢:

DAX
DEFINE
MEASURE DimProduct[CurrentYearSales] = SUM(FactInternetSales[SalesAmount])
MEASURE DimProduct[PreviousYearSales] = CALCULATE(SUM(FactInternetSales[SalesAmount]), OFFSET(-1, , ORDERBY(DimDate[CalendarYear])))
EVALUATE
SUMMARIZECOLUMNS (
    DimDate[CalendarYear],
    "CurrentYearSales", DimProduct[CurrentYearSales],
    "PreviousYearSales", DimProduct[PreviousYearSales]
)

在 measure 中使用 OFFSET() 傳回數據表,其中摘要說明每個 calendaryearandpreviousyear總銷售額的總銷售額。

範例 3 - 計算結果列

下列 DAX 查詢:

DAX
EVALUATE
ADDCOLUMNS (
    FactInternetSales,
    "Previous Sales Amount",
        SELECTCOLUMNS (
            OFFSET (
                -1,
                FactInternetSales,
                ORDERBY ( FactInternetSales[SalesAmount], DESC ),
                PARTITIONBY ( FactInternetSales[ProductKey] ),
                MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
            ),
            FactInternetSales[SalesAmount]
        )
)

會傳回 FactInternetSales 數據表,並新增一個數據行,指出每個銷售、其銷售 previous 銷售金額、相同 product的下階銷售量,而目前的銷售會由 SalesOrderNumber and SalesOrderLineNumber 來識別。 如果沒有 MATCHBY,查詢會傳回 error,因為 FactInternetSales 數據表中沒有索引鍵數據行。

範例 4 - 視覺計算

下列視覺計算 DAX 查詢:

DAX
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))

傳回相同 year內每個 monthandprevious 總銷售額的差異。

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

DAX 視覺計算

INDEX
ORDERBY
PARTITIONBY
MATCHBY
WINDOW
RANK
ROWNUMBER