OFFSET
根據指定的 or,傳回位於 目前數據列 位於相同數據表內之 offset 之前的單一數據列。 If 目前數據列無法推斷為單一數據列,可能會傳回多個數據列。
語法
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
參數
術語 | 定義 |
---|---|
delta |
之前的數據列數(負 value)or 后(正 value),這是要從中取得數據的目前數據列。 它可以是傳回純量 DAX的任何 value 表達式。 |
relation |
(選擇性)傳回輸出數據列的數據表運算式。
If 指定,all partitionBy 數據行必須來自 orrelated 數據表。
If 省略:必須明確指定 - orderBy 。- All orderBy andpartitionBy 表示式必須是來自單一數據表的完整數據行名稱 and。
- 預設為 ALLSELECTEDall orderBy 中 and 資料列的 partitionBy () 。 |
axis |
(選擇性)視覺圖形中的軸。 只能在視覺計算中使用,and 會取代 relation 。 |
orderBy |
(選擇性)ORDERBY() 子句,其中包含 define 每個分割區排序方式的表達式。
If 省略:必須明確指定 - relation 。
- 預設會依已在 relation 中指定之 notpartitionBy 中的每個數據行排序。 |
blanks |
(選擇性)列舉,定義排序時如何處理 blankvalues。
此參數保留供日後使用。 目前,唯一支援的 value 是 DEFAULT ,其中數值 values 的行為 blankvalues 會以零 and 負 values排序。 字串的行為 blankvalues 在 all 字串之前排序,包括空字串。 |
partitionBy |
(選擇性)PARTITIONBY() 子句,其中包含數據行,define 分割 relation 的方式。
If 省略, relation 會視為單一分割區。 |
matchBy |
(選擇性)MATCHBY() 子句,其中包含 define 如何比對數據 and 識別目前數據列的數據行。 |
reset |
(選擇性)僅適用於視覺計算。 指出 if 計算重設,and 視覺效果圖形的數據行階層層級。 接受的 values 為:NONE 、LOWESTPARENT 、HIGHESTPARENT 、or 整數。 行為取決於整數 sign:- If 省略零 or,計算會 not 重設。 相當於 NONE 。
- If 正數,整數會識別從最高、與粒紋無關的數據行。 HIGHESTPARENT 相當於1。
- If 負數,整數會識別從最低開始的數據行,相對於目前的粒紋。 LOWESTPARENT 相當於 -1。 |
傳回 value
一 or 來自 relation
的更多數據列。
言論
Except
DAX 數據表函式所加入的數據行,relation
中的每個數據行,當 matchBy
not 存在時,ormatchBy
andpartitionBy
中的每個數據行,當 matchBy
存在時,必須有對應的外部 value,以協助 define 要操作的目前數據列,並具有下列行為:
- If 只有一個對應的外部數據行,則會使用其 value。
-
If 沒有對應的外部數據行,然後:
- OFFSET 會 first 判斷沒有對應外部數據行的 all 數據行。
- 針對 values父內容中這些數據行之現有 OFFSET 的每個組合,都會在傳回數據列 OFFSET 評估 and。
- OFFSET的最終輸出是這些數據列的 union。
- If 有多個對應的外部數據行,則會傳回 error。
If 數據表函式會新增 all數據行的 relation
DAX,則會傳回 error。
If
matchBy
存在,OFFSET 會嘗試使用 matchBy
andpartitionBy
數據行來識別數據列。
If
matchBy
not
and
orderBy
and
partitionBy
中指定的數據行無法唯一識別 relation
中的每個數據列,然後:
- OFFSET 會嘗試 find 唯一識別每個數據列所需的最少額外數據行數目。
-
If 可以找到這類數據行,OFFSET 會自動將這些新數據行附加至
orderBy
,and 每個分割區都會使用此新的一組 OrderBy 數據行進行排序。 - If 找不到這類數據行,則會傳回 error。
if傳回空資料表:
-
value
OrderBy
or 數據行的對應外部 PartitionBynot 存在於
relation
內。 -
delta
value 會導致數據分割記憶體在 not 的數據列。
If
OFFSET 用於與 relation
相同數據表上定義的匯出數據行內,andorderBy
省略,則會傳回 error。
reset
只能用於視覺計算,and 不能與 orderBy
orpartitionBy
搭配使用。
If
reset
存在,可以指定 axis
,但無法指定 relation
。
範例 1 - 計算結果列
下列 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 查詢:
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]
)
在 OFFSET 中使用 measure() 傳回數據表,其中摘要說明每個 calendaryearandpreviousyear總銷售額的總銷售額。
範例 3 - 計算結果列
下列 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 查詢:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
傳回相同 month內每個 andpreviousyear 總銷售額的差異。
下列螢幕快照顯示視覺化矩陣 and 視覺化計算表示式: