共用方式為


CROSSFILTER

適用於:計算結果列匯出數據表量值視覺計算

指定計算存在於兩個資料行間的關聯性時,所使用的交叉篩選方向。

語法

CROSSFILTER(<columnName1>, <columnName2>, <direction>)  

參數

詞彙 定義
columnName1 現有資料行的名稱,使用標準 DAX 語法的完整格式名稱,通常表示所用關聯性的多端;如果引數是以反向順序提供,則函式會先交換方向,再使用這些引數。 此引數不能是運算式。
columnName2 現有資料行的名稱,使用標準 DAX 語法的完整格式名稱,通常表示所用關聯性的一端或查閱端;如果引數是以反向順序提供,則函式會先交換方向,再使用這些引數。 此引數不能是運算式。
Direction 要使用的交叉篩選方向。 必須為下列其中一項:

- 沿此關聯性不會出現交叉篩選。

Both - 任一端的篩選條件相互篩選。

OneWay - 篩選一端或關聯性查閱端篩選另一端。 此選項不能與一對一關聯性搭配使用。 請勿在多對多關聯性上使用此選項,因為不清楚哪一端是查閱端;請改用 OneWay_LeftFiltersRight 或 OneWay_RightFiltersLeft。

OneWay_LeftFiltersRight - 篩選 <columnName1> 篩選 <columnName2>。 此選項不能與一對一或多對一關聯性搭配使用。

OneWay_RightFiltersLeft - 篩選 <columnName2> 篩選 <columnName1>。 此選項不能與一對一或多對一關聯性搭配使用。

傳回值

此函式不會傳回任何值,只會設定查詢期間所指定關聯性的交叉篩選方向。

備註

  • 在 1:1 的關聯性中,單向和雙向沒有差異。

  • CROSSFILTER 只能在採用篩選作為引數的函式中使用,例如:CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENBALANCEMONTH、OPENBALANCEQUARTER、OPENBALANCEYEAR、TOTALMTD、TOTALQTD 和 TOTALYTD 函式。

  • CROSSFILTER 會使用模型現有的關聯性,依其終點資料行識別關聯性。

  • 在 CROSSFILTER 中,關聯性的交叉篩選設定並不重要;亦即模型關聯性無論設定單向或雙向篩選,都不影響函式的使用方式。 CROSSFILTER 會覆寫所有的現有交叉篩選設定。

  • 如有任何資料行命名為不屬於關聯性的引數,或屬於其他關聯性的引數,則會傳回錯誤。

  • 如果 CALCULATE 運算式為巢狀,且有多個 CALCULATE 運算式包含 CROSSFILTER 函式,則發生衝突或模擬兩可的情況時,以最內層的 CROSSFILTER 為優先。

  • 在計算結果欄或資料列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。

範例

在下列模型圖中,DimProduct 以及 DimDate 兩者皆與 FactInternetSales 為單向關聯性。

CROSSFILTER_Examp_DiagView

根據預設,我們無法取得按年銷售的產品計數:

CROSSFILTER_Examp_PivotTable1

有兩種方式可以取得按年排列的產品計數:

  • 開啟關聯性的雙向交叉篩選。 這會變更篩選條件對這兩份資料表間所有資料的處理方式。

  • 針對此量值,使用 CROSSFILTER 函式變更關聯性處理的方式。

使用 DAX 時,我們可以使用 CROSSFILTER 函式變更關聯性所定義之兩個資料行間的交叉篩選方向行為。 在本例中,DAX 運算式看起來像這樣:

BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))

藉由在量值運算式中使用 CROSSFILTER 函式,可以得到預期的結果:

CROSSFILTER_Examp_PivotTable2