SharePoint 2013 リストビューでの複雑なフィルター条件設定
SharePoint(含 SharePoint Online) のビューでは、AND/OR で複数の表示条件(フィルター)を設定して、必要な情報だけに絞込むことができます。しかし、条件の評価順位が指定できないため、なかなか思うような結果が得られないことも。ここではいくつかの設定パターンを挙げ、SharePoint のビューがどのような結果を返すかを試してみました。
なお、このエントリは Office 365 Advent Calendar の一環として投稿しています。
リストに A/B/C/D の四つの列を設定し、ビューにはこの列に応じた各種のフィルター条件を指定してみます。
単純化のため、条件はすべて「次の値に等しい、1」です。まあ、結局は設定した条件が True か False か次第なので、このエントリにはあまり関係ありません。
1.A and B or C
これは判り易いパターン。
(A and B) or ( C )、つまり「AかつB、またはCである」と評価されます。
2.A or B and C
or の位置を変更してみました。すると上とは異なり、 (A and C) or (B and C) つまり「AかつC、またはBかつC」と評価されます。
3.A and B or C and D
and の間に or を入れるとどうなるのか。この場合、まず(1)と同じ評価が行われた後、さらに and D という扱いになります。 ((A and B) or (C)) and (D)、つまり「ABD または CD」です。
4.A or B and C and D
or 位置を変更してみました。これもまず(2)と同じ評価が行われた後、更に and D です。(A and C and D) or (B and C and D)、つまり「ACD または BCD」になります。
5.A and B and C or D
or の位置を最後に持ってきました。この場合は非常にシンプルで、素直に上から (A and B and C) or D、つまり「ABC または D」という評価です。
6.A or B or C and D
今度は or が二つです。一見ややこしいですが、そろそろパターンが見えてきたのではないでしょうか。これは (A or B or C) and D です。きちんと分解すると (A and D) or (B and D) or (C and D)、つまり「AD または BD または CD」になります。
7.A and B or C or D
同じく、こちらも (A and B or C) or (D) と評価されます。((A and B) or ( C )) or (D) 、つまり「AかつB、またはCである、あるいはDである」になりますので、大半に合致します。
8.A or B and C or D
基本的な考え方は同じ。(A or B and C) or (D) になります。(2)の評価が行われた後に or D です。((A and C) or (B and C)) or D、つまり「AC または BC または D」ですね。
9.A or B and C or D and E
最後に、新たに列を追加して、5番目の条件 E を加えてみます。やはりまず (A or B and C) or (D) が評価された後に、and E になります。そのため、E に該当しないアイテムは表示されません。列を作成したばかりで、値の入ったアイテムがないので下図のようになります。
(8) の条件に該当するアイテムに、E 値を設定したところ、きちんと表示されるようになりました。
SharePoint ビューのフィルター条件式は、基本的に上からひとつずつ解決されるシンプルなものですが、最初に or 条件を設定した時のみ、特殊な評価が行われるようです。この仕様から考えると、残念ながらあまり複雑な条件設定には不向きだと言えるでしょう。
もしそうした(より複雑な)フィルター定義が必要になる場合には、集計列の計算式と組み合わせて利用するなど、工夫することになるかと思います。
さて、Office 365 Advent Calendar ですが、次回は Office 365 MVP仲間の渡辺元気さんです。