Funcțiile de filtrare, căutare și căutare
Se aplică pentru: Aplicații Canvas Fluxuri desktop Aplicații bazate pe model Power Platform CLI
Găsește una sau mai multe înregistrări într-un tabel.
Urmăriți acest videoclip pentru a afla cum să utilizați funcțiile Filtru, **Căutare și Căutare :
Notă
Comenzile PAC CLI pac power-fx nu acceptă funcția Căutare .
Descriere
Funcția Filter găsește înregistrări într-un tabel care satisfac o formulă. Utilizați Filtru pentru a găsi un set de înregistrări care corespund unuia sau mai multor criterii și eliminați acele înregistrări care nu le corespund.
Funcția LookUp găsește prima înregistrare într-un tabel care satisface o formulă. Utilizați LookUp pentru a găsi o singură înregistrare care să corespundă unuia sau mai multor criterii.
Pentru ambele, formula este evaluată pentru fiecare înregistrare a tabelului. Înregistrări care au ca rezultat true sunt incluse în rezultat. Pe lângă operatorii normali de formulă, puteți utiliza operatorii in și exactin pentru corespondențe de subșiruri.
Câmpurile înregistrării procesate în prezent sunt disponibile în cadrul formulei. Utilizați operatorul ThisRecord sau pur și simplu faceți referire la câmpuri după nume, așa cum ați face cu orice altă valoare. Operatorul Ca poate fi, de asemenea, utilizat pentru a denumi înregistrarea care este procesată, ceea ce poate face formula dvs. să fie mai ușor de înțeles și înregistrările imbricate să fie accesibile. Pentru informații suplimentare, consultați exemplele de mai jos și lucrul cu domeniul de aplicare al înregistrărilor.
Funcția Search găsește înregistrări într-un tabel care conțin un șir într-una din coloanele lor. Șirul poate apărea oriunde în coloană; de exemplu, căutarea „rob” sau „bert” ar găsi o potrivire într-o coloană care conține „Robert”. Căutarea nu este sensibilă la litere mari și mici. Spre deosebire de Filter și LookUp, funcția Search folosește un singur șir pentru potrivire în locul unei formule.
Filter și Search returnează un tabel care conține aceleași coloane ca tabelul original și înregistrările care corespund criteriilor. LookUp returnează numai prima înregistrare găsită după aplicarea unei formule pentru a reduce înregistrarea la o singură valoare. Dacă nu se găsesc înregistrări, Filter și Search returnează un tabel necompletat, iar LookUp returnează necompletat.
Tabelele sunt o valoare în Power Apps, la fel ca un șir sau un număr. Pot fi transmise și returnate din funcții. Filter, Search și LookUp nu modifică un tabel. În schimb, ei iau un tabel ca argument și returnează un tabel, o înregistrare sau o singură valoare de aici. Pentru mai multe detalii, consultați lucrul cu tabele.
Delegare
Atunci când este posibil, Power Apps va delega operațiunile de filtrare și sortare către sursa de date și va pagina rezultatele la cerere. De exemplu, când porniți o aplicație care arată un control Galerie completat cu date, doar primul set de înregistrări va fi adus inițial pe dispozitiv. Pe măsură ce utilizatorul defilează, se aduc date suplimentare din sursa de date. Rezultatul este un timp de pornire mai rapid pentru aplicație și acces la seturi de date foarte mari.
Cu toate acestea, delegarea nu este posibilă întotdeauna. Sursele de date suportă diverse funcții și diverși operatori cu delegarea. Dacă delegarea completă a unei formule nu este posibilă, mediul de creare va semnala porțiunea care nu poate fi delegată cu un avertisment. Atunci când este posibil, schimbați formula pentru a evita funcțiile și operatorii care nu se pot delega. Lista de delegare prezintă sursele de date și operațiunile care se pot delega.
Dacă delegarea nu este posibilă, Power Apps va extrage doar un set mic de înregistrări la care să se lucreze local. Funcțiile de filtrare și sortare vor funcționa pentru un set redus de înregistrări. Este posibil ca elementele disponibile în Galerie să nu reprezinte întreaga situație, lucru care-i poate deruta pe utilizatori.
Consultați prezentarea generală a delegării pentru mai multe informații.
Sintaxă
Filter(Table*, Formula1 [, *Formula2*, ... ] )
- Table – Obligatoriu. Tabel pentru căutare.
- Formulă(le) - Obligatoriu. Formula în funcție de care este evaluată fiecare înregistrare a tabelului. Funcția returnează toate înregistrările care au ca rezultat true. Puteți face referire la coloane din tabel. Dacă furnizați mai multe formule, rezultatele tuturor formulelor sunt combinate cu funcția And.
Search(Table*, SearchString, Column1 [, *Column2*, ... ] )
- Table – Obligatoriu. Tabel pentru căutare.
- SearchString - Obligatoriu. Șir pentru căutare. Dacă există un șir necompletat sau un șir gol, toate înregistrările sunt returnate.
- Column(s) - Obligatoriu. Numele coloanelor din Table pentru a căuta. Dacă SearchString se găsește în datele oricăreia dintre aceste coloane ca o corespondență parțială, înregistrarea completă va fi returnată.
Notă
În Power Apps înainte de versiunea 3.24042, numele coloanelor pentru funcția Căutare erau specificate cu un șir de text folosind ghilimele duble și, dacă sunt conectate la un sursă de date trebuiau să fie și nume logice. De exemplu, numele logic „cr43e_name” cu ghilimele duble a fost folosit în locul numelui afișat Nume fără ghilimele. Pentru sursele de date SharePoint și Excel care conțin nume de coloane cu spații, fiecare spațiu a fost specificat cu „_x0020_”, de exemplu „Column Name” as „Column_x0020_Name”. După această versiune, toate aplicațiile au fost actualizate automat la noua sintaxă descrisă în acest articol.
LookUp(Table*, Formula [, *ReductionFormula* ] )
- Table – Obligatoriu. Tabel pentru căutare. În IU, sintaxa este prezentată ca sursă deasupra casetei de funcții.
- Formula – Obligatoriu. Formula în funcție de care este evaluată fiecare înregistrare a tabelului. Funcția returnează prima înregistrare care are ca rezultat true. Puteți face referire la coloane din tabel. În IU, sintaxa este prezentată ca o condiție deasupra casetei de funcții.
- ReductionFormula - Opțional. Această formulă este evaluată pe baza înregistrării care a fost găsită și apoi reduce înregistrarea la o singură valoare. Puteți face referire la coloane din tabel. Dacă nu utilizați acest parametru, funcția returnează înregistrarea completă din tabel. În IU, sintaxa este prezentată ca rezultat deasupra casetei de funcții.
Exemple
Următoarele exemple utilizează Înghețatăsursă de date:
Formula | Descriere | Rezultat |
---|---|---|
Filter( IceCream, OnOrder > 0 ) | Returnează înregistrările unde OnOrder este mai mare decât zero. | |
Filter( Înghețată, Cantitate + La comandă > 225 ) | Returnează înregistrări în care suma aferentă pentru coloanele Cantitate și La comandă este mai mare de 225. | |
Filter( Înghețată, "ciocolată" în Lower( Aromă ) ) | Returnează înregistrări în care apare cuvântul "ciocolată" apare în numele Aromă, independent de litere mari sau minuscule. | |
Filtru (înghețată, cantitate < 10 && la comandă < 20) | Returnează înregistrările în care Cantitate este mai mică de 10 și La comandă este mai mică de 20. Nicio înregistrare nu corespunde acestor criterii, astfel încât este returnat un tabel gol. | |
Căutare (înghețată, „choc”, aromă) | Returnează înregistrări în care șirul "cioc" apare în numele Aromă, independent de litere mari sau minuscule. | |
Căutare (înghețată, „”, Aromă) | Deoarece termenul de căutare este gol, toate înregistrările sunt returnate. | |
LookUp (IceCream, Aromă = "Ciocolată", Cantitate) | Caută o înregistrare cu Aromă egal cu „Ciocolată”, dintre care există una. Pentru prima înregistrare găsită returnează Cantitate din acea înregistrare. | 100 |
LookUp( Înghețată, Cantitate> 150, Cantitate + La comandă) | Căutări pentru o înregistrare cu Cantitate mai mare de 150, dintre care sunt multiple. Pentru prima înregistrare care a fost găsită, care este Aroma "Vanilie", returnează suma pentru coloanele Cantitate și La comandă. | 250 |
LookUp (Înghețată, Aromă = "Fistic", La comandă) | Căutări pentru o înregistrare cu Aromă egală cu "Fistic", dintre care nu există niciuna. Pentru că nu se găsește niciunul, Căutarea returnează necompletat. | blank |
LookUp (Înghețată, Aromă = "Vanilie" ) | Caută o înregistrare cu Aromă egal cu „Vanilie”, dintre care există una. Deoarece nu a fost furnizată o formulă de reducere, este returnată întreaga înregistrare. | { Aromă: "Vanilie", Cantitate: 200, La comandă: 75 } |
Filtrare cu coloane de alegere
Următorul exemplu folosește tabelul Cont în Microsoft Dataverse ca sursă de date. Acest exemplu arată cum să se facă Filtrare pentru lista conturilor pe baza valorilor de control selectate ale casetei combo:
Pas cu pas
Deschideți o aplicație necompletată.
Adăugați un ecran nou selectând opțiunea Ecran nou.
Pe fila Inserare, selectați Galerie apoi selectați Vertical.
Pe fila Proprietăți a panoului din dreapta, deschideți Sursă de date și apoi selectați Conturi.
(Opțional) În lista Aspect selectați diferite opțiuni.
Pe fila Inserare, selectați Intrare apoi selectați Casetă combo. Repetați pasul pentru a adăuga încă două controale din caseta combo.
Pentru fiecare comandă de casetă combo, pe fila Proprietăți a panoului din dreapta, deschideți Sursă de date și apoi selectați Conturi. Selectați Editați chiar lângă opțiunea Câmpuri și apoi selectați valorile Text primar și SearchField. Text primar ar trebui să fie coloana de opțiuni pe care doriți să o adăugați în caseta combo. Repetați pasul pentru încă două controale din caseta combo.
Acum selectați controlul Galerie și setați proprietatea Elemente pentru următoarea formulă:
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'))
Experiența de căutare a utilizatorului
Următoarele exemple utilizează Înghețatăsursă de date:
În multe aplicații, puteți tasta unul sau mai multe caractere într-o casetă de căutare pentru a filtra o listă de înregistrări într-un set mare de date. Pe măsură ce tastați, lista afișează doar acele înregistrări care corespund criteriilor de căutare.
Exemplele din restul acestui articol arată rezultatele căutării într-o listă, denumită Clienți, care conține aceste date:
Pentru a crea această sursă de date ca o colecție, creați un control Button și setați proprietatea acestuia OnSelect conform următoarei formule:
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" }) )
După cum se arată în acest exemplu, puteți afișa o listă de înregistrări într-un Control galerie în partea de jos a unui ecran. În partea de sus a ecranului, puteți adăuga un control Introducere text, numit SearchInput, astfel încât utilizatorii să poată specifica ce înregistrări îi interesează.
Pe măsură ce utilizatorul tastează caractere în SearchInput, rezultatele din galerie sunt filtrate automat. În acest caz, galeria este configurată pentru a afișa înregistrări pentru care numele clientului (nu numele companiei) începe cu secvența de caractere din SearchInput. Dacă utilizatorul introduce co în caseta de căutare, galeria arată aceste rezultate:
Pentru a filtra pe baza coloanei Name, setați proprietatea Items a controlului galeriei la una dintre aceste formule:
Formulă | Descriere | Rezultat |
---|---|---|
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) | Filtrează sursa de date Customers pentru înregistrări în care șirul de căutare apare la începutul coloanei Name. Testul nu este sensibil la literele mari și mici. Dacă utilizatorul tastează co în caseta de căutare, galeria afișează Colleen Jones și Cole Miller. Galeria nu afișează Mike Collins deoarece coloana Name pentru respectiva înregistrare nu începe cu șirul de căutare. | |
Filter( Customers, SearchInput.Text in Name ) | Filtrează sursa de date Customers pentru înregistrări în care șirul de căutare apare oriunde în coloana Name. Testul nu este sensibil la literele mari și mici. Dacă utilizatorul tastează co în caseta de căutare, galeria afișează Colleen JonesCole Miller, și Mike Collins deoarece șirul de căutare apare într-o anumită parte a coloanei Name pentru toate acele înregistrări. | |
Căutare (Clienți, SearchInput.Text, Nume) | Asemenea operatorului in, funcția Search caută o potrivire oriunde în interiorul coloanei Name a fiecărei înregistrări. Trebuie să încadrați numele coloanei între ghilimele duble. |
Puteți extinde căutarea pentru a include coloana Companie și coloana Nume:
Formula | Descriere | Rezultat |
---|---|---|
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) | Filtrează sursa de date Customers pentru înregistrări în care coloana Name sau coloana Company începe cu șirul de căutare (de exemplu, co). || Operator este true dacă funcția StartsWith este true. | |
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) | Filtrează sursa de date Customers pentru înregistrări în care coloana Name sau coloana Company conține șirul de căutare (de exemplu, co) oriunde în interior. | |
Căutare (Clienți, SearchInput.Text, Nume, Companie) | Asemenea operatorului in, funcția Search caută în sursa de date Customers înregistrări în care coloana Name sau Company conține șirul de căutare (de exemplu, co) oriunde în interior. Funcția Search este mai ușor de citit și de scris decât Filter dacă doriți să specificați mai multe coloane și mai mulți operatori in. |