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 函式變更關聯性處理的方式。
使用 DAX 時,我們可以使用 CROSSFILTER 函式變更關聯性所定義之兩個資料行間的交叉篩選方向行為。 在本例中,DAX 運算式看起來像這樣:
BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))
藉由在量值運算式中使用 CROSSFILTER 函式,可以得到預期的結果:
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應