FILTER

適用於:導出數據行計算數據表Measure視覺計算

傳回數據表,表示另一個數據表的子集 or 表達式。

語法

DAX
FILTER(<table>,<filter>)  

參數

術語 定義
table 要篩選的數據表。 數據表也可以是產生數據表的表達式。
filter 要針對數據表的每個數據列進行評估的布爾表達式。 例如,[Amount] > 0or[Region] = "France"

傳回 value

只包含篩選數據列的數據表。

言論

  • 您可以使用 FILTER 來減少您正在使用的數據表中的數據列數目,and 只使用計算中的特定數據。 FILTER not 獨立使用,但做為內嵌在其他需要數據表做為自變數之函式中的函式。

  • 如需使用 FILTER時的最佳做法,請參閱 避免使用 FILTER 作為 filter 自變數

在 DAX 中使用 COUNTROWS 而不是 COUNT

  • 在匯出數據行中使用 or 數據列層級安全性 (RLS) 規則時,支援此函式 not 用於 DirectQuery 模式。

下列範例會使用 filters 在美國銷售的 measure,建立美國以外的因特網銷售報告,and 然後依 calendaryearandproduct 類別分割。 若要建立此 measure,您可以使用 Sales Territory filter 數據表 Internet Sales USD,and 然後在 SUMX 函式中使用篩選的數據表。

在此範例中,表達式:

DAX
FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")

傳回屬於美國銷售領域之因特網銷售減去 all 數據列子集的數據表。 RELATED 函式是將 Internet Sales 數據表中的 Territory 索引鍵連結至 SalesTerritory 數據表中的 SalesTerritoryCountry。

下表示范 measure、NON USA 因特網銷售的概念證明,其公式如下的程式代碼一節中提供。 此數據表會比較 all 因特網銷售與非美國因特網銷售,以顯示 filter 表達式的運作方式,方法是從計算中排除美國銷售額。

若要重新建立此數據表,請將 SalesTerritoryCountry 欄位新增至 數據列卷標 or 數據透視表 區域。

表格 1. 比較美國與 all 其他地區的總銷售額

數據列標籤 因特網銷售 非美國因特網銷售
澳大利亞 $4,999,021.84 $4,999,021.84
加拿大 $1,343,109.10 $1,343,109.10
法國 $2,490,944.57 $2,490,944.57
德國 $2,775,195.60 $2,775,195.60
英國 $5,057,076.55 $5,057,076.55
美國 $9,389,479.79
總計 $26,054,827.45 $16,665,347.67

最後一個報表數據表會顯示當您使用 measure、NON USA Internet Sales 建立數據透視表時的結果。 將 [CalendarYear] 字段新增至數據透視表的 [列卷標] 區域,and 將字段 ProductCategoryName 新增至 數據行卷標 區域。

表 2. 依 product 類別比較非美國銷售額

數據列標籤 輔料 自行車 服裝 總計
2005 $1,526,481.95 $1,526,481.95
2006 $3,554,744.04 $3,554,744.04
2007 $156,480.18 $5,640,106.05 $70,142.77 $5,866,729.00
2008 $228,159.45 $5,386,558.19 $102,675.04 $5,717,392.68
總計 $384,639.63 $16,107,890.23 $172,817.81 $16,665,347.67
DAX
SUMX(FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")  
     ,'InternetSales_USD'[SalesAmount_USD])  

Filter 函式
ALL 函式
ALLEXCEPT 函式