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:

Înghețată sursă de date.

Formula Descriere Rezultat
Filter( IceCream, OnOrder > 0 ) Returnează înregistrările unde OnOrder este mai mare decât zero. Filtru La comandă.
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. Filtrați cantitatea și comanda.
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. Filtrați în jos.
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. Filtrați după cantitate.
Căutare (înghețată, „choc”, aromă) Returnează înregistrări în care șirul "cioc" apare în numele Aromă, independent de litere mari sau minuscule. Căutați articole.
Căutare (înghețată, „”, Aromă) Deoarece termenul de căutare este gol, toate înregistrările sunt returnate. Căutați toate articolele.
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

  1. Deschideți o aplicație necompletată.

  2. Adăugați un ecran nou selectând opțiunea Ecran nou.

  3. Pe fila Inserare, selectați Galerie apoi selectați Vertical.

  4. Pe fila Proprietăți a panoului din dreapta, deschideți Sursă de date și apoi selectați Conturi.

  5. (Opțional) În lista Aspect selectați diferite opțiuni.

  6. Pe fila Inserare, selectați Intrare apoi selectați Casetă combo. Repetați pasul pentru a adăuga încă două controale din caseta combo.

  7. 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.

    Setarea valorilor casetei combinate.

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

    Conturi sursă de date.

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:

Cauta pe clienti.

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ă.

Căutați folosind intrarea de căutare.

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:

Căutarea cu începe cu.

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. Filtrați cu începe cu.
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. Filtrați cu intrare de căutare.
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. Căutați clienți.

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. Filtrați clienții încep cu.
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. Filtrați intrarea în căutarea clienților.
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.  Căutați clienți cu ajutorul datelor de căutare.