FILTER
別のテーブルまたは式のサブセットを表すテーブルを返します。
構文
FILTER(<table>,<filter>)
パラメーター
用語 | 定義 |
---|---|
テーブル | フィルター処理されるテーブル。 テーブルには、テーブルを生成する式を指定することもできます。 |
filter | テーブルの行ごとに評価されるブール式。 たとえば、[Amount] > 0 や [Region] = "France" です |
戻り値
フィルター処理された行のみを含むテーブル。
解説
FILTER を使用して、使用しているテーブル内の行数を減らし、計算で特定のデータのみを使用することができます。 FILTER は独立して使用するのではなく、引数としてテーブルを必要とする他の関数に埋め込む関数として使用します。
FILTER を使用する場合のベスト プラクティスについては、「フィルター引数として FILTER を使用しない」を参照してください。
DAX で COUNT の代わりに COUNTROWS を使用する
- この関数は、計算列または行レベルのセキュリティ (RLS) ルールで使用される場合、DirectQuery モードでの使用はサポートされません。
例
次の例では、米国内の売上をフィルターで除外するメジャーを使用し、暦年と製品カテゴリ別にスライスすることで、米国以外のインターネット販売のレポートを作成します。 このメジャーを作成するには、販売区域を使用してインターネット販売 USD テーブルをフィルター処理してから、フィルター処理されたテーブルを SUMX 関数で使用します。
この例では、式
FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")
は、米国の販売区域に属するすべての行を差し引き、インターネット販売のサブセットであるテーブルを返します。 RELATED 関数は、インターネット販売テーブルの区域キーを SalesTerritory テーブルの SalesTerritoryCountry にリンクします。
次の表は、メジャー (米国以外のインターネット販売) の概念実証を示しています。この式は、後述のコード セクションに示します。 この表は、計算から米国販売を除外することで、すべてのインターネット販売と米国以外のインターネット販売を比較して、フィルター式が機能することを示しています。
このテーブルを再作成するには、レポートまたはピボットテーブルの行ラベル領域に SalesTerritoryCountry フィールドを追加します。
表 1 米国と他のすべてのリージョンの売上合計比較
行ラベル | Internet Sales | 米国以外のインターネット販売 |
---|---|---|
オーストラリア | $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 |
最終のレポート テーブルは、メジャー (米国以外のインターネット販売) を使用してピボットテーブルを作成した場合の結果を示しています。 ピボットテーブルの行ラベル領域に CalendarYear フィールドを追加し、列ラベル領域に ProductCategoryName フィールドを追加します。
表 2 米国以外の製品カテゴリ別販売比較
行ラベル | アクセサリ | Bikes | 衣服 | 総計 |
---|---|---|---|---|
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 |
SUMX(FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")
,'InternetSales_USD'[SalesAmount_USD])