閱讀英文

共用方式為


CROSSFILTER

適用於:匯出數據行計算數據表量值視覺計算

指定要用於計算兩個數據行之間關聯性的交叉篩選方向。

語法

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

參數

術語 定義
columnName1 現有數據行的名稱,使用標準 DAX 語法和完整,通常代表要使用的關聯性多端:如果以反向順序提供自變數,函式會先交換這些自變數,再使用它們。 這個自變數不可以是表達式。
columnName2 現有數據行的名稱,使用標準 DAX 語法和完整,通常代表要使用的關聯性的一端或查閱端;如果以反向順序提供自變數,函式會先交換這些自變數,再使用它們。 這個自變數不可以是表達式。
Direction 要使用的交叉篩選方向。 必須是下列其中一項:

None - 此關聯性不會發生交叉篩選。

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 運算式看起來像這樣:

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

藉由在量值表達式中使用 CROSSFILTER 函式,我們會取得預期的結果:

CROSSFILTER_Examp_PivotTable2