こんにちは、今回はPowerAppsのFilter関数を使った複数条件の記述について紹介します。
(2023年11月時点での情報となります。)
結論として、複数条件の設定は可能ですが、ExcelOnlineに対してはできないことがわかりました。
実際に試して挙動を確認したいと思います。
Filter関数の記載方法について
まずはFilter関数の使い方を確認するため、公式ドキュメントを見てみましょう。
こちらには、以下のような構文で記述すると記載があります。
Filter(Table*, Formula1 [, *Formula2*, … ] )
- Table – 必須。 検索するテーブル。
- Formula(s) – 必須。 テーブルの各レコードが評価される数式。 関数は、結果が true のすべてのレコードを返します。 テーブル内の列を参照することができます。 複数の数式を指定した場合、すべての数式の結果は And 関数を使用して組み合わせられます。
第一引数にはフィルターをかけたいテーブルを指定、第二引数にはフィルター条件となる条件式を、第三引数以降は追加したい条件式を記載すれば良さそうですね。
こちらの記載を見る限り複数条件の設定は問題なさそうです。
以下で実際にPowerApps上でFilter関数を使った挙動を確認してみます。
使用するテーブルについて
今回使用するテーブルは、Tableauでおなじみスーパーサンプルストアのデータを使用します。
以下のような形のテーブルとなります。
まずは上記のデータをSharePointリスト上に取り込み、それをデータソースとして表示させてみようと思います。
PowerAppsで垂直ギャラリーを追加し、Itemには以下の式を記載します。
北海道で家具の売り上げのみにフィルタしたデータが表示されるはずですね。
Filter(
Filterテスト, //SharePointリスト名を指定
都道府県 = "北海道", //一つ目の条件
カテゴリ = "家具" //二つ目の条件
)
結果は以下の通り、問題なく表示されているように見えます。
ExcelOnlineのデータに対して実施
同様にExcelOnlineのデータに対して、Filter関数を実施してみます。
SharePointにExcelファイルをアップし、コネクタで接続を指定します。
式は同様に以下の通りです。
Filter(
スーパーストア, //ExcelOnlineのテーブル名を指定
都道府県 = "北海道", //第一引数
カテゴリ = "家具" //第二引数
)
すると、なぜか何も表示されません。
複数条件が悪さをしているのでしょうか?試しに条件式を一つにして結果を確認してみましょう。
Filter(
スーパーストア, //ExcelOnlineのテーブル名を指定
都道府県 = "北海道" //第一引数のみ
)
すると表示されました。(当たり前ですが、カテゴリは絞れていないので事務用品などの売り上げも表示されていますね。)
ドキュメントには記載がありませんが、どうやらExcelOnline上のデータには複数の条件を指定することはできないようです。
Excelをインポートするとどうなるか
ちなみに、PowerAppsのコネクタには「Excelからインポート」という項目もあります。(Excelファイルをアプリ上に埋め込むという形だと思います。)
こちらを利用して同様に条件式を指定してみると
無事に表示することに成功しました!
まとめ
PowerAppsに触れていると、公式ドキュメントでは記載されていない事象にも多く出会います。
PowerAppsは新しい機能も随時追加されているのでドキュメントが追い付いていないのだと思います。
今回の件も特にPowerApps上でエラーが表示されるわけではないので、うっかりするとデータ側に欠損があったりするのかなという勘違いを引き起こしかねないため、
開発時にはどのような挙動になるのか結果を確認しながら進める必要があるなと思います。
truestarではこのようにMicrosoftサービスを使った業務支援も行っております。
お困りごとがありましたらお気軽にお問い合わせください。