Power Apps のフィルター処理で動的な複数条件絞り込みを行う

この記事ではこんなことを書いています!
  • Power Apps で頻繁に利用する Filter 処理ついておさらい
  • Search 関数との違いを整理
  • 複数条件で絞り込む場合は true をうまく使う
目次

結論:フィルター処理で複数条件は「true」を活用する

Power Apps における複数条件の Filter 処理には、「true」を活用することが重要です。この記事では、Filter 関数の基本使用法から複数条件による絞り込み、動的な検索機能の実装までを解説します。特に、検索用のテキストボックスが空の場合に全件を対象とする条件を「true」で設定する方法に着目し、効率的なデータの絞り込み方法を説明します。また、Filter 関数と Search 関数の違いにも触れ、それぞれの適切な使い方を説明しています。

Power Apps における Filter 処理について

Power Apps の Filter 関数は、Power Apps のアプリ作成において非常に重要 かつ 頻繁に使用される関数の一つとなります。
もう少し具体的に説明すると、ギャラリーコントロールやデータテーブルコントロールで、指定したデータソースを表示する際にデータを特定の条件で絞り込むために使われます。

データを絞り込むイメージ

Filter 関数は、大量のデータから必要な部分を選別・表示する際に必須の関数となります。例えば、特定の条件を持つアイテムだけを表示する場合や、特定の期間内のデータだけを抽出する場合など、アプリケーションで特定の条件に合致するデータをアプリ利用者の見やすく絞り込むことは一般的に行われます。これにより、使いやすくて見やすいアプリを作成することができます。

テキストボックスに名前を入力し、一覧形式となっているテーブルの名前をフィルタする動画
テキストボックスに入力した値でデータテーブルの内容をフィルター処理する

一般的な Filter 関数は以下の通り。

今回のテスト用に以下のデータを準備しています。適当なボタンコントロールの OnSelect プロパティに以下の関数を入れることで、col_sampleData コレクションにテテストデータを入れています。
そのまま以下のコードを OnSelect プロパティ貼り付けるだけで col_sampleData コレクションを作成してデータを作成できます😁

ClearCollect(col_sampleData,
 {ID: 1, Name: “田中”, age: 25, Point: 300, category: “A”},
 {ID: 2, Name: “山田”, age: 30, Point: 450, category: “B”},
 {ID: 3, Name: “鈴木”, age: 28, Point: 350, category: “A”},
 {ID: 4, Name: “佐藤”, age: 35, Point: 500, category: “C”},
 {ID: 5, Name: “山田”, age: 22, Point: 250, category: “B”},
 {ID: 6, Name: “高橋”, age: 32, Point: 400, category: “A”},
 {ID: 7, Name: “田中”, age: 29, Point: 380, category: “C”},
 {ID: 8, Name: “伊藤”, age: 26, Point: 350, category: “B”},
 {ID: 9, Name: “三浦”, age: 31, Point: 400, category: “A”},
 {ID: 10, Name: “高橋”, age: 27, Point: 350, category: “C”}
)

テキストボックスを使った動的な検索

直前の「テキストボックスに入力した値でデータテーブルの内容をフィルター処理する」(動画)の例でも示してる通り、ユーザーが特定の条件を変更したり、選択するたびに表示内容を動的(リアルタイム)に変更することが Power Apps では可能となります。こういったユーザーに優しい作りによって、ユーザーが求める情報に迅速にアクセスできるようになります。

データの整理

Filter 関数の絞り込みは一つ以上の条件で設定可能です。特定の区分や数値のデータを見つけやすくするのに役立ちます。これにより、アプリの利用者が必要な情報に素早くアクセスできるようになります。

Filter 関数で複数条件を指定する場合の関数の画像。Filter の データソースは、前段の例で記載した OnSelect  プロパティでテストデータを作成した col_sampleData コレクションとしている。名前の項目である Name は 「田中」、カテゴリの項目である category は「A」を条件にしている。
Filter 関数で複数条件を指定する例

Filter 関数と Search 関数の違い

それぞれの関数の概要

Filter 関数:
データソース内のレコードを特定の条件で絞り込みます。主に数値や論理条件で使用され、完全一致を対象とします。

関数の作りによっては部分一致のフィルタも可能ですが、委任問題の原因となる可能性があるため大量データを扱う際は推奨できません

Search 関数:
テキストデータ内で指定されたキーワードを検索し、一致する部分を抽出します。部分一致や類似検索に向いています。 基本的には数値の検索は行えません。また、複数条件をAND条件(A & B)のような検索はできません。

Search 関数でも頑張ればなんとか数値も扱えることも可能かと思いますが、動作不備を起こす原因となるためお勧めできません。
複数条件での検索も、Search 関数をネスト(Search 関数の中にさらに Search 関数を入れ込む)することで実現できますが、こちらも委任問題により大量データを扱う際は推奨できません

公式のドキュメントは以下にあります。
参考:Filter、Search、LookUp 関数 (動画を含む) – Power Platform | Microsoft Learn

Fiilter 関数の使用例

以下は実際にテキストボックスコントロールを使った Filter 関数の例となります。

「田中」さんの「田」だけでは検索できませんが、

「田中」さんの「田」だけでは完全一致ではないため検索できない画像
「田中」さんの「田」だけでは完全一致ではないため検索できない

「田中」までしっかりと入力することで完全一致とみなされ検索することができます。

「田中」まで入力することで完全一致とみなされて検索ができる画像
「田中」まで入力することで完全一致とみなされて検索ができる

Search 関数の使用例

Search 関数だと、前述の Filter 関数と違い、前方・後方一致がで検索ができるようになります。
「田中」さんの「田」だけでも「田中」「山田」が検索されるようになりました。

「田」だけの入力で「田中」も「山田」も検索されることがわかる画像
「田」だけの入力で「田中」も「山田」も検索されることがわかる

Filter 関数での複数・動的条件指定の問題

Filter 関数の複数条件指定のやり方

まずは Filter 関数で複数条件を指定する方法を確認します。

画面のコントロールは以下の通り

各コントロールの配置を説明する画像。名前入力を行うテキストボックス コントロール、カテゴリ入力を行うテキストボックスコントロール、を表示するためのデータテーブル コントロールを配置している。
各コントロールの配置

データテーブル コントロール の Item プロパティに以下の関数を入力します。

Filter(
    col_sampleData,
    Name = txt_name3.Text,
    category = txt_category3.Text
)

この Filter 関数には以下の2つの条件が書かれており、それぞれのテキストボックスコントロールに入力されている値を条件でデータソースがフィルタされます。

  • Name = txt_name3.Text
    Name(名前)が、テキストボックス(txt_name3.Text)の入力の値に一致するもの
  • category = txt_category3.Text
    category (カテゴリ)が、テキストボックス(txt_category3.Text)の入力の値に一致するもの

動的に複数条件を指定すると思った通りに絞り込みされない

ただし、動的な検索の場合はこの関数の記述だとうまく検索できません。
以下の動画を参照してもらえればわかるように、テキストボックス コントロールに何も入力されていないときは全件を表示していないのに、データテーブル コントロールには何も表示されていません。

テキストボックスが空っぽなのにデータテーブルには何も表示されない画像
テキストボックスが空っぽなのにデータテーブルには何も表示されない

利用者目線で考えた時、片方のテキストボックスは空白のまま、もう片方のテキストボックスのみで検索したい場面って必ず出てきますよね?
これが複数条件ができない問題になるのです。

絞り込みできない原因

この原因は、片方のテキストボックスの空白(null)が検索条件になってしまい、検索結果が正しく得られなくためです。

動的な複数条件でフィルターするらな true をうまく使う

ここが一番重要です。
要はテキストボックスに値が入ってない時は「全件」対象となるの結果となってくれれば良いのです。
通常の条件式だと、条件式に合う値が true と扱われるため、条件に合う値が返されるわけです。
それであれば、条件式を書かずに無条件で true を返しちゃえば全件を返せばいいのです

要は空白(null)が入ってきた場合は true (全件を対象にする)を返しちゃえば良いのです。

Filter(
    col_sampleData,
    If(IsBlank(txt_category3.Text),true,category = txt_category3.Text),
    If(IsBlank(txt_name3.Text),true,Name = txt_name3.Text)
)

以下は関数の説明です。(わかりにくかったらコメントをお願いします🙇‍♂️)

この記述のやり方で、条件を増やしていけば、以下の通り複数のテキストボックスを使った動的な絞り込みが完成します。

良い感じに動的な複数条件で検索できるようになりましたね😄

まとめ

この記事では、Power Apps における Filter 処理に焦点を当て複数条件での絞り込みに関する要点を解説しました。Filter 関数はアプリ作成において避けては通れないテクニックとなります。ぜひ、動的な検索の仕組みを作ってアプリの利用者に優しいUIを構築してみてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


このサイトは reCAPTCHA と Google によって保護されていますプライバシーポリシー利用規約 申し込み。

The reCAPTCHA verification period has expired. Please reload the page.

目次