Funkcje Filter i LookUp
Dotyczy: Aplikacje kanwy Przepływy pulpitu Aplikacje oparte na modelu Interfejs Power Pages Power Platform wiersza polecenia aplikacji opartych na modelu
Znajdowanie jednego lub wielu rekordów w tabeli.
Obejrzyj ten film, aby dowiedzieć się, jak używać funkcji Filtr, **Wyszukiwanie i Szukanie:
Uwaga
Polecenia PAC CLI pac power-fx nie obsługują funkcji wyszukiwania .
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 rekordy, 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 Filtrowanie i wyszukiwanie 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 są wartością w Power Apps, podobnie jak ciąg znaków lub liczba. Mogą być przekazywane do funkcji i zwracane przez funkcje. Funkcje Filtrowanie , wyszukiwanie i wyszukiwanie 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
Filtr(Tabela*, Formuła1 [, *Formuła2*, ... ] )
- Tabela - Wymagane. Tabela wyszukiwania.
- Formuły - 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.
Szukaj(Tabela*, CiągWyszukiwania; Kolumna1 [, *Kolumna2*, ... ] )
- Tabela - Wymagane. Tabela wyszukiwania.
- SearchString - wymagane. Ciąg do wyszukania. W przypadku pustej wartości lub ciągu pustego zwracane są wszystkie rekordy.
- Kolumny - Wymagane. Nazwy kolumn w Tabeli do wyszukiwania. 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 Power Apps przed wersją 3.24042 nazwy kolumn dla funkcji Wyszukiwania były określane za pomocą ciągu tekstowego z podwójnymi cudzysłowami, a jeśli były połączone ze źródłem danych, musiały być również nazwami logicznymi. Na przykład nazwa logiczna "cr43e_name" z podwójnymi cudzysłowami została użyta zamiast nazwy wyświetlanej Nazwa bez cudzysłowów. W przypadku źródeł danych SharePoint i Excel, które zawierają nazwy kolumn ze spacjami, każda spacja została określona za pomocą "_x0020_", na przykład "Column Name" jako "Column_x0020_Name". Po tej wersji wszystkie aplikacje zostały automatycznie zaktualizowane do nowej składni opisanej w tym artykule.
LookUp(Tabela*, Formuła [; FormułaRedukcji ] )
- Tabela - Wymagane. Tabela wyszukiwania. W interfejsie użytkownika składnia jest wyświetlana jako źródło powyżej pola funkcji.
- Formuła - 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.
- Formuła redukcji- Opcjonalna. 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:
Formuła | opis | Result |
---|---|---|
Filtr(Lody, Na zamówienie > 0) | Zwraca rekordy, w których wartość w kolumnie OnOrder jest większa od zera. | |
Filtr(Lody, ilość + na zamówienie > 225) | Zwraca rekordy, w których suma wartości kolumn Quantity i OnOrder jest większa niż 225. | |
Filtr(Lody, "czekolada" w niższym (smaku)) | Zwraca rekordy, w których wyraz „chocolate” pojawia się w nazwie w kolumnie Flavor, niezależnie od wielkości liter. | |
Filtr(Lody, ilość < 10 & Na zamówienie < 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. | |
Szukaj(Lody, "czekolada", Smak) | Zwraca rekordy, w którym ciąg „choc” pojawia się w nazwie w kolumnie Flavor, niezależnie od wielkości liter. | |
Szukaj(Lody, "", Smak) | Ponieważ termin wyszukiwania jest pusty, zwracane są wszystkie rekordy. | |
LookUp(Lody, Smak = "Czekolada", Ilość) | 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(Lody, Ilość > 150, Ilość + Na Zamówienie) | 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(Lody, Smak = "Pistacja", Na Zamówienie) | 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ą. | pusty |
LookUp(Lody, Smak = "Wanilia") | 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
Otwieranie pustej aplikacji.
Dodaj nowy ekran, wybierając opcję Nowy ekran.
Na karcie Wstawianie wybierz pozycję Galeria, a następnie wybierz pozycję Pionowa.
Na karcie Właściwości w prawym okienku otwórz źródło danych a następnie wybierz opcję Konta.
(opcjonalnie) Z listy Układ wybierz różne opcje.
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.
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.
Teraz wybierz kontrolkę Gallery i ustaw właściwość Items na następującą formułę:
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'))
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 Customers, która zawiera następujące dane:
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(Klienci, Stół({ Imię: "Fred Garcia", Firma: "Northwind Traders" }, { Nazwa: "Cole Miller", Firma: "Contoso" }, { Nazwa: "Glenda Johnson", Firma: "Contoso" }, { Nazwa: "Mike Collins", Firma: "Adventure Works" }, { Nazwa: "Colleen Jones", Firma: "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ą.
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:
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. | |
Filter(Customers, SearchInput.Text w nazwie) | 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. | |
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. |
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. | |
Filter(Customers, SearchInput.Text in Name || Wyszukiwanie danych wejściowych. Tekst w firmie) | 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. | |
Search(Klienci, SearchInput.Text, Nazwa, Firma) | 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. |