Power Apps의 Filter, Search 및 LookUp 함수

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

설명

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

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

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

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

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

FilterSearch 는 원본 테이블과 동일한 열을 포함하는 테이블 및 조건과 일치하는 레코드를 반환합니다. LookUp 은 단일 값으로 레코드를 줄이기 위해 수식을 적용한 후 발견한 첫 번째 레코드만을 반환합니다. 레코드가 발견되지 않는 경우 FilterSearch 테이블을 반환하고 LookUp공백 을 반환합니다.

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

위임

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

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

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

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

구문

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

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

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

  • Table - 필수 항목입니다. 검색할 테이블입니다.
  • SearchString - 필수 항목입니다. 검색할 문자열입니다. 공백 또는 빈 문자열인 경우 모든 레코드가 반환됩니다.
  • Column(s) - 필수 항목입니다. 찾을 테이블 내의 열의 이름입니다. 검색할 열은 텍스트를 포함해야 합니다. 열 이름은 문자열이어야 하며 큰따옴표로 묶여야 합니다. 그러나 열 이름은 정적이어야 하며 수식으로 계산될 수 없습니다. 이러한 열의 데이터 내에서 부분 일치 항목으로 SearchString 이 발견되는 경우 전체 레코드가 반환됩니다.

참고

공백이 있는 열 이름이 포함된 SharePoint 및 Excel 데이터 원본의 경우 각 공백을 "_x0020_" 으로 지정합니다. 예를 들어, "Column Name""Column_x0020_Name" 으로 지정합니다.

LookUp(Table*, Formula [, ReductionFormula ] )

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

예제

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

아이스크림 데이터 원본

수식 설명 결과
Filter( IceCream, OnOrder > 0 ) OnOrder 가 0보다 큰 레코드를 반환합니다. 주문에 대한 필터
Filter( IceCream, Quantity + OnOrder > 225 ) QuantityOnOrder 열의 합이 225보다 큰 레코드를 반환합니다. 수량 및 주문 필터
Filter( IceCream, "chocolate" in Lower( Flavor ) ) 대문자 또는 소문자와 관계 없이 "chocolate"이라는 단어가 Flavor 이름에 나타나는 레코드를 반환합니다. 더 낮은 필터
Filter(IceCream, Quantity < 10 && OnOrder < 20) Quantity 가 10보다 작고 OnOrder 가 20보다 작은 레코드를 반환합니다. 이러한 조건과 일치하는 레코드가 없으므로 빈 테이블이 반환됩니다. 수량 필터
Search( IceCream, "choc", "Flavor" ) 대문자 또는 소문자와 관계 없이 "choc"이라는 문자열이 Flavor 이름에 나타나는 레코드를 반환합니다. 항목 검색
Search( IceCream, "", "Flavor" ) 검색어가 비어 있으므로 모든 레코드가 반환됩니다. 모든 항목 검색
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 로 레코드를 검색합니다. 아무 것도 발견되지 않았으므로 조회공백 을 반환합니다. blank
LookUp( IceCream, Flavor = "Vanilla" ) 적어도 하나가 있는 "Vanilla"와 같은 Flavor 로 레코드를 검색합니다. 감소가 없는 수식이 제공됐으므로 전체 레코드가 반환됩니다. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

선택 열로 필터링

다음 예에서는 데이터 원본으로 Microsoft Dataverse에서 계정 테이블을 사용합니다. 이 예는 선택한 콤보 상자 컨트롤 값을 기반으로 하는 계정의 목록을 필터 하는 방법을 나타냅니다.

단계별

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

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

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

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

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

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

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

    콤보 상자 값 설정

  8. 이제 갤러리 컨트롤을 선택하고 항목 속성을 다음 수식으로 설정합니다.

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

    계정 데이터 원본

검색 사용자 환경

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

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

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

고객 검색

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

ClearCollect(고객, 테이블({ 이름: "프레드 가르시아", 회사: "정문 상사" }, { 이름: "콜 밀러", 회사: "Contoso" }, { 이름: "글렌다 존슨", 회사: "Contoso" }, { 이름: "마이크 콜린", 회사: "동광 통상" }, { 이름: "콜린 존스", 회사: "동광 통상" }) )

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

입력 검색을 사용하여 검색

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

다음으로 시작하는 검색

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

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

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

수식 설명 결과
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) 검색 문자열(예: co)로 시작하는 Name 열 또는 Company 열의 레코드에 대해 Customers 데이터 원본을 필터링합니다. StartsWith 함수 중 하나가 true 이면 || 연산자true 입니다. 다음으로 시작하는 고객 필터링
Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company ) 검색 문자열(예: co)이 포함된 Name 열 또는 Company 열의 레코드에 대해 Customers 데이터 원본을 필터링합니다. 고객 검색 입력으로 필터링
Search( Customers, SearchInput.Text, "Name", "Company" ) in 연산자를 사용하는 경우와 유사하게, Search 함수는 검색 문자열(예: co)이 포함된 Name 열 또는 Company 열의 레코드에 대해 Customers 데이터 원본을 검색합니다. 여러 열 및 다수의 in 연산자를 지정하는 경우 Search 함수가 Filter 보다 읽고 쓰기가 쉽습니다. 열의 이름은 큰따옴표로 묶어야 합니다. 검색 입력으로 고객 검색