Funkcje Filter i LookUp

Dotyczy: Aplikacje oparte na kanwie Przepływy pulpitu Aplikacje oparte na modelach Power Platform CLI

Znajdowanie jednego lub wielu rekordów w tabeli.

Obejrzyj ten film, aby dowiedzieć się, jak używać funkcji Filtr, Wyszukiwanie i Szukanie:

Uwaga

Polecenia power-fx PAC CLI nie obsługują funkcji Wyszukiwanie.

Popis

Funkcja Filter znajduje rekordy w tabeli, które spełniają warunki formuły. Użyj funkcji Filter, aby znaleźć rekordy spełniające kryteria i odrzucić te, które ich nie spełniają.

Funkcja LookUp znajduje pierwszy rekord w tabeli spełniający warunki formuły. Użyj funkcji LookUp, aby znaleźć pojedynczy rekord, który spełnia co najmniej jedno kryterium.

W obu przypadkach formuła jest oceniana dla każdego rekordu w tabeli. Rekordy, które dają wynik true, są uwzględniane w wyniku. Oprócz normalnych operatorów formuły można użyć operatorów in i exactin dla dopasowań podciągów.

Pola aktualnie przetwarzanego rekordu są dostępne w obrębie formuły. Użyj operatora ThisRecord lub po prostu odwołuj się do pól, używając ich nazw, tak jak w przypadku każdej innej wartości. Możesz też użyć operatora As w celu nadania nazwy przetwarzanemu rekordowi, co umożliwi utworzenie bardziej zrozumiałej formuły oraz dostęp do zagnieżdżonych rekordów. Aby uzyskać więcej informacji, zobacz poniższe przykłady oraz temat Praca z zakresem rekordów.

Funkcja Search znajduje w tabeli rekordy, które w jednej z kolumn zawierają podany ciąg. Ciąg może występować w dowolnym miejscu w kolumnie, na przykład wyszukiwanie ciągu „rob” i „bert” spowoduje znalezienie dopasowania w kolumnie zawierającej wartość „Robert”. Wyszukiwanie jest wykonywane bez uwzględniania wielkości liter. W odróżnieniu od funkcji Filter i LookUp funkcja Search używa pojedynczego ciągu zamiast formuły w celu znalezienia dopasowania.

Funkcje Filter i Search zwracają tabelę, która zawiera te same kolumny co oryginalna tabela oraz rekordy spełniające kryteria. Funkcja LookUp zwraca tylko pierwszy znaleziony rekord, po zastosowaniu formuły w celu zredukowania rekordu do pojedynczej wartości. Jeśli żadne rekordy nie zostaną znalezione, funkcje Filter i Search zwracają pustą tabelę, a funkcja LookUp zwraca pustą wartość.

Tabele to wartość w usłudze Power Apps, podobnie jak ciąg lub liczba. Mogą być przekazywane do funkcji i zwracane przez funkcje. Funkcje Filter, Search i LookUp nie modyfikują tabeli. Zamiast tego przyjmują one tabelę jako argument i zwracają tabelę, rekord lub pojedynczą wartość z tabeli. Aby uzyskać więcej szczegółów, zobacz artykuł dotyczący pracy z tabelami.

Delegowanie

Gdy będzie to możliwe, usługa Power Apps będzie delegować operacje filtrowania i sortowania do źródła danych oraz strony, za pośrednictwem której zażądano wyników. Na przykład, gdy uruchomisz aplikację wyświetlającą kontrolkę Galeria wypełnioną danymi, tylko pierwszy zestaw rekordów zostanie wstępnie dostarczony na urządzenie. Gdy użytkownik będzie przewijał, dodatkowe dane będą pobierane ze źródła danych. Wynikiem tego jest krótszy czas uruchamiania aplikacji oraz możliwość uzyskiwania dostępu do bardzo dużych zestawów danych.

Jednak delegowanie nie zawsze jest możliwe. Źródła danych różnią się pod względem funkcji i operatorów, które obsługują w przypadku delegowania. Jeśli nie będzie można zakończyć delegowania formuły, środowisko tworzenia oflaguje część, której nie można delegować, za pomocą ostrzeżenia. Gdy jest to możliwe, należy rozważyć zmianę formuły, tak aby nie zawierała funkcji i operatorów, których nie można delegować. Lista delegowania zawiera szczegółowe informacje na temat tego, które źródła danych i operacje można delegować.

Jeśli delegowanie nie jest możliwe, usługa Power Apps ściąga tylko niewielki zestaw rekordów, nad którym można pracować lokalnie. Funkcje filtrowania i sortowania będą wykonywane na ograniczonym zestawie rekordów. Dlatego też informacje dostępne w kontrolce Galeria mogą być niekompletne, co z kolei może być mylące dla użytkowników.

Zobacz Omówienie delegowania, aby uzyskać więcej informacji.

Składnia

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

  • Tabela – wymagane. Tabela wyszukiwania.
  • Formuła – wartości wymagane. Formuła, przy użyciu której oceniany jest każdy rekord tabeli. Funkcja zwraca wszystkie rekordy, które dają wynik true. Można odwoływać się do kolumn w tabeli. Jeśli zostanie podana więcej niż jedna formuła, wyniki wszystkich formuł są łączone za pomocą funkcji And.

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

  • Tabela – wymagane. Tabela wyszukiwania.
  • SearchString – wymagane. Ciąg do wyszukania. W przypadku pustej wartości lub ciągu pustego zwracane są wszystkie rekordy.
  • Column(s) – wymagane. Nazwy kolumn w Tabeli do wyszukiwania. Kolumny do wyszukiwania muszą zawierać tekst. Nazwy kolumn muszą być ciągami i muszą być ujęte w podwójny cudzysłów. Nazwy kolumn muszą być jednak statyczne i nie mogą być obliczane przy użyciu formuły. Jeśli CiągWyszukiwania zostanie znaleziony w danych którejkolwiek z tych kolumn jako dopasowanie częściowe, zostanie zwrócony cały rekord.

Uwaga

W przypadku źródeł danych SharePoint i Excel, które zawierają nazwy kolumn ze spacjami, każdą spację należy określać jako "_x0020_".. Na przykład wartość "Nazwa kolumny" należy określić jako "Nazwa_x0020_kolumny".

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

  • Tabela – wymagane. Tabela wyszukiwania. W interfejsie użytkownika składnia jest wyświetlana jako źródło powyżej pola funkcji.
  • Formula - wymagane. Formuła, przy użyciu której oceniany jest każdy rekord tabeli. Funkcja zwraca pierwszy rekord, który daje wynik true. Można odwoływać się do kolumn w tabeli. W interfejsie użytkownika składnia jest wyświetlana jako warunek powyżej pola funkcji.
  • ReductionFormula – parametr opcjonalny. Ta formuła jest oceniana w rekordzie, który został znaleziony, a następnie redukuje rekord do pojedynczej wartości. Można odwoływać się do kolumn w tabeli. Jeśli ten parametr nie jest używany, funkcja zwraca pełny rekord z tabeli. W interfejsie użytkownika składnia jest wyświetlana jako wynik powyżej pola funkcji.

Przykłady

W poniższych przykładach używane jest IceCreamjako źródło danych:

Źródło danych o nazwie Ice cream.

Formuła opis Result
Filter( IceCream, OnOrder > 0 ) Zwraca rekordy, w których wartość w kolumnie OnOrder jest większa od zera. Filtr w kolejności.
Filter( IceCream, Quantity + OnOrder > 225 ) Zwraca rekordy, w których suma wartości kolumn Quantity i OnOrder jest większa niż 225. Filtrowanie ilości i zamówienia.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Zwraca rekordy, w których wyraz „chocolate” pojawia się w nazwie w kolumnie Flavor, niezależnie od wielkości liter. Filtruj w dolnej części.
Filter( IceCream, Quantity <10 && OnOrder <20 ) Zwraca rekordy, w których wartość w kolumnie Quantity jest mniejsza niż 10 i wartość w kolumnie OnOrder jest mniejsza niż 20. Żadne rekordy nie odpowiadają tym kryteriom, więc zwracana jest pusta tabela. Filtrowanie według ilości.
Search( IceCream, "choc", "Flavor" ) Zwraca rekordy, w którym ciąg „choc” pojawia się w nazwie w kolumnie Flavor, niezależnie od wielkości liter. Szukane elementy.
Search( IceCream, "", "Flavor" ) Ponieważ termin wyszukiwania jest pusty, zwracane są wszystkie rekordy. Przeszukaj wszystkie elementy.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Wyszukuje rekord z wartością kolumny Flavor równą „Chocolate”. W tym przypadku jest jeden taki rekord. Dla pierwszego znalezionego rekordu zwraca wartość kolumny Quantity tego rekordu. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Wyszukuje rekord z wartością kolumny Quantity większą niż 150. W tym przypadku jest wiele takich rekordów. Dla pierwszego znalezionego rekordu, którym jest rekord z wartością „Vanilla” w kolumnie Flavor, zwraca sumę kolumn Quantity i OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Wyszukuje rekord z wartością kolumny Flavor równą „Pistachio”. W tym przypadku nie ma żadnego takiego rekordu. Ponieważ nic nie znaleziono, funkcja Lookup zwraca wartość pustą. puste
LookUp( IceCream, Flavor = "Vanilla" ) Wyszukuje rekord z wartością kolumny Flavor równą „Vanilla”. W tym przypadku jest jeden taki rekord. Ponieważ została podana formuła redukcyjna, zwracany jest cały rekord. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Filtrowanie przy użyciu kolumn wyboru

W następującym przykładzie przedstawiono tabelę Konto jako Microsoft Dataverse źródło danych. W tym przykładzie pokazano, jak Filter listę kont na podstawie wybranych wartości formantu Combo box:

Krok po kroku

  1. Otwieranie pustej aplikacji.

  2. Dodaj nowy ekran, wybierając opcję Nowy ekran.

  3. Na karcie Wstawianie wybierz pozycję Galeria, a następnie wybierz pozycję Pionowa.

  4. Na karcie Właściwości w prawym okienku otwórz źródło danych a następnie wybierz opcję Konta.

  5. (opcjonalnie) Z listy Układ wybierz różne opcje.

  6. Na karcie Wstawianie wybierz pozycję Dane wejściowe, a następnie wybierz pozycję Pole kombi. Powtórz ten krok, aby dodać dwa kolejne formanty pola kombi.

  7. Dla każdego pola kombi na karcie Właściwości w prawym okienku otwórz źródło danych a następnie wybierz opcję Konta. Wybierz opcję Edytuj obok opcji Pola, a następnie wybierz wartości Tekst podstawowy i SearchField. Tekst podstawowy powinien być kolumną, którą chcesz dodać do pola kombi. Powtórz ten krok dla pozostałych dwóch formantów pola kombi.

    Ustawianie wartości pola kombi.

  8. Teraz wybierz kontrolkę Gallery i ustaw właściwość Items na następującą formułę:

    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'))
    

    Źródło danych kont.

Wyszukiwanie – środowisko użytkownika

W poniższych przykładach używane jest IceCreamjako źródło danych:

W wielu aplikacjach możesz wpisać jeden lub większą liczbę znaków w polu wyszukiwania, aby filtrować listę rekordów dużego zestawu danych. W miarę wpisywania lista jest odświeżana, aby zawierała tylko te rekordy, które spełniają kryteria wyszukiwania.

W przykładach w pozostałej części tego tematu przedstawiono wyniki wyszukiwania na liście o nazwie Klienci, która zawiera następujące dane:

Wyszukaj klientów.

Aby utworzyć to źródło danych jako kolekcję, utwórz kontrolkę Button i ustaw jej właściwość OnSelect na następującą formułę:

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" }) )

Jak w poniższym przykładzie, można wyświetlić listę rekordów w kontrolce Galeria u dołu ekranu. W górnej części ekranu można dodać kontrolkę Text input o nazwie SearchInput, dzięki której użytkownicy będę mogli określić, które rekordy ich interesują.

Szukaj za pomocą metody wyszukiwania.

Podczas wpisywania znaków w kontrolce SearchInput wyniki w galerii są automatycznie filtrowane. W tym przypadku galeria jest skonfigurowana do wyświetlania rekordów, dla których nazwa klienta (nie nazwa firmy) rozpoczyna się od sekwencji znaków w kontrolce SearchInput. Jeśli użytkownik wpisze ciąg co w polu wyszukiwania, w galerii zostaną wyświetlone następujące wyniki:

Wyszukiwanie rozpoczyna się od.

Aby filtrować na podstawie kolumny Name, ustaw właściwość Items kontrolki galerii na jedną z poniższych formuł:

Wzór Opis Wynik
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Filtruje źródło danych Customers, aby uzyskać rekordy, w których ciąg wyszukiwania występuje na początku wartości w kolumnie Name. W teście nie jest uwzględniana wielkość liter. Jeśli użytkownik wpisze ciąg co w polu wyszukiwania, w galerii zostaną wyświetleni klienci Colleen Jones i Cole Miller. W galerii nie zostanie wyświetlony klient Mike Collins, ponieważ wartość w kolumnie Name tego rekordu nie rozpoczyna się od ciągu wyszukiwania. Filtruj od początku do.
Filter( Customers, SearchInput.Text in Name ) Filtruje źródło danych Customers, aby uzyskać rekordy, w których ciąg wyszukiwania występuje w dowolnym miejscu wartości w kolumnie Name. W teście nie jest uwzględniana wielkość liter. Jeśli użytkownik wpisze ciąg co w polu wyszukiwania, w galerii zostaną wyświetleni klienci Colleen Jones,Cole Miller, i Mike Collins, ponieważ ciąg wyszukiwania występuje w wartości kolumny Name każdego z tych rekordów. Filtruj przy użyciu danych wejściowych wyszukiwania.
Search( Customers, SearchInput.Text, "Name" ) Podobnie jak w przypadku użycia operatora in, funkcja Search wyszukuje zgodny ciąg w dowolnym miejscu wartości kolumny Name każdego rekordu. Pamiętaj, że nazwę kolumny należy ująć w cudzysłów. Wyszukaj klientów.

Wyszukiwanie można rozszerzyć, aby oprócz kolumny Name objęło także kolumnę Company:

Formuła Opis Wynik
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Filtruje źródło danych Customers, aby uzyskać rekordy, w których ciąg wyszukiwania (na przykład co) występuje na początku wartości kolumny Name lub kolumny Company. ||Operator zwraca wartość true jeśli funkcja StartsWith ma wartość true. Filtruj klientów od początku do.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Filtruje źródło danych Customers, aby uzyskać rekordy, w których ciąg wyszukiwania (na przykład co) występuje w dowolnym miejscu wartości kolumny Name lub kolumny Company. Filtruj klientów przy użyciu danych wejściowych wyszukiwania.
Search( Customers, SearchInput.Text, "Name", "Company" ) Podobnie jak w przypadku użycia operatora in, funkcja Search przeszukuje źródło danych Customers, aby uzyskać rekordy, w których ciąg wyszukiwania (na przykład co) występuje w dowolnym miejscu wartości kolumny Name lub kolumny Company. Funkcja Search jest czytelniejsza i łatwiej ją zapisać niż funkcję Filter, jeśli chcesz określić wiele kolumn i wiele operatorów in. Nazwy kolumn należy ująć w podwójne cudzysłowy. Wyszukaj klientów za pomocą danych wejściowych wyszukiwania.