PowerApps の Filter、Search、および LookUp 関数Filter, Search, and LookUp functions in PowerApps

テーブル内の 1 つ以上のレコードを検索します。Finds one or more records in a table.

説明Description

Filter 関数は、数式を満たすレコードをテーブル内で検索します。The Filter function finds records in a table that satisfy a formula. 1 つ以上の条件に一致する一連のレコードを検索したり、そのような条件に一致しないレコードを除外したりするには、Filter を使用します。Use Filter to find a set of records that match one or more criteria and to discard those that don't.

LookUp 関数は、テーブル内で数式を満たす最初のレコードを検索します。The LookUp function finds the first record in a table that satisfies a formula. 1 つ以上の条件に一致する 1 つのレコードを検索するには、LookUp を使用します。Use LookUp to find a single record that matches one or more criteria.

どちらの場合も、数式はテーブルの各レコードについて評価されます。For both, the formula is evaluated for each record of the table. true となるレコードが結果に含まれます。Records that result in true are included in the result. 標準的な数式の演算子に加えて、部分文字列の照合には in 演算子と exactin 演算子を使用できます。Besides the normal formula operators, you can use the in and exactin operators for substring matches.

Fields of the record currently being processed are available within the formula. You simply reference them by name as you would any other value. You can also reference control properties and other values from throughout your app. For more details, see the examples below and working with record scope.

Search 関数は、テーブル内でそのいずれかの列にある文字列が含まれているレコードを検索します。The Search function finds records in a table that contain a string in one of their columns. この文字列は、列内のどこに現れてもかまいません。たとえば、"rob" または "bert" を検索すると、"Robert" を含む列で一致が検出されます。The string may occur anywhere within the column; for example, searching for "rob" or "bert" would find a match in a column that contains "Robert". 検索では大文字小文字が区別されません。Searching is case-insensitive. Filter および LookUp とは異なり、Search 関数は、照合に数式ではなく 1 つの文字列を使用します。Unlike Filter and LookUp, the Search function uses a single string to match instead of a formula.

FilterSearch は、元のテーブルと同じ列および条件と一致するレコードを含むテーブルを返します。Filter and Search return a table that contains the same columns as the original table and the records that match the criteria. LookUp は、レコードを 1 つの値まで減らす数式を適用した後に、最初に見つかったレコードのみを返します。LookUp returns only the first record found, after applying a formula to reduce the record to a single value. レコードが見つからなかった場合、FilterSearchのテーブルを返し、LookUp は "空白" を返します。If no records are found, Filter and Search return an empty table, and LookUp returns blank.

文字列または数値と同じように、テーブルは PowerApps 内の値です。Tables are a value in PowerApps, just like a string or number. 関数に渡して、関数から返すことができます。They can be passed to and returned from functions. FilterSearchLookUp は、テーブルを変更しません。Filter, Search, and LookUp don't modify a table. 代わりに、引数としてテーブルを受け取り、そこからテーブル、レコード、または 1 つの値を返します。Instead, they take a table as an argument and return a table, a record, or a single value from it. 詳細については、テーブルの使用に関するページを参照してください。See working with tables for more details.

Delegation

When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. For example, when you start an app that shows a Gallery control filled with data, only the first set of records will be initially brought to the device. As the user scrolls, additional data is brought down from the data source. The result is a faster start time for the app and access to very large data sets.

However, delegation may not always be possible. Data sources vary on what functions and operators they support with delegation. If complete delegation of a formula isn't possible, the authoring environment will flag the portion that can't be delegated with a warning. When possible, consider changing the formula to avoid functions and operators that can't be delegated. The delegation list details which data sources and operations can be delegated.

If delegation is not possible, PowerApps will pull down only a small set of records to work on locally. Filter and sort functions will operate on a reduced set of records. What is available in the Gallery may not be the complete story, which could be confusing to users.

See the delegation overview for more information.

構文Syntax

Filter( Table, Formula1 [, Formula2, ... ] )Filter( Table, Formula1 [, Formula2, ... ] )

  • Table - 必須。Table - Required. 検索するテーブル。Table to search.
  • Formula(s) - 必須。Formula(s) - Required. テーブルの各レコードの評価に使用する数式。The formula by which each record of the table is evaluated. 関数は、結果が true になるすべてのレコードを返します。The function returns all records that result in true. テーブル内の列を参照することができます。You can reference columns within the table. 複数の数式を指定した場合、すべての数式の結果は And 関数を使用して結合されます。If you supply more than one formula, the results of all formulas are combined with the And function.

Search( Table, SearchString, Column1 [, Column2, ... ] )Search( Table, SearchString, Column1 [, Column2, ... ] )

  • Table - 必須。Table - Required. 検索するテーブル。Table to search.
  • SearchString - 必須。SearchString - Required. 検索対象文字列。The string to search for. "空白" または空の文字列の場合は、すべてのレコードが返されます。If blank or an empty string, all records are returned.
  • Column(s) - 必須。Column(s) - Required. Table 内で検索する列の名前。The names of columns within Table to search. 検索する列には、テキストが含まれている必要があります。Columns to search must contain text. 列名は、文字列であり、二重引用符で囲む必要があります。Column names must be strings and enclosed in double quotes. ただし、列名は静的である必要があるため、数式を使用して計算することはできません。However, the column names must be static and cannot be calculated with a formula. SearchString が、これらの列のいずれかのデータ内で部分一致として見つかった場合は、レコード全体が返されます。If SearchString is found within the data of any of these columns as a partial match, the full record will be returned.

注: 名前にスペースが使われている列を含む SharePoint および Excel のデータ ソースの場合、各スペースを "_x0020_" として指定します。Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". たとえば、"Column Name" として "Column_x0020_Name" を指定します。For example, specify "Column Name" as "Column_x0020_Name".

LookUp( Table, Formula [, ReductionFormula ] )LookUp( Table, Formula [, ReductionFormula ] )

  • Table - 必須。Table - Required. 検索するテーブル。Table to search. UI で、構文が関数ボックスの上にソースとして表示されます。In the UI, the syntax is shown as source above the function box.
  • Formula - 必須。Formula - Required. テーブルの各レコードの評価に使用する数式。The formula by which each record of the table is evaluated. 関数は、結果が true になる最初のレコードを返します。The function returns the first record that results in true. テーブル内の列を参照することができます。You can reference columns within the table. UI で、構文が関数ボックスの上に条件として表示されます。In the UI, the syntax is shown as condition above the function box.
  • ReductionFormula - 省略可能。ReductionFormula - Optional. この数式は、検出されたレコードについて評価されるため、レコードが 1 つの値まで減ります。This formula is evaluated over the record that was found, and then reduces the record to a single value. テーブル内の列を参照することができます。You can reference columns within the table. このパラメーターを使用しない場合、この関数はテーブルからレコード全体を返します。If you don't use this parameter, the function returns the full record from the table. UI で、構文が関数ボックスの上に結果として表示されます。In the UI, the syntax is shown as result above the function box.

Examples

次の例では、IceCream データ ソースを使用します。The following examples use the IceCream data source:

数式Formula 説明Description 結果Result
Filter( IceCream, OnOrder > 0 )Filter( IceCream, OnOrder > 0 ) OnOrder が 0 より大きいレコードを返します。Returns records where OnOrder is greater than zero.
Filter( IceCream, Quantity + OnOrder > 225 )Filter( IceCream, Quantity + OnOrder > 225 ) Quantity 列と OnOrder 列の合計が 225 より大きいレコードを返します。Returns records where the sum of Quantity and OnOrder columns is greater than 225.
Filter( IceCream, "chocolate" in Lower( Flavor ) )Filter( IceCream, "chocolate" in Lower( Flavor ) ) 大文字か小文字かに関係なく、Flavor の名前に "chocolate" という単語が含まれるレコードを返します。Returns records where the word "chocolate" appears in the Flavor name, independent of uppercase or lowercase letters.
Filter( IceCream, Quantity < 10 && OnOrder < 20 )Filter( IceCream, Quantity < 10 && OnOrder < 20 ) Quantity が 10 未満かつ OnOrder が 20 未満のレコードを返します。Returns records where the Quantity is less than 10 and OnOrder is less than 20. これらの条件に一致するレコードがないため、空のテーブルが返されます。No records match these criteria, so an empty table is returned.
Search( IceCream, "choc", "Flavor" )Search( IceCream, "choc", "Flavor" ) 大文字か小文字かに関係なく、Flavor の名前に "choc" という文字列が含まれるレコードを返します。Returns records where the string "choc" appears in the Flavor name, independent of uppercase or lowercase letters.
Search( IceCream, "", "Flavor" )Search( IceCream, "", "Flavor" ) 検索語句が空であるため、すべてのレコードが返されます。Because the search term is empty, all records are returned.
LookUp( IceCream, Flavor = "Chocolate", Quantity )LookUp( IceCream, Flavor = "Chocolate", Quantity ) Flavor が "Chocolate" に等しいレコードを検索します (その中で 1 つあります)。Searches for a record with Flavor equal to "Chocolate", of which there is one. 見つかった最初のレコードについて、そのレコードの Quantity を返します。For the first record that's found, returns the Quantity of that record. 100100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder )LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Quantityが 100 を超えるレコードを検索します (その中で複数あります)。Searches for a record with Quantity greater than 100, of which there are multiple. 見つかった最初のレコード (Flavor が "Vanilla") について、Quantity 列と OnOrder 列の合計を返します。For the first record that's found, which is "Vanilla" Flavor, returns the sum of Quantity and OnOrder columns. 250250
LookUp( IceCream, Flavor = "Pistachio", OnOrder )LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Flavor が "Pistachio" に等しいレコードを検索します (その中には存在しません)。Searches for a record with Flavor equal to "Pistachio", of which there are none. 見つからなかったため、Lookup は "空白" を返します。Because none were found, Lookup returns blank. "空白"blank
LookUp( IceCream, Flavor = "Vanilla" )LookUp( IceCream, Flavor = "Vanilla" ) Flavor が "Vanilla" に等しいレコードを検索します (その中で 1 つあります)。Searches for a record with Flavor equal to "Vanilla", of which there is one. 換算公式が指定されていなかったため、レコード全体が返されます。Since no reduction formula was supplied, the entire record is returned. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }{ Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

検索のユーザー エクスペリエンスSearch user experience

多くのアプリでは、検索ボックスに 1 つ以上の文字を入力して、大きなデータ セット内のレコードの一覧をフィルター処理することができます。In many apps, you can type one or more characters into a search box to filter a list of records in a large data set. 入力すると、一覧には、検索条件に一致するレコードのみが表示されます。As you type, the list shows only those records that match the search criteria.

このトピックの残りの部分にある例では、Customers という一覧を検索した場合の結果を示しています。この一覧には、次のデータが含まれています。The examples in the rest of this topic show the results of searching a list, named Customers, that contains this data:

このデータ ソースをコレクションとして作成するには、ボタン コントロールを作成し、その OnSelect プロパティを次の数式に設定します。To create this data source as a collection, create a Button control and set its OnSelect property to this formula:

ClearCollect( Customers, Table( { Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" } ) )ClearCollect( Customers, Table( { Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" } ) )

この例に示すように、画面下部にあるギャラリー コントロールにレコードの一覧を表示できます。As in this example, you can show a list of records in a Gallery control at the bottom of a screen. 画面の上部には、ユーザーが関心のあるレコードを指定できるように、SearchInput という名前のテキスト入力コントロールを追加できます。Near the top of the screen, you can add a Text input control, named SearchInput, so that users can specify which records interest them.

ユーザーが SearchInput に文字を入力すると、ギャラリーの結果は自動的にフィルター処理されます。As the user types characters in SearchInput, the results in the gallery are automatically filtered. この場合、ギャラリーは、(会社の名前ではなく) 顧客の名前が SearchInput の文字シーケンスで始まるレコードを表示するように構成されています。In this case, the gallery is configured to show records for which the name of the customer (not the name of the company) starts with the sequence of characters in SearchInput. ユーザーが検索ボックスに「co」と入力した場合、ギャラリーには次の結果が表示されます。If the user types co in the search box, the gallery shows these results:

Name 列に基づいてフィルター処理するには、ギャラリー コントロールの Items プロパティを次の数式のいずれかに設定します。To filter based on the Name column, set the Items property of the gallery control to one of these formulas:

数式Formula 説明Description 結果Result
Filter( Customers, StartsWith( Name, SearchInput.Text ) )Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Customers データ ソースで、検索文字列が Name 列の先頭に出現するレコードをフィルター処理します。Filters the Customers data source for records in which the search string appears at the start of the Name column. このテストでは、大文字と小文字が区別されません。The test is case insensitive. ユーザーが検索ボックスに「co」と入力した場合、ギャラリーには、Colleen JonesCole Miller が表示されます。If the user types co in the search box, the gallery shows Colleen Jones and Cole Miller. ギャラリーに Mike Collins が表示されないのは、そのレコードの Name 列の先頭に検索文字列がないためです。The gallery doesn't show Mike Collins because the Name column for that record doesn't start with the search string.
Filter( Customers, SearchInput.Text in Name )Filter( Customers, SearchInput.Text in Name ) Customers データ ソースで、検索文字列が Name 列のどこかに出現するレコードをフィルター処理します。Filters the Customers data source for records in which the search string appears anywhere in the Name column. このテストでは、大文字と小文字が区別されません。The test is case insensitive. ユーザーが検索ボックスに「co」と入力した場合、ギャラリーには、Colleen JonesCole Miller、および Mike Collins が表示されます。これは、検索文字列が、これらすべてのレコードの Name 列のどこかに出現しているためです。If the user types co in the search box, the gallery shows Colleen Jones, Cole Miller, and Mike Collins because the search string appears somewhere in the Name column of all of those records.
Search( Customers, SearchInput.Text, "Name" )Search( Customers, SearchInput.Text, "Name" ) in 演算子を使用した場合と同様、Search 関数は、各レコードの Name 列内で一致を検索します。Similar to using the in operator, the Search function searches for a match anywhere within the Name column of each record. 列名を二重引用符で囲む必要があることに注意してください。Note that you must enclose the column name in double quotation marks.

Name 列だけでなく Company 列を含めるように検索範囲を広げることができます。You can expand your search to include the Company column as well as the Name column:

数式Formula 説明Description 結果Result
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) )Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Customers データ ソースで、Name 列または Company 列の先頭に検索文字列 (たとえば、co) があるレコードをフィルター処理します。Filters the Customers data source for records in which either the Name column or the Company column starts with the search string (for example, co). どちらか一方の StartsWith 関数が true の場合、|| 演算子true になります。The || operator is true if either StartsWith function is true.
Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company )Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company ) Customers データ ソースで、Name 列または Company 列の中に検索文字列 (たとえば、co) が含まれているレコードをフィルター処理します。Filters the Customers data source for records in which either the Name column or the Company column contains the search string (for example, co) anywhere within it.
Search( Customers, SearchInput.Text, "Name", "Company" )Search( Customers, SearchInput.Text, "Name", "Company" ) in 演算子を使用した場合と同様、Search 関数は、Customers データ ソースで、Name 列または Company 列の中に検索文字列 (たとえば、co) が含まれているレコードを検索します。Similar to using the in operator, the Search function searches the Customers data source for records in which either the Name column or the Company column contains the search string (for example, co) anywhere within it. 複数の列と複数の in 演算子を指定する場合は、Filter よりも Search関数の方が読み書きが簡単です。The Search function is easier to read and write than Filter if you want to specify multiple columns and multiple in operators. 列の名前を二重引用符で囲む必要があることに注意してください。Note that you must enclose the names of the columns in double quotation marks.