다음을 통해 공유


Filter, Search및 LookUp 함수

적용 대상: 캔버스 앱 Copilot Studio Desktop 흐름 모델 기반 앱 Power Platform CLI Dataverse 함수 Power Pages

테이블에서 하나 이상의 레코드를 찾습니다.

이 비디오를 시청하여 사용 Filter방법 및 SearchLookUp 함수를 알아봅니다.

참고

PAC CLI pac power-fx 명령은 이 함수를 Search 지원하지 않습니다.

Description

함수는 Filter 수식을 충족하는 테이블에서 레코드를 찾습니다. 하나 이상의 조건과 일치하는 레코드 집합을 찾고 그렇지 않은 레코드를 삭제하는 데 사용합니다 Filter .

함수는 LookUp 수식을 충족하는 테이블의 첫 번째 레코드를 찾습니다. 하나 이상의 조건과 일치하는 단일 레코드를 찾는 데 사용합니다 LookUp .

둘 다 수식은 각 테이블의 레코드에 대해 평가됩니다. true가 되는 레코드는 결과에 포함됩니다. 일반적인 수식 연산자 이외에도 하위 문자열 일치에 inexactin 연산자를 사용할 수 있습니다.

현재 처리 중인 레코드의 필드는 수식 내에서 사용할 수 있습니다. ThisRecord 연산자를 사용하거나 다른 값과 마찬가지로 이름을 기준으로 필드를 참조하기만 하면 됩니다. As 연산자는 처리 중인 레코드의 이름을 지정하여 수식을 이해하기 쉽게 만들고 중첩된 레코드를 액세스 가능하게 만드는 데에도 사용할 수 있습니다. 자세한 정보는 아래 예제 및 레코드 범위 작업을 참조하세요.

이 함수는 Search 테이블의 열 중 하나에 문자열이 포함된 레코드를 찾습니다. 문자열은 열 내의 아무 곳에서나 발생할 수 있습니다. 예를 들어, "rob" 또는 "bert" 검색으로 "Robert"를 포함하는 열에서 일치 항목을 찾습니다. 검색은 대/소문자를 구분합니다. 함수와 LookUp달리 Filter 함수는 Search 수식 대신 단일 문자열을 사용하여 일치합니다.

Filter 을 반환하고 Search 원래 테이블과 동일한 열이 포함된 테이블과 조건과 일치하는 레코드를 반환합니다. LookUp 는 수식을 적용하여 레코드를 단일 값으로 줄인 후 찾은 첫 번째 레코드만 반환합니다. 레코드가 FilterSearch 없으면 테이블을 반환하고 LookUp 테이블을 반환합니다.

테이블은 문자열이나 숫자와 마찬가지로 Power Apps값입니다. 함수로부터 전달되거나 반환될 수 있습니다. Filter, SearchLookUp 테이블을 수정하지 않습니다. 대신 테이블을 인수로 사용하며 여기에서 테이블, 레코드 또는 단일 값을 반환합니다. 자세한 내용은 테이블 작업을 참조하세요.

위임

가능하면 Power Apps에서 필터 및 정렬 작업을 데이터 원본에 위임하고 요청 시 결과의 페이지 사이를 이동합니다. 예를 들어, 데이터로 채워진 갤러리 컨트롤을 보여주는 앱을 시작하면 레코드의 첫 번째 집합만 장치로 가져올 수 있습니다. 사용자가 스크롤하면 데이터 원본에서 추가 데이터를 가져옵니다. 결과적으로 앱의 시작 시간이 빨라지고 대용량 데이터 집합에 액세스할 수 있습니다.

그러나 위임이 항상 가능한 것은 아닙니다. 데이터 원본은 위임을 통해 지원되는 함수와 연산자에 따라 달라집니다. 수식의 완전한 위임이 불가능한 경우 작성 환경은 위임할 수 없는 부분에 경고와 함께 플래그를 지정합니다. 가능하면 위임할 수 없는 함수와 연산자를 방지하기 위해 수식 변경을 고려합니다. 위임 목록은 위임할 수 있는 데이터 원본과 작업을 자세히 설명합니다.

위임이 불가능한 경우 Power Apps는 로컬에서 작업하기 위해 소수의 레코드 집합만 가져옵니다. Filter 및 정렬 함수는 감소된 레코드 집합에서 작동합니다. 갤러리에서 제공하는 것은 전체가 아닐 수 있으며, 이는 사용자들에게 혼란을 줄 수 있습니다.

자세한 내용은 위임 개요를 참조하십시오.

구문

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

  • - 필수. 검색할 테이블입니다.
  • 수식 - 필수. 각 테이블의 레코드에 의한 수식은 평가됩니다. 함수는 true가 되는 모든 레코드를 반환합니다. 테이블 내의 열을 참조할 수 있습니다. 둘 이상의 수식을 제공하는 경우 모든 수식의 결과는 And 함수와 결합됩니다.

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

  • - 필수. 검색할 테이블입니다.
  • SearchString - 필수. 검색할 문자열입니다. 공백 또는 빈 문자열인 경우 모든 레코드가 반환됩니다.
  • - 필수. 찾을 테이블 내의 열의 이름입니다. 이러한 열의 데이터 내에서 부분 일치 항목으로 SearchString이 발견되는 경우 전체 레코드가 반환됩니다.

참고

버전 3.24042 이전의 Power Apps에서 함수의 Search 열 이름은 큰따옴표를 사용하여 텍스트 문자열로 지정되었으며 데이터 원본에 연결된 경우에도 논리적 이름이어야 했습니다. 예를 들어 큰따옴표가 있는 논리 이름 "cr43e_name"이 따옴표가 없는 표시 이름 Name 대신 사용되었습니다. 공백이 포함된 열 이름이 포함된 SharePoint 및 Excel 데이터 원본의 경우 각 공백은 "_x0020_"로 지정되었습니다. 예를 들어 "열 이름""Column_x0020_Name"으로 지정되었습니다. 이 버전 이후 모든 앱은 이 문서에 설명된 새로운 구문으로 자동 업데이트되었습니다.

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

  • - 필수. 검색할 테이블입니다. UI에서 구문은 함수 상자 위에 source로 표시됩니다.
  • 수식 - 필수. 각 테이블의 레코드에 의한 수식은 평가됩니다. 함수는 true가 되는 첫 번째 레코드를 반환합니다. 테이블 내의 열을 참조할 수 있습니다. UI에서 구문은 함수 상자 위에 condition으로 표시됩니다.
  • ReductionFormula - 선택 사항. 이 수식은 발견된 레코드를 통해 평가된 다음 단일 값으로 레코드를 감소시킵니다. 테이블 내의 열을 참조할 수 있습니다. 이 매개 변수를 사용하지 않는 경우 함수는 테이블의 전체 레코드를 반환합니다. UI에서 구문은 함수 상자 위에 result로 표시됩니다.

예제

다음 예에서는 IceCream데이터 원본을 사용합니다.

아이스크림 데이터 원본.

수식 Description Result
Filter(IceCream, OnOrder > 0) OnOrder가 0보다 큰 레코드를 반환합니다. Filter 순서에 따라.
Filter(IceCream, Quantity + OnOrder > 225) QuantityOnOrder 열의 합이 225보다 큰 레코드를 반환합니다. Filter 수량 및 순서입니다.
Filter(IceCream, Lower(Flavor)의 "chocolate" 대문자 또는 소문자와 관계 없이 "chocolate"이라는 단어가 Flavor 이름에 나타나는 레코드를 반환합니다. Filter 을(를) 아래쪽으로
Filter(IceCream, Quantity < 10 & OnOrder < 20) Quantity가 10보다 작고 OnOrder가 20보다 작은 레코드를 반환합니다. 이러한 조건과 일치하는 레코드가 없으므로 빈 테이블이 반환됩니다. Filter 수량에 대한
Search(IceCream, "choc", Flavor) 대문자 또는 소문자와 관계 없이 "choc"이라는 문자열이 Flavor 이름에 나타나는 레코드를 반환합니다. Search 항목.
Search(IceCream, "", Flavor) 검색어가 비어 있으므로 모든 레코드가 반환됩니다. Search 모든 항목입니다.
LookUp(IceCream, Flavor = "Chocolate", Quantity) 적어도 하나가 있는 "Chocolate"과 같은 Flavor로 레코드를 검색합니다. 발견된 첫 번째 레코드의 경우 해당 레코드의 Quantity를 반환합니다. 100
LookUp(IceCream, Quantity > 150, Quantity + OnOrder) 수량이 150개보다 많은 여러 레코드를 검색합니다. "Vanilla" Flavor인 발견된 첫 번째 레코드의 경우 QuantityOnOrder 열의 합계를 반환합니다. 250
LookUp(IceCream, Flavor = "Pistachio", OnOrder) 하나도 없는 "Pistachio"와 같은 Flavor로 레코드를 검색합니다. 아무 것도 발견되지 않았으므로 Lookup공백을 반환합니다. 공백
LookUp(IceCream, Flavor = "Vanilla") 적어도 하나가 있는 "Vanilla"와 같은 Flavor로 레코드를 검색합니다. 감소가 없는 수식이 제공됐으므로 전체 레코드가 반환됩니다. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

선택 열로 필터링

다음 예에서는 데이터 원본으로 Microsoft Dataverse에서 계정 테이블을 사용합니다. 이 예제에서는 선택한 콤보 상자 컨트롤 값을 기반으로 계정을 나열하는 방법을 Filter 보여 줍니다.

단계별

  1. 비어 있는 앱을 엽니다.

  2. 새 화면 옵션을 선택하여 새 화면을 추가합니다.

  3. 삽입 탭에서 Gallery를 선택한 다음 수직을 선택합니다.

  4. 오른쪽 창의 속성 탭에서 데이터 원본을 연 다음 계정을 선택합니다.

  5. (선택 사항)레이아웃 목록에서 다른 옵션을 선택하세요.

  6. 삽입 탭에서 입력을 선택한 다음 Combo box을 선택합니다. 이 단계를 반복하여 콤보 상자 컨트롤을 두 개 더 추가합니다.

  7. 콤보 상자 컨트롤 각각에 대하여 오른쪽 창의 속성 탭에서 데이터 원본을 연 다음 계정을 선택합니다. 필드 옵션 옆의 편집을 선택한 다음 기본 텍스트SearchField 값을 선택합니다. 기본 텍스트는 콤보 상자에 추가하려는 선택 항목 열이어야 합니다. 이 단계를 반복하여 다른 콤보 상자 컨트롤을 두 개 더 추가합니다.

    콤보 상자 값 설정.

  8. 이제 Gallery 컨트롤을 선택하고 Items 속성을 다음 수식으로 설정합니다.

    Filter(Accounts,
     'Industry' = ComboBox3.Selected.Industry Or IsBlank(ComboBox3.Selected.Industry),
     'Relationship Type' = ComboBox2.Selected.'Relationship Type' Or
       IsBlank(ComboBox2.Selected.'Relationship Type'),
     'Preferred Method of Contact' = ComboBox1.Selected.'Preferred Method of Contact' Or
       IsBlank(ComboBox1.Selected.'Preferred Method of Contact'))
    

    계정 데이터 원본.

Search 사용자 환경

다음 예에서는 IceCream데이터 원본을 사용합니다.

많은 앱에서 하나 이상의 문자를 검색 상자에 입력하여 대규모 데이터 집합의 레코드 목록을 필터링할 수 있습니다. 입력하는 동안 검색 조건과 일치하는 레코드만 목록에 표시됩니다.

이 문서의 나머지 부분에 있는 예제는 다음 데이터가 포함된 고객이라는 목록을 검색한 결과를 보여줍니다.

Search 을 선택합니다.

이 데이터 원본을 컬렉션으로 만들려면 [Button] 컨트롤을 만들고 OnSelect 속성을 다음 수식으로 설정하십시오.

ClearCollect(고객, Table({ 이름: "Fred Garcia", 회사: "Northwind Traders" }, { 이름: "Cole Miller", 회사: "Contoso" }, { 이름: "Glenda Johnson", 회사: "Contoso" }, { 이름: "Mike Collins", 회사: "Adventure Works" }, { 이름: "Colleen Jones", 회사: "Adventure Works" }) )

이 예제에서처럼 화면 하단의 Gallery 컨트롤에 레코드 목록을 표시할 수 있습니다. 화면 상단 가까이에 SearchInput이라는 Text input 컨트롤을 추가할 수 있고, 사용자는 관심 있는 레코드를 지정할 수 있습니다.

Search 검색 입력을 사용합니다.

사용자가 SearchInput에 문자를 입력하면 갤러리의 결과가 자동으로 필터링됩니다. 이 경우 갤러리는 고객 이름(회사 이름 아님)이 SearchInput의 문자 시퀀스로 시작하는 레코드를 표시하도록 구성됩니다. 사용자가 검색 상자에 co를 입력하면 갤러리에 다음 결과가 표시됩니다.

Search 로 시작합니다.

Name 열을 기준으로 필터링하려면 gallery 컨트롤의 Items 속성을 다음 수식 중 하나로 설정하십시오.

수식 Description Result
Filter(Customers, StartsWith(Name, SearchInput.Text) ) Name 열의 시작 부분에 검색 문자열이 나타나는 레코드에 대해 Customers 데이터 원본을 필터링합니다. 이 테스트는 대/소문자를 구분하지 않습니다. 사용자가 검색 상자에 co를 입력하면 갤러리에 Colleen JonesCole Miller가 표시됩니다. Mike Collins는 해당 레코드의 Name 열이 검색 문자열로 시작하지 않기 때문에 갤러리에 표시되지 않습니다. Filter 을 시작합니다.
Filter(Customers, SearchInput.Text in Name) Name 열의 아무 곳에나 나타나는 검색 문자열의 레코드에 대해 Customers 데이터 원본을 필터링합니다. 이 테스트는 대/소문자를 구분하지 않습니다. 사용자가 검색 상자에 co를 입력하면 이러한 레코드의 Name 열 어딘가에 검색 문자열이 나타나기 때문에 갤러리에 Colleen Jones, Cole MillerMike Collins가 표시됩니다. Filter 검색 입력을 사용합니다.
Search(Customers, SearchInput.Text, Name) in 연산자를 사용하는 것과 마찬가지로 함수는 Search 각 레코드의 Name 열 내에서 일치하는 항목을 검색합니다. 열 이름은 큰따옴표로 묶어야 합니다. Search 고객.

회사 열과 이름 열을 포함하도록 검색 범위를 확장할 수 있습니다.

수식 Description Result
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) 검색 문자열(예: co)로 시작하는 Name 열 또는 Company 열의 레코드에 대해 Customers 데이터 원본을 필터링합니다. || 함수 중 하나가 true이면 연산자true입니다. Filter 고객은 먼저 시작합니다.
Filter(Customers, SearchInput.Text in Name || SearchInput. 회사의 텍스트) 검색 문자열(예: co)이 포함된 Name 열 또는 Company 열의 레코드에 대해 Customers 데이터 원본을 필터링합니다. Filter 고객은 입력을 검색합니다.
Search(Customers, SearchInput.Text, Name, Company) in 연산자를 사용하는 것과 마찬가지로 이 Search 함수는 고객 데이터 원본에서 Name 열 또는 회사 열에 검색 문자열(예: co)이 포함된 레코드를 검색합니다. 함수는 Search 여러 열과 여러 개의 연산자를 지정하려는 경우보다 Filter 읽기 및 쓰기가 더 쉽 습니다 . Search 검색 입력이 있는 고객