PowerApps의 Filter, Search 및 LookUp 함수Filter, Search, and LookUp functions in PowerApps

테이블에서 하나 이상의 레코드를 찾습니다.Finds one or more records in a table.

설명Description

Filter 함수는 수식을 충족하는 테이블에서 레코드를 찾습니다.The Filter function finds records in a table that satisfy a formula. 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. 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. 일반적인 수식 연산자 이외에도 하위 문자열 일치에 inexactin 연산자를 사용할 수 있습니다.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. FilterLookUp과 달리 Search 함수는 단일 문자열을 사용하여 수식 대신 일치하도록 합니다.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은 단일 값으로 레코드를 줄이기 위해 수식을 적용한 후 발견한 첫 번째 레코드만을 반환합니다.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.

Table은 PowerApps에서 문자열이나 숫자와 같은 값입니다.Tables are a value in PowerApps, just like a string or number. 테이블을 함수로 전달하거나 함수로부터 반환할 수 있습니다.They can be passed to and returned from functions. Filter, SearchLookUp은 테이블을 수정하지 않습니다.Filter, Search, and LookUp don't modify a table. 대신 테이블을 인수로 사용하며 여기에서 테이블, 레코드 또는 단일 값을 반환합니다.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. 찾을 테이블 내의 열의 이름입니다.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에서 구문은 함수 상자 위에 source로 표시됩니다.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에서 구문은 함수 상자 위에 condition으로 표시됩니다.In the UI, the syntax is shown as condition above the function box.
  • ReductionFormula - 선택 사항입니다.ReductionFormula - Optional. 이 수식은 발견된 레코드를 통해 평가된 다음 단일 값으로 레코드를 감소시킵니다.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에서 구문은 함수 상자 위에 result로 표시됩니다.In the UI, the syntax is shown as result above the function box.

Examples

다음 예에서는 IceCream data source를 사용합니다.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 ) QuantityOnOrder 열의 합이 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 ) ) 대문자 또는 소문자와 관계 없이 "chocolate"이라는 단어가 Flavor 이름에 나타나는 레코드를 반환합니다.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" ) 대문자 또는 소문자와 관계 없이 "choc"이라는 문자열이 Flavor 이름에 나타나는 레코드를 반환합니다.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 ) 적어도 하나가 있는 "Chocolate"과 같은 Flavor로 레코드를 검색합니다.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 ) 여러 개가 있는 100보다 큰 Quantity로 레코드를 검색합니다.Searches for a record with Quantity greater than 100, of which there are multiple. "Vanilla" Flavor인 발견된 첫 번째 레코드의 경우 QuantityOnOrder 열의 합계를 반환합니다.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 ) 하나도 없는 "Pistachio"와 같은 Flavor로 레코드를 검색합니다.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" ) 적어도 하나가 있는 "Vanilla"와 같은 Flavor로 레코드를 검색합니다.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

많은 앱에서 하나 이상의 문자를 검색 상자에 입력하면 큰 데이터 집합의 레코드 목록을 필터링할 수 있습니다.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:

이 데이터 원본을 컬렉션으로 만들려면 Button 컨트롤을 만들고 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 Jones, Cole 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.

Company 열과 Name 열을 포함하도록 검색 범위를 확장할 수 있습니다.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 연산자를 지정하는 경우 Search 함수가 Filter보다 읽고 쓰기 쉽습니다.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.