1. 主要ページへ移動
  2. メニューへ移動
  3. ページ下へ移動

QES ブログ

記事公開日

【Power Apps】データを絞り込むならこれ!Filter・LookUp・Search関数の違いと使い分け

  • このエントリーをはてなブックマークに追加

はじめに

こんにちは!DXソリューション営業本部の中垣です。
Power Appsのキャンバスアプリを触っていると、「Filter」関数、「Search」関数、「LookUp」関数について、「結局どれを使えばいいの?」と迷う瞬間はありませんか?
3つの関数はどれもデータを取得する関数ですが、なんとなく使っていると「思った通りにデータが出てこない」「なぜかエラーが消えない」といった壁にぶつかりがちです。

本記事では、キャンバスアプリの開発において押さえておくべき「Filter」関数、「Search」関数、「LookUp」関数の3つの違いと、それぞれの最適な使い分けについてお伝えします!
この3つの関数を使いこなせるようになると、アプリの利便性がグッと上がりますので、ぜひマスターしていきましょう!

3つの関数の特徴と役割

まずは、それぞれの関数がどのような役割を持っているのか、ざっくりと以下のようにまとめてみました。

  • Filter関数:条件に合うものを「リスト(一覧)」で持ってくる
  • LookUp関数:条件に合うものを「1つだけ」特定して持ってくる
  • Search関数:キーワードが含まれているものを「あいまい検索」で探す


今回の記事では、以下のような「商品リスト」というデータソースを例にして、それぞれの関数の動きをご紹介します。

1. Filter関数

Filter関数は、その名の通り「フィルター(絞り込み)」を行う関数です。
データソースの中から、指定した条件に一致するレコードを全て取得します。

例えば、商品リストから「カテゴリーが"文房具"の商品だけをGalleryに一覧表示したい」といった場合に使用します。

■実装イメージとデータの取れ方

▼ 基本構文

Filter(データソース, 絞り込み条件)

▼ コードの解説

  • データソース検索を行いたいデータソースを指定(今回は商品リスト)
  • 絞り込み条件:どんなデータが欲しいかの条件を指定(今回はカテゴリー列の中でラジオボタンコントロールで選択された値が設定されているレコード)

このように、条件に合致するデータが複数ある場合、それらをまとめて「テーブル(表)」の形で返してくれるのがFilter関数の特徴です。

2. LookUp関数

LookUp関数は、条件に一致する最初のレコード1件だけを取得する関数です。
IDのような重複しないユニークな値をキーにして、特定のデータをピンポイントで取得したいときに使います。

例えば、商品リストから「商品IDが"P003"の商品だけを表示したい」といった場合に使用します。

■実装イメージとデータの取れ方

▼ 基本構文

LookUp(データソース, 特定条件)

▼ コードの解説

  • データソース検索を行いたいデータソースを指定(今回は商品リスト)
  • 検索条件:ピンポイントで取得したいデータの条件を指定(今回は商品ID列の中でtxtID(テキスト入力コントロール)に入力されたIDが設定されているレコード)
    ※レコード1行ではなく、そのレコードの1つの項目(商品名等)を取得したい場合は、「LookUp(データソース, 特定条件).取得したい項目の列名」と記載

Filter関数との大きな違いは、結果がテーブルではなく「単体のレコード(1行分のデータ)」として返ってくる点です。
単体のレコードとして、返ってくるためGalleryコントロールだけではなく、ラベルコントロールに結果を返すことも可能です。

3. Search関数

Search関数は、指定した列の中に検索キーワードが含まれているか(部分一致)を探す関数です。
Filter関数は「完全一致(=)」で探すのが得意ですが、Search関数は「名前の一部しかわからない」といったフリーワード検索の実装に向いています。

例えば、商品リストから「商品名列にテキスト入力コントロールに入力されたキーワードが含まれている商品だけを表示したい」といった場合に使用します。

■実装イメージとデータの取れ方

▼ 基本構文

Search(データソース, 検索ワード, 検索対象列)

▼ コードの解説

  • データソース検索を行いたいデータソースを指定(今回は商品リスト)
  • 検索ワード:探したいキーワード(テキスト入力コントロールに入力された文字等)を指定(今回はテキスト入力コントロールに入力されたキーワード)
  • 検索対象の列:どの列の中にそのキーワードが含まれているかを探す(今回は商品名列)

Search関数の場合は、Filter関数と同様に、結果は「テーブル」の形で返ってきます。

「型」を意識した使い分けのポイント

ここまでで、関数の役割はなんとなく理解できたかと思いますが、実際に使ってみると「型に互換性がありません」というエラーが出てしまうことがあります。
これは、関数の「戻り値(結果として返ってくるデータの形)」が違うことが原因であることが多いです。

Power Appsでは、データの型を明確に区別する必要があるため、まずは「テーブル型」「レコード型」の違いを意識することが重要です。

テーブル型 vs レコード型

使い分けに迷ったときは、「そのデータをどこに表示したいか?」で判断するとスムーズです。

  • Galleryに表示したい場合
    複数のデータを一覧表示できるコントロールですので、「テーブル型」を返すFilter関数Search関数を使います。
  • ラベルやテキスト入力に表示したい場合
    1つの値しか表示できないコントロールですので、「レコード型」を返すLookUp関数を使います。

「Filter関数を使ったのに、ラベルに文字が表示されない!」という場合は、Filter関数がテーブル(表)を返しているのに、ラベルがテキスト(文字)を求めているため、型が合っていない可能性があります。
そんなときは、「あ、1件だけ取りたいからLookUpだ!」と思い出していただければと思います。

それでもエラーが消えないときは?

もし、「テーブルとレコードの使い分けは合っているはずなのに、なぜかエラーが出る…」という場合は、データソース側の列の種類を確認してみてください。
特に、Dataverse等で「選択肢型」を使用している場合、単なるテキストとして扱おうとすると型不一致のエラーになります。

選択肢型特有の対処法については、以下の記事で詳しく解説しているので、「もしかしてこれかも?」と思った方は、合わせてチェックしてみてください!


実践!組み合わせて使う方法

ここまで3つの関数についてご紹介してきましたが、実際のアプリ開発では、これらを組み合わせて使うことが非常に多いです。
例えば、「特定のカテゴリで絞り込んだ上で、さらにキーワード検索をしたい」というシナリオです。

こういった場合は、関数の入れ子(ネスト)を使います。

■実装イメージとデータの取れ方

▼ 基本構文

Search(
Filter(データソース,絞り込み条件),
検索ワード,
検索対象列
)

▼ コードの解説

  • 内側(Filter)
    まず、Filter関数が実行され、条件に沿って絞り込まれたリストが作られる(今回はカテゴリー列の中でラジオボタンコントロールで選択された値が設定されているレコードのリスト)
  • 外側(Search)
    次に、その絞り込まれたリストに対してSearch関数が実行され、指定されたキーワードが含まれているレコードを探す(今回は商品名列の中でテキスト入力コントロールで入力されたキーワードを含むレコード)

このように書くことで、まずFilter関数が実行されて、ラジオボタンコントロールで指定されたカテゴリーだけのリストが作られ、そのリストに対してSearch関数が実行される、という流れになります。
一見複雑に見えますが、内側から順番に処理されていると考えると理解しやすいです!

知っておきたい「委任」のこと

最後に、これらの関数を使う上で避けては通れない「委任」について少しだけ触れておきます。
関数を入力した際に、以下のように警告のメッセージや黄色い三角のアイコンが表示されたことはありませんか?

これは「データ量が多すぎると、正しく検索できない可能性がありますよ」というPower Appsからのメッセージです。
実は、Search関数や一部の条件でのFilter関数は、データソース(SharePointリストなど)によっては、大量のデータ(標準では上限500件)を処理しきれない場合があります。

アプリを運用し始めた段階ではデータ件数が少ないため問題にならないことも多いですが、本格的に運用を始めてデータが増えてきたときに「あれ?データが表示されない?」となってしまうことがあります。
もし黄色いアイコンが出たら、「委任」というキーワードで検索して、対処法を調べてみる癖をつけることをおすすめします!

まとめ

本記事では、データの絞り込みや検索に使用する3つの関数についてご紹介しました。

・Filter関数:一覧を表示したいとき(テーブル型)
・LookUp関数:特定の1件を表示したいとき(レコード型)
・Search関数:あいまい検索をしたいとき(テーブル型)

この3つを適切に使い分けることで、ユーザーにとって使いやすい、目的のデータにすぐに辿り着けるアプリを作ることができます。
もしエラーが出ても焦らず、「今扱っているのはテーブルかな?レコードかな?」と立ち止まって考えてみてくださいね!

QES では Power Platform の開発支援、QAサポート、開発者教育、ガバナンス整備など、組織で Power Platform を活用するためのサポートを包括的にご提供しています。Power Platform 活用についてご興味がある/利用中だが課題を感じていらっしゃるお客様はまずはお気軽にお問い合わせください。


このブログで参照されている、Microsoft、Windows、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。

  • このエントリーをはてなブックマークに追加

お問い合わせ

Contact

ご質問やご相談、サービスに関する詳細など、何でもお気軽にご連絡ください。下記のお問い合わせフォームよりお気軽に送信ください。

お問い合わせ

資料ダウンロード

Download

当社のサービスに関する詳細情報を掲載した資料を、下記のページよりダウンロードいただけます。より深く理解していただける内容となっております。ぜひご活用ください。

資料ダウンロード