##前置き
PowerAppsでFilter/LookUp/Searchなどの関数を何気なく使用していると委任の警告が出ることがよくあります。データソースの規模が小さいうちは問題ありませんが、2000行を超えると問題になるので委任の警告が出ない(委任可能な)Filter関数の使用例を紹介します。
前提としてデータソースはSharePointListを使用することを想定します。
##委任について
委任って何?という方は下記サイト様で分かりやすく説明されています。
##本記事で使用するSharePointList
本記事では都道府県/氏名/性別/年齢/職業の5つの列を持つSharePointList(リスト名:SampleList
)を例に説明します。必要に応じて読み替えて利用ください。
##事例①:特定の1列を対象に完全一致フィルタをかける
テキストボックス(TextInput1
)に任意の文字列を入力させ、完全一致する氏名をもつ行だけを絞り込みます。最も基本的な形です。
Filter(SampleList,氏名=TextInput1.Text)
##事例②:特定の1列を対象に前方一致フィルタをかける
完全一致では実用上使いづらいので、前方一致で絞り込めるようにします。
Filter(SampleList,StartsWith(氏名,TextInput1.Text))
##事例③:特定の1列を対象に部分一致フィルタをかける
:::note warn
部分一致はSearch関数を使用する必要がありますが、2021/10/1時点でSharePointListでのSearch関数は委任をサポートしていないので、委任の警告を回避することはできません。
※もし回避方法をご存じの方がいればコメントいただけると幸いです。
:::
##事例④:複数列を対象に前方一致フィルタをかける
事例①②では氏名でしか絞り込めませんでしたが、他の列でも絞り込めるようにします。
Filter(SampleList,StartsWith(氏名,TextInput1.Text)||StartsWith(都道府県,TextInput1.Text)||
StartsWith(性別,TextInput1.Text)||StartsWith(職業,TextInput1.Text))
##事例⑤:複数列のAND条件で前方一致フィルタをかける
2つのテキストボックス(TextInput1
,TextInput2
)を使って、複数列(ここでは氏名と都道府県)のAnd条件で絞り込みます。
Filter(SampleList,StartsWith(氏名,TextInput1.Text),StartsWith(都道府県,TextInput2.Text))
##事例⑥:複数列のOR条件で前方一致フィルタをかける
2つのテキストボックス(TextInput1
,TextInput2
)を使って、複数列(ここでは氏名と都道府県)のOr条件で絞り込みます。
Filter(SampleList,StartsWith(氏名,TextInput1_5.Text)|| StartsWith(都道府県,TextInput1_6.Text))
##事例⑦:数値列で値の大小のフィルタをかける
テキストボックス(TextInput1
)に任意の数値を入力させ、年齢が入力値以上の行だけを絞り込みます
Filter(SampleList,年齢>=Int(TextInput1.Text))