PowerAppsでシステム開発をしている時、以下のような悩みはありませんか?
一覧画面に表示されるデータが多すぎて、必要な情報が探しにくい…
ユーザーに不要な情報まで表示されてしまい、操作性が悪い…
これらの悩みはFilter関数を用いることで解決します。何かと便利な関数なので、覚えればユーザーにとって使いやすくなりますし、複雑なデータ処理が効率的にできるようになるはず。
本記事では、Filter関数の基本的な構文から高度なテクニックまで、丁寧に解説します。ぜひPowerApps開発の際の参考にしてみてください。
当社が提供する無料のPowerPlatformチュートリアルはこちら>>
Filter関数の基本構文と使い方
Filter関数は、Power Appsでデータソースから特定の条件に一致するレコードを抽出するための関数です。
基本構文
Filter関数の基本構文は以下の通りです。
Filter( データソース, 条件式 )
- データソース: 絞り込み対象となるデータソースを指定します。Dataverseテーブル、SharePointリスト、Excelテーブルなど、様々なデータソースを指定できます。
- 条件式: データソースから抽出するレコードの条件を指定します。 条件式には、演算子、関数、値などを組み合わせます。
具体的な例:Dataverseテーブルの場合
例えば、Dataverseに「顧客」テーブルがあり、顧客名、都市、国といったカラムがあるとします。このテーブルから、都市が「東京」である顧客だけを抽出したい場合は、以下のようになります。
Filter(顧客, 都市 = "東京")
この数式は、顧客 テーブルから、都市 カラムの値が “東京” であるレコードを抽出します。抽出されたレコードは、ギャラリーやデータテーブルなどに表示できます。
具体的な例:SharePointリストの場合
SharePointリストに「タスク」リストがあり、「タスク名」「ステータス」「担当者」などのカラムがあるとします。このリストから、ステータスが「完了」で担当者が「山田太郎」であるタスクだけを抽出したい場合は、以下のようになります。
Filter(タスク, ステータス = "完了" && 担当者 = "山田太郎")
この数式は、タスク リストから、ステータス カラムの値が “完了” であり、かつ 担当者 カラムの値が “山田太郎” であるレコードを抽出します。&& は論理積を表し、両方の条件を満たすレコードのみが抽出されます。
Filter関数とギャラリーの組み合わせ
Filter関数は、ギャラリーコントロールと組み合わせて使用すると、ユーザーがインタラクティブにデータ絞り込みを行うアプリを作成できます。
例えば、テキスト入力コントロールに都市名を入力し、その都市にある顧客だけを表示するギャラリーを作成したい場合、ギャラリーのItemsプロパティに以下の数式を設定します。
Filter(顧客, StartsWith(都市, TextInput1.Text))
この例では、StartsWith関数を用いて、テキスト入力コントロール(TextInput1)に入力された文字列で始まる都市名を持つ顧客レコードだけを抽出します。
これらの基本的な構文と例を理解すれば、Filter関数を活用したデータ絞り込み処理を実装できるようになるでしょう。
Filter関数における条件式
Filter関数の条件式は、データソースから抽出するレコードを指定するための重要な部分です。 シンプルな条件だけでなく、複数の条件を組み合わせた複雑な条件式も記述できます。 この記事では、条件式で利用できる演算子や関数について解説します。
1. 比較演算子
比較演算子は、2つの値を比較するために使用します。
演算子 | 説明 | 例 |
= | 等しい | Filter(Products, Category = “Electronics”) |
<> | 等しくない | Filter(Products, Category <> “Electronics”) |
> | より大きい | Filter(Products, Price > 100) |
< | より小さい | Filter(Products, Price < 100) |
>= | 以上 | Filter(Products, Price >= 100) |
<= | 以下 | Filter(Products, Price <= 100) |
2. 論理演算子
論理演算子は、複数の条件を組み合わせるために使用します。
演算子 | 説明 | 例 |
And | 論理積 (両方trueの場合true) | Filter(Products, Category = “Electronics” And Price > 100) |
Or | 論理和 (どちらか一方trueの場合true) | Filter(Products, Category = “Electronics” Or Category = “Clothing”) |
Not | 論理否定 | Filter(Products, Not IsEmpty(Description)) |
3. その他の関数
条件式には、比較演算子や論理演算子だけでなく、様々な関数を組み合わせて使用できます。
- IsBlank()関数: 値が空白かどうかを判定します。Filter(Customers, IsBlank(Email)) は、Emailフィールドが空白の顧客を抽出します。
- IsEmpty()関数: 配列やテーブルが空かどうかを判定します。Filter(Orders, IsEmpty(Items)) は、アイテムを持たない注文を抽出します。
- StartsWith()関数: 文字列の先頭が特定の文字列で始まるかどうかを判定します。 Filter(Products, StartsWith(ProductName, “Apple”)) は、製品名が”Apple”で始まる製品を抽出します。
- EndsWith()関数: 文字列の末尾が特定の文字列で終わるかどうかを判定します。
- Contains()関数: 文字列の中に特定の文字列が含まれるかどうかを判定します。
- In()関数: 特定の値のリストの中に、値が含まれるかどうかを判定します。Filter(Products, Category in [“Electronics”, “Clothing”]) は、カテゴリが”Electronics”か”Clothing”の製品を抽出します。
- LookUp()関数: 別のデータソースから値を取得して条件式に使用します。
複雑な条件式の例
例えば、「カテゴリが「Electronics」で、価格が100以上、かつ在庫数が5以下の製品」を抽出したい場合は、以下のようになります。
Filter(Products, Category = "Electronics" And Price >= 100 And Stock <= 5)
これらの演算子と関数を組み合わせることで、様々な条件に合わせたデータ絞り込み処理を行うことができます。 適切な条件式を作成することで、アプリの機能性とユーザーエクスペリエンスを大幅に向上させることが可能です。 次のセクションでは、様々なデータソースへのFilter関数の適用方法について解説します。
様々なデータソースへの適用 ( Dataverse、SharePoint、Excel)
Filter関数は、Dataverse、SharePointリスト、Excelテーブルなど、様々なデータソースに適用できます。 データソースの種類によって、Filter関数の具体的な使用方法が多少異なるため、それぞれのデータソースに合わせた記述方法を理解することが重要です。
1. Dataverse
Dataverseは、Power Platform専用のクラウドデータベースです。DataverseテーブルをデータソースとしてFilter関数を使用する場合は、テーブル名とカラム名を正確に記述します。
例:Filter(顧客テーブル, 市区町村 = “東京都” && 顧客ステータス = “見込み顧客”)
この例では、顧客テーブルから、市区町村が”東京都”であり、かつ顧客ステータスが”見込み顧客”であるレコードを抽出します。
2. SharePointリスト
SharePointリストは、ファイル共有やコラボレーションに便利なデータソースです。SharePointリストをデータソースとしてFilter関数を使用する場合は、リスト名とカラム名を正確に記述します。 SharePointリストのカラム名は、スペースを含む場合があるので、注意が必要です。
例:Filter( ‘案件リスト’, ステータス = “進行中” && 担当者 = “山田太郎” )
この例では、’案件リスト’から、ステータスが”進行中”であり、かつ担当者が”山田太郎”であるレコードを抽出します。SharePointリスト名はシングルクォーテーションで囲む必要があります。
3. Excelテーブル
Excelテーブルは、Excelワークシート上に作成されたテーブルです。ExcelテーブルをデータソースとしてFilter関数を使用する場合は、テーブル名とカラム名を正確に記述します。Excelファイルは、Power Appsにインポートする必要があります。
例:Filter(売上データ, 製品名 = “A商品” && 売上金額 > 1000)
この例では、売上データテーブルから、製品名が”A商品”であり、かつ売上金額が1000より大きいレコードを抽出します。
データソースの指定方法
データソースを指定する際には、データソース名とカラム名を正確に記述することが重要です。特に、SharePointリストやDataverseテーブルのカラム名にスペースが含まれる場合は、シングルクォーテーションで囲む必要があります。
また、DataverseやSharePointリストの場合は、データ接続が正しく設定されていることを確認する必要があります。
様々なデータソースへの対応
Power Appsは、Dataverse、SharePoint、Excel以外にも、様々なデータソース(SQL Server、Salesforceなど)に接続できます。これらのデータソースに接続する場合も、基本的には同様の方法でFilter関数を適用できます。ただし、コネクタの種類や設定方法が異なる場合がありますので、Microsoftの公式ドキュメントなどを参照してください。
様々なデータソースへの適用をマスターすることで、Power Appsの柔軟性を活かしたデータ活用が可能になります。次のセクションでは、Filter関数とギャラリー・データテーブルの連携方法について解説します。
Filter関数とギャラリー・データテーブルの連携
Filter関数は、単体で使うだけでなく、ギャラリーやデータテーブルなどのコントロールと連携させることで、より高度でユーザーフレンドリーなアプリを作成できます。 ここでは、Filter関数とギャラリー、データテーブルを連携させる方法を解説します。
1. ギャラリーコントロールとの連携
ギャラリーコントロールは、データソースから取得したレコードを一覧表示するためのコントロールです。 ギャラリーのItemsプロパティにFilter関数を設定することで、表示するレコードを絞り込むことができます。
例:Dataverseの「顧客」テーブルから、都市が「東京」である顧客だけを表示するギャラリーの場合
Gallery1.Items = Filter(顧客テーブル, 市区町村 = "東京")
この例では、Gallery1というギャラリーコントロールのItemsプロパティに、Filter(顧客テーブル, 市区町村 = “東京”) を設定しています。これにより、顧客テーブル から都市が「東京」であるレコードのみがGallery1に表示されます。
2. データテーブルコントロールとの連携
データテーブルコントロールは、データソースから取得したレコードを表形式で表示するためのコントロールです。ギャラリーと同様に、ItemsプロパティにFilter関数を設定することで、表示するレコードを絞り込むことができます。
例:SharePointリストの「案件」リストから、ステータスが「完了」である案件だけを表示するデータテーブルの場合
DataTable1.Items = Filter('案件リスト', ステータス = "完了")
この例では、DataTable1というデータテーブルコントロールのItemsプロパティに、Filter(‘案件リスト’, ステータス = “完了”) を設定しています。これにより、’案件リスト’からステータスが「完了」であるレコードのみがDataTable1に表示されます。
3. ユーザー入力と組み合わせた動的な絞り込み
テキスト入力コントロールなどを使って、ユーザーが自由に絞り込み条件を入力できるようにすることもできます。
例:テキスト入力コントロールに入力された文字列を含む顧客名を持つ顧客を表示するギャラリーの場合
Gallery1.Items = Filter(顧客テーブル, Contains(顧客名, TextInput1.Text))
この例では、テキスト入力コントロール(TextInput1)に入力された文字列が顧客名に含まれるレコードのみをGallery1に表示します。
4. 複数の条件による絞り込み
複数の条件を組み合わせることで、より詳細なデータ絞り込みを行うことができます。 And演算子やOr演算子を使って、複数の条件式を連結します。
例:都市が「東京」または「大阪」である顧客を表示するギャラリーの場合
Gallery1.Items = Filter(顧客テーブル, 市区町村 = "東京" Or 市区町村 = "大阪")
Filter関数をギャラリーやデータテーブルと効果的に連携させることで、ユーザーは必要な情報に簡単にアクセスでき、アプリの操作性が大幅に向上します。 適切なデータ絞り込み処理を実装することで、ユーザーエクスペリエンスを向上させ、業務効率化に貢献できます。 次のセクションでは、Filter関数を使った高度なデータ絞り込みの方法を解説します。
Filter関数を使った高度なデータ絞り込み
Filter関数は、基本的なデータ絞り込みだけでなく、文字列操作関数やLookUP関数などを組み合わせることで、より高度で複雑な条件設定を実現できます。 ここでは、高度なデータ絞り込みを実現するためのテクニックを紹介します。
1. 文字列操作関数との組み合わせ
StartsWith()、EndsWith()、Contains()などの文字列操作関数をFilter関数と組み合わせることで、文字列の始め、終わり、または部分一致による絞り込みが可能です。
- StartsWith(文字列, 部分文字列): 文字列が部分文字列で始まるかどうかを判定します。
例:顧客名に「山田」で始まる顧客を抽出
Filter(顧客テーブル, StartsWith(顧客名, "山田"))
- EndsWith(文字列, 部分文字列): 文字列が部分文字列で終わるかどうかを判定します。
例:顧客名に「太郎」で終わる顧客を抽出
Filter(顧客テーブル, EndsWith(顧客名, "太郎"))
- Contains(文字列, 部分文字列): 文字列の中に部分文字列が含まれるかどうかを判定します。
例:顧客名に「田」を含む顧客を抽出
Filter(顧客テーブル, Contains(顧客名, "田"))
2. In()関数を使った絞り込み
In()関数は、特定の値のリストの中に、値が含まれるかどうかを判定します。複数の値を条件として絞り込みたい場合に便利です。
例:カテゴリが「家電」または「衣料品」である商品を抽出
Filter(商品テーブル, カテゴリ in ["家電", "衣料品"])
3. LookUp()関数を使った絞り込み
LookUp()関数は、別のテーブルから値を取得し、Filter関数の条件式で使用できます。 関連テーブルの情報に基づいてデータ絞り込みを行う場合に有効です。
例:担当者IDに基づいて、担当者の名前を取得し、その担当者が担当する案件を抽出
Filter(案件テーブル, 担当者ID = LookUp(担当者テーブル, ID = 123).ID)
この例では、担当者テーブルからIDが123の担当者の情報を取得し、その担当者のIDと案件テーブルの担当者IDを比較することで、特定の担当者が担当する案件を抽出します。
4. 複数の条件を組み合わせた複雑な絞り込み
And、Or、Not演算子を使って、複数の条件を組み合わせた複雑な絞り込みも可能です。
例:都市が「東京」または「大阪」で、顧客ステータスが「見込み顧客」である顧客を抽出
Filter(顧客テーブル, (市区町村 = "東京" Or 市区町村 = "大阪") And 顧客ステータス = "見込み顧客")
これらの高度なテクニックを組み合わせることで、より洗練されたデータ絞り込み処理を実装し、ユーザーにとって使いやすいアプリを構築できます。
まとめ
ここまでFilter関数関数の基本的な使い方を解説しました。
Filter 関数をマスターすれば、データの絞り込み処理を効率化し、ユーザーにとって使いやすいアプリを開発できるようになります。 文字列操作関数や LookUp 関数と組み合わせることで、複雑な条件にも対応できるでしょう。
より高度なアプリ開発に挑戦したい、または開発で困っているという方は、ぜひファンリピートにご相談ください。 経験豊富なエンジニアが、お客様のアプリ開発をサポートします。 無料相談も受け付けておりますので、お気軽にお問い合わせください。