Filter-, Search- ja LookUp-funktio
Koskee seuraavia: pohjaan perustuvat sovellukset työpöytätyönkulut Mallipohjaisten sovellusten Power Pages Power Platform CLI
Etsii vähintään yhden tietueentaulukosta.
Tutustu tällä videolla funktioiden Filter, **Search, ja LookUp käyttöön:
Muistiinpano
PAC CLI pac power-fx -komennot eivät tue hakutoimintoa .
Description
Filter-funktio löytää taulukosta tietueet, jotka vastaavat kaavaa. Käytä Filter-funktiota etsimään tietuejoukko, joka vastaa yhtä tai useampaa ehtoa, ja poistamaan muut tietueet.
LookUp-funktio etsii taulukosta ensimmäisen tietueen, joka täyttää kaavan. Käytä LookUp-funktiota etsimään yksittäinen tietue, joka vastaa yhtä tai useampaa ehtoa.
Kumpikin kaava lasketaan taulukon jokaiselle tietueelle. Tulokseen sisällytetään tietueet, joiden tulos on true. Normaalien kaavan operaattoreiden lisäksi voit käyttää in- ja exactin-operaattoreita alimerkkijonojen vastaavuuksille.
Parhaillaan käsiteltävän tietueen kentät ovat kaavan käytettävissä. Käytä ThisRecord-operaattoria tai viittaa kenttiin nimellä muiden arvojen tapaan. As-operaattoria voidaan käyttää myös käsiteltävän tietueen nimeämiseen, mikä voi auttaa tekemään kaavasta helpommin ymmärrettävän ja mahdollistaa sisäkkäisten tietueiden käytön. Lisätietoja on seuraavissa esimerkeissä ja tietueen vaikutusalueen käsittelyn ohjeessa.
Search-funktio etsii taulukosta tietueet, jotka sisältävät merkkijonon yhdessä niiden sarakkeista. Merkkijono saattaa sijaita missä tahansa sarakkeen kohdassa. Esimerkiksi hakusanat ”rob” ja ”bert” löytävät molemmat sarakkeen, jossa lukee ”Robert”. Haun kirjainkoolla ei ole merkitystä. Toisin kuin Filter ja LookUp, Search-funktio käyttää vastaavuuden etsimiseen yksittäistä merkkijonoa, ei kaavaa.
Suodatus ja haku palauttaa taulukon, joka sisältää samat sarakkeet kuin alkuperäinen taulukko ja ehtoja vastaavat tietueet. LookUp palauttaa vain ensimmäisen löydetyn tietueen sen jälkeen, kun kaavan avulla tietue on pienennetty yhdeksi arvoksi. Jos tietueita ei löydy, Filter ja Search palauttavat tyhjän taulukon, ja LookUp palauttaa arvon tyhjä.
Taulukot ovat arvo sisään Power Apps, aivan kuten merkkijono tai luku. Ne voidaan välittää funktioihin ja niitä voidaan palauttaa funktioista. Suodatin, Haku ja Haku eivät muokkaa taulukkoa. Sen sijaan ne kohtelevat taulukkoa argumenttina, josta ne palauttavat taulukon, tietueen tai yksittäisen arvon. Lisätietoja on kohdassa taulukoiden käsitteleminen.
Delegointi
Jos mahdollista, Power Apps delegoi suodatus- ja lajittelutoiminnot tietolähteeseen ja näyttää tulokset tarvittaessa sivu kerrallaan. Kun esimerkiksi käynnistät sovelluksen, jossa on Galleria-ohjausobjekti tietoineen, laitteeseen tuodaan aluksi vain ensimmäinen tietuejoukko. Käyttäjän vierittäessä alaspäin tietolähteestä tuodaan lisää tietoja. Näin sovellus käynnistyy nopeammin ja se voi käyttää suuria tietojoukkoja.
Delegointi ei kuitenkaan aina ole mahdollista. Tietolähteiden tukemat delegointitoiminnot ja -operaattorit vaihtelevat. Jos kaavan täysi delegointi ei ole mahdollista, muokkausympäristö merkitsee varoituksella osan, jota ei voi delegoida. Jos mahdollista, muuta kaavaa siten, että se välttää toimintoja ja operaattoreita, joita ei voi delegoida. Delegointiluettelossa on mainittu tietolähteet ja toiminnot, jotka voidaan delegoida.
Jos delegointi ei ole mahdollista, Power Apps noutaa vain pienen joukon tietueita paikallista käsittelyä varten. Suodatus- ja lajittelutoiminnot käsittelevät tietueiden rajattua joukkoa. Jos Galleriassa ei ole kaikkia tietueita, käyttäjät voivat hämmentyä.
Katso lisätietoja delegoinnin yleiskatsauksesta.
Syntaksi
Suodatin(Taulukko*, Kaava1 [, *Kaava2*, ... ] )
- Taulukko - Pakollinen. Taulukko, josta haetaan.
- Kaavat - pakollinen. Kaava, jonka mukaan jokaista taulukon tietuetta arvioidaan. Funktio palauttaa kaikki tietueet, jotka palauttavat arvon true. Voit viitata sarakkeisiin taulukon sisällä. Jos annat useamman kuin yhden kaavan, kaikkien kaavojen tulokset yhdistetään And-funktiolla.
Haku(taulukko*, SearchString,Sarake1 [, *Sarake2*, ... ] )
- Taulukko - Pakollinen. Taulukko, josta haetaan.
- SearchString - pakollinen. Haettava merkkijono. Jos arvo on tyhjä tai tyhjä merkkijono, kaikki tietueet palautetaan.
- Sarakkeet - Pakollinen. Table-taulukon sarakkeiden nimet, joista haetaan. Jos jonkin haettavan sarakkeen tiedoista löytyy SearchStringin osittainen vastaavuus, koko tietue palautetaan.
Muistiinpano
Ennen Power Appsin versiota 3.24042 Search-funktion sarakenimet määritettiin tekstimerkkijonolla käyttäen lainausmerkkejä, ja jos ne oli yhdistetty tietolähteeseen, niiden oli oltava myös loogisia nimiä. Esimerkiksi looginen nimeä "cr43e_name" lainausmerkissä käytettiin näyttönimen lainausmerkittömän näyttönimen Nimi sijaan. SharePoint- ja Excel-tietolähetissä, jotka sisältävät välimerkillisiä sarakenimiä, jokaista välimerkkiä merkitsi "_x0020_". Tällöin esimerkiksi "Sarakkeen nimi" oli "Sarakkeen_x0020_nimi". Kyseisen version jälkeen kaikki sovellukset päivitettiin automaattisesti käyttämään tässä artikkelissa kuvattua uutta syntaksia.
Haku(Taulukko*, Kaava [, Vähennyskaava])
- Taulukko - Pakollinen. Taulukko, josta haetaan. Syntaksi näytetään käyttöliittymässä lähteenä funktioruudun yläpuolella.
- Kaava - pakollinen. Kaava, jonka mukaan jokaista taulukon tietuetta arvioidaan. Funktio palauttaa ensimmäisen tietueen, jonka tulos on true. Voit viitata sarakkeisiin taulukon sisällä. Syntaksi näytetään käyttöliittymässä ehtona funktioruudun yläpuolella.
- ReductionFormula- valinnainen. Tämä kaava lasketaan löydetylle tietueelle, ja se supistaa tietueen yksittäiseksi arvoksi. Voit viitata sarakkeisiin taulukon sisällä. Jos et käytä tätä parametria, funktio palauttaa koko tietueen taulukosta. Syntaksi näytetään käyttöliittymässä tuloksena funktioruudun yläpuolella.
Esimerkit
Seuraavissa esimerkeissä käytetään IceCream-tietolähdettä:
Kaava | Description | Result |
---|---|---|
Suodatin(Jäätelö, OnOrder > 0) | Palauttaa tietueet, joissa OnOrder on suurempi kuin nolla. | |
Suodatin (jäätelö, määrä + tilaus > 225) | Palauttaa tietueet, joissa Quantity- ja OnOrder-sarakkeiden summa on suurempi kuin 225. | |
Suodatin (jäätelö, "suklaa" alemmassa (maku )) | Palauttaa tietueet, joiden sarakkeessa Flavor esiintyy sana chocolate, kirjainkoosta riippumatta. | |
Suodatin (jäätelö, määrä < 10 & OnOrder < 20) | Palauttaa tietueet, joissa Quantity on alle 10 ja OnOrder on pienempi kuin 20. Koska yksikään tietue ei vastaa näitä ehtoja, palautetaan tyhjä taulukko. | |
Haku(Jäätelö, "choc", maku) | Palauttaa tietueet, joiden sarakkeessa Flavor esiintyy merkkijono choc, kirjainkoosta riippumatta. | |
Haku(Jäätelö, "", Maku) | Koska hakuehto on tyhjä, kaikki tietueet palautetaan. | |
LookUp(jäätelö, maku = "suklaa", määrä) | Etsii tietuetta, jonka Flavor on Chocolate. Sellaisia on yksi. Palauttaa ensimmäisen löydetyn tietueen Quantity-arvon. | 100 |
LookUp(jäätelö, määrä > 150, määrä + tilaus) | Etsii tietuetta, jonka Quantity on suurempi kuin 150. Sellaisia on useita. Ensimmäisen löydetyn tietueen Flavor on "Vanilla". Palauttaa kyseisen tietueen Quantity- ja OnOrder-sarakkeiden summan. | 250 |
LookUp(IceCream, Flavor = "Pistaasipähkinä", OnOrder) | Etsii tietuetta, jonka Flavor on "Pistachio". Sellaisia ei ole. Koska yhtään tietuetta ei löydy, Lookup palauttaa arvon tyhjä. | aihio |
LookUp(jäätelö, maku = "vanilja") | Etsii tietuetta, jonka Flavor on "Vanilla". Sellaisia on yksi. Koska vähennyskaavaa ei annettu, koko tietue palautetaan. | { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 } |
Suodattaminen valintasarakkeiden avulla
Seuraavassa esimerkissä käytetään Microsoft Dataversen Asiakas-taulukkoa tietolähteenä. Tämä esimerkki osoittaa, miten asiakasluettelo suodatetaan valittujen Combo box -ohjausobjektin arvojen perusteella:
Vaihe vaiheelta
Avaa tyhjä sovellus.
Lisää uusi näyttö valitsemalla Uusi näyttö -vaihtoehto.
Valitse Lisää-välilehdessä Gallery ja valitse sitten Pystysuora.
Avaa oikean ruudun Ominaisuudet-välilehdessä Tietolähde ja valitse sitten Asiakkaat.
(Valinnainen) Valitse vaihtoehtoja Asettelu-luettelossa.
Valitse Lisää-välilehdessä Syöte ja valitse sitten Combo box. Lisää vielä kaksi yhdistelmäruutuohjausobjektia toistamalla tämä vaihe.
Avaa kunkin yhdistelmäruutuohjausobjektin oikean ruudun Ominaisuudet-välilehdessä Tietolähde ja valitse sitten Asiakkaat. Valitse Muokkaa Kenttä-vaihtoehdon vieressä ja valitse sitten Ensisijainen teksti- ja SearchField-arvot. Ensisijainen teksti on se valintasarake, joka halutaan lisätä yhdistelmäruutuun. Toista tämä vaihe kahdessa muussa yhdistelmäruutuohjausobjektissa.
Valitse nyt Gallery-ohjausobjekti ja määritä Items-ominaisuuteen seuraava kaava:
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'))
Haun käyttökokemus
Seuraavissa esimerkeissä käytetään IceCream-tietolähdettä:
Monissa sovelluksissa hakukenttään voi kirjoittaa yhden tai useamman merkin. Tällä tavalla voit suodattaa tietueluetteloita suurissa tietojoukoissa. Luettelossa näytetään vain ne tietueet, jotka vastaavat kirjoittamiasi hakuehtoja.
Lopuissa tämän artikkelin esimerkeissä on hakutuloksia Asiakkaat-nimisestä luettelosta, ja siinä on seuraavat tiedot:
Luo tämä tietolähde kokoelmana luomalla Button-ohjausobjekti ja määrittämällä sen OnSelect-ominaisuuden arvoksi kaava:
ClearCollect(Asiakkaat, Taulukko{ (Nimi: "Fred Garcia", Yritys: "Northwind Traders", }Nimi: "Cole Miller", { Yritys: "Contoso" }, { Nimi: "Glenda Johnson", Yritys: "Contoso" }, { Nimi: "Mike Collins", Yritys: "Adventure Works" }, { Nimi: "Colleen Jones", Yritys: "Adventure Works" }) )
Kuten tässä esimerkissä, voit näyttää luettelon Gallery-ohjausobjektin tietueista näytön alareunassa. Näytön yläosassa voit lisätä Text input -ohjausobjektin nimeltä SearchInput, jotta käyttäjät voivat määrittää, mitkä tietueet kiinnostavat heitä.
Kun käyttäjä kirjoittaa merkkejä hakusyötteeseen, valikoiman tuloksia suodatetaan automaattisesti. Tässä tapauksessa valikoima on määritetty näyttämään tietueet, joiden asiakkaan nimi (ei yrityksen nimi) alkaa merkeillä, jotka on syötetty SearchInput-ohjausobjektiin. Jos käyttäjä kirjoittaa hakuruutuun co, valikoima näyttää nämä tulokset:
Voit suodattaa Nimi-sarakkeen perusteella määrittämällä valikoiman Items-ominaisuudeksi jonkin seuraavista kaavoista:
Kaava | Kuvaus | Tulos |
---|---|---|
Suodatin(Asiakkaat, StartsWith(Nimi, SearchInput.Text) ) | Suodattaa Customers-tietolähteestä tietueet, joiden Name-sarakkeen alussa esiintyy hakumerkkijono. Testin kirjainkoolla ei ole merkitystä. Jos käyttäjä kirjoittaa hakuruutuun co, valikoima näyttää tulokset Colleen Jones ja Cole Miller. Valikoima ei näytä tietuetta Mike Collins, koska sen Name-sarake ei ala hakumerkkijonolla. | |
Suodatin(asiakkaat, SearchInput.Text nimessä) | Suodattaa Customers-tietolähteestä tietueet, joiden Name-sarakkeen jossain kohdassa esiintyy hakumerkkijono. Testin kirjainkoolla ei ole merkitystä. Jos käyttäjä kirjoittaa hakukenttään co, valikoima näyttää tulokset Colleen Jones, Cole Miller ja Mike Collins, koska hakumerkkijono esiintyy jossain kohdassa tietueen Name-saraketta. | |
Haku(asiakkaat, SearchInput.Text, nimi) | Search-funktio etsii vastaavuutta missä tahansa kunkin tietueen Name-sarakkeen osassa, samaan tapaan kuin in-operaattori. On huomattava, että sarakkeen nimi on kirjoitettava lainausmerkkeihin. |
Haun voi laajentaa sisältämään jCompany- ja Name-sarakkeet:
Kaava | Kuvaus | Tulos |
---|---|---|
Suodatin(Asiakkaat, StartsWith(Nimi, SearchInput.Text) || StartsWith(Yritys, SearchInput.Text) ) | Suodattaa Customers-tietolähteestä tietueet, joiden Name-sarake tai Company-sarake alkaa hakumerkkijonolla (esimerkiksi co). || -operaattori on tosi, jos toinen StartsWith-funktioista on tosi. | |
Filter(Asiakkaat, SearchInput.Text nimessä || SearchInput. Teksti yrityksessä) | Suodattaa Customers-tietolähteestä tietueet, joiden Name-sarakkeen tai Company-sarakkeen jossain kohdassa esiintyy hakumerkkijono (esimerkiksi co). | |
Haku(asiakkaat, SearchInput.Text, nimi, yritys) | Samoin kuin in-operaattori, Search-funktio hakee Customers-tietolähteestä tietueet, joiden Name-sarakkeen tai Company-sarakkeen jossain kohdassa esiintyy hakumerkkijono (esimerkiksi co). Search-funktio on helpompi lukea ja kirjoittaa kuin Filter-funktio, jos haluat määrittää useita sarakkeita ja useita in-operaattoreita. |