CROSSFILTER
指定要用於計算兩個數據行之間關聯性的交叉篩選方向。
語法
CROSSFILTER(<columnName1>, <columnName2>, <direction>)
參數
術語 | 定義 |
---|---|
columnName1 |
現有數據行的名稱,使用標準 DAX 語法 and 完整,通常代表要使用的關聯性多端:if 會以反向順序提供自變數,函式會先交換這些自變數,再加以使用。 這個自變數不可以是表達式。 |
columnName2 |
現有數據行的名稱,使用標準 DAX 語法 and 完整,通常代表要使用的關聯性的一端 or 查閱端:if 會以反向順序提供自變數,函式會在使用這些自變數之前交換它們。 這個自變數不可以是表達式。 |
Direction |
要使用的交叉filter 方向。 必須是下列其中一項:None - 此關聯性不會發生交叉篩選。Both - Filtersfilters 另一端。OneWay - Filters 一端 or 另一端 filter 關聯性的查閱端。 此選項不能與一對一關聯性搭配使用。 請勿在多對多關聯性上使用此選項,因為不清楚哪一端是查閱端;請改用 OneWay_LeftFiltersRight or OneWay_RightFiltersLeft。OneWay_LeftFiltersRight - columnName1 filtercolumnName2 側邊 Filters。 此選項不能與一對一 or 多對一關聯性搭配使用。OneWay_RightFiltersLeft - columnName2 filtercolumnName1 側邊 Filters。 此選項不能與一對一 or 多對一關聯性搭配使用。 |
傳回 value
函式不會傳回 value;函式只會針對查詢的 duration,設定所指示關聯性的交叉篩選方向。
言論
在 1:1 關聯性的情況下,兩個方向 and 之間沒有任何差異。
CROSSFILTER 只能在採用 filter 做為自變數的函式中使用,例如:CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENINGBALANCEMONTH、OPENINGBALANCEQUARTER、OPENINGBALANCEYEAR、TOTALMTD、TOTALQTDandTOTALYTD 函式。
CROSSFILTER 會使用模型中的現有關聯性,依其結束點數據行識別關聯性。
在 CROSSFILTER中,關聯性的交叉篩選設定 not 重要:也就是說,關聯性是否設定為 filter 一個,or 模型中的兩個方向都會 not 影響函式的使用方式。 CROSSFILTER 會覆寫任何現有的交叉篩選設定。
傳回 errorif 任何名為 自變數的數據行 not 自變數屬於不同關聯性 or 關聯性的一部分。
If CALCULATE 表達式是巢狀的,and 多個 CALCULATE 表示式 containsCROSSFILTER 函式,則最內層 CROSSFILTER 是衝突 or 模棱兩可的情況下占上風的表達式。
在匯出數據行中使用 or 數據列層級安全性 (RLS) 規則時,支援此函式 not 用於 DirectQuery 模式。
例
在下列模型圖表中,DimProduct and DimDate 與 FactInternetSales 有單一方向關聯性。
根據預設,我們無法取得 year所銷售的產品 Count:
有兩種方式可透過 year取得產品的 count:
開啟關聯性的雙向交叉篩選。 這會變更這兩個數據表之間 all 數據 filters 的運作方式。
使用 CROSSFILTER 函式來變更此 measure的關聯性運作方式。
使用 DAX時,我們可以使用 CROSSFILTER 函式來變更關聯性所定義之兩個數據行之間的交叉filter 方向。 在此情況下,DAX 表達式看起來像這樣:
BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))
藉由在 measure 表示式中使用 CROSSFILTER 函式,我們會取得預期的結果: