FILTER関数

パワーピボット 基本

FILTER関数は、指定された値でフィルターをかけます。
Excelの表で使用するフィルターと、動きのイメージは同じです。

一点だけ注意するのは、FILTER関数はテーブルを返すということです。

テーブルを返すFILTER関数

次のようなデータがあったとします。

COUNT関数を使えば、行数をカウントして「4」という値を返します。

また、SUM関数で販売個数を合計すると「100」という値を返します。

しかし、フィルター関数で「P0001」にフィルターをかけても、値としては返せません。

では、何を返すかというと、下図のテーブルを返します。

ですので、FILTER関数だけでメジャーを作成することはできません。

SUMX関数やCALCULATE関数などと組み合わせて使用します。

SUMX関数で使用する

SUMX関数の中で、FILTER関数を使用してみます。

P0001の売上 :=
SUMX( FILTER('販売テーブル',[商品コード]="P0001") , [単価]*[販売個数] )

FILTER関数により、「商品コード = P0001」のテーブルが返されるのは先述のとおりです。

さらに、SUMX関数が行ごとに売上を計算し、それらを合計して、「133,000」という値を返します。

CALCULATE関数で使用する

CALCULATE関数で販売個数を合計したい場合は、以下のようなDAX式を作成します。

販売個数合計:=
CALCULATE( SUM([販売個数]) , FILTER('販売テーブル',[商品コード]="P0001") )

FILTER関数で商品コード「P0001」に条件を絞り、SUM関数で販売個数を合計します。

参考

実は、CALCULATE関数においては、次のようにFILTER関数を省略することもできます。

販売個数合計 := CALCULATE( SUM([販売個数]) , '販売テーブル'[商品コード]="P0001" )

これは、CALCULATE関数における特別ルールのようなものです。

書籍等では、こちらの書き方のほうが一般的なので「FILTER関数が省略されているんだな」と片隅にいれておけばよいです。

フィルターの条件指定

フィルターの条件指定には、次のような関数を使用します。

=〜と等しい
<>〜と等しくない
IN〜のいずれかと一致する
SEARCH〜(文字列)が含まれる
>= <=〜(数値)以上 以下

これらにAND条件や、OR条件、NOTなどを組み合わせることでさらに複雑な条件を指定することができます。

コメント