Filter-, Search- ja LookUp-funktio

Koskee seuraavia: Pohjaan perustuvat sovellukset Työpöytätyönkulut Mallipohjaiset sovellukset Power Platform CLI

Etsii vähintään yhden tietueentaulukosta.

Katso tämä video, niin opit käyttämään funktioita Filter, Search ja LookUp:

Muistiinpano

PAC CLI pac power-fx -komennot eivät tue Search-funktiota.

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

Filter ja Search palauttavat taulukon, joka sisältää samat sarakkeet kuin alkuperäinen taulukko sekä tietueet, jotka vastaavat ehtoja. LookUp palauttaa vain ensimmäisen löydetyn tietueen, jonka se on supistanut yhdeksi arvoksi kaavan avulla. Jos tietueita ei löydy, Filter ja Search palauttavat tyhjän taulukon, ja LookUp palauttaa arvon tyhjä.

Tables on arvo Power Appsissa, samaan tapaan kuin merkkijono tai numero. Ne voidaan välittää funktioihin ja niitä voidaan palauttaa funktioista. Filter, Search ja LookUp 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

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

  • Table – Pakollinen. Taulukko, josta haetaan.
  • Formula(s) – 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.

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

  • Table – Pakollinen. Taulukko, josta haetaan.
  • SearchString – Pakollinen. Haettava merkkijono. Jos arvo on tyhjä tai tyhjä merkkijono, kaikki tietueet palautetaan.
  • Column(s) – Pakollinen. Table-taulukon sarakkeiden nimet, joista haetaan. Sarakkeiden, joista haetaan, on sisällettävä tekstiä. Sarakkeiden nimien on oltava merkkijonoja, jotka ovat lainausmerkeissä. Sarakkeiden nimien on kuitenkin oltava staattisia, eikä niitä voi laskea kaavalla. Jos jonkin haettavan sarakkeen tiedoista löytyy SearchStringin osittainen vastaavuus, koko tietue palautetaan.

Muistiinpano

Jos SharePoint- ja Excel-tietolähteiden sarakenimissä käytetään välilyöntejä, merkitse jokaisen välilyönnin tilalle "_x0020_". Voit esimerkiksi määrittää Column Name -arvoksi "Sarakkeen_x0020_Nimi".

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

  • Table – Pakollinen. Taulukko, josta haetaan. Syntaksi näytetään käyttöliittymässä lähteenä funktioruudun yläpuolella.
  • Formula – 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ä:

Ice cream -tietolähde.

Kaava Description Result
Filter( IceCream, OnOrder > 0 ) Palauttaa tietueet, joissa OnOrder on suurempi kuin nolla. Suodatus tilauksessa.
Filter( IceCream, Quantity + OnOrder > 225 ) Palauttaa tietueet, joissa Quantity- ja OnOrder-sarakkeiden summa on suurempi kuin 225. Määrän ja tilauksen suodatus.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Palauttaa tietueet, joiden sarakkeessa Flavor esiintyy sana chocolate, kirjainkoosta riippumatta. Suodatus alemmalla.
Filter(IceCream, Quantity < 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. Määrän suodatus.
Search( IceCream, "choc", "Flavor" ) Palauttaa tietueet, joiden sarakkeessa Flavor esiintyy merkkijono choc, kirjainkoosta riippumatta. Hakukohteet.
Search( IceCream, "", "Flavor" ) Koska hakuehto on tyhjä, kaikki tietueet palautetaan. Kaikkien kohteiden haku.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Etsii tietuetta, jonka Flavor on Chocolate. Sellaisia on yksi. Palauttaa ensimmäisen löydetyn tietueen Quantity-arvon. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) 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 = "Pistachio", OnOrder ) Etsii tietuetta, jonka Flavor on "Pistachio". Sellaisia ei ole. Koska yhtään tietuetta ei löydy, Lookup palauttaa arvon tyhjä. blank
LookUp( IceCream, Flavor = "Vanilla" ) 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

  1. Avaa tyhjä sovellus.

  2. Lisää uusi näyttö valitsemalla Uusi näyttö -vaihtoehto.

  3. Valitse Lisää-välilehdessä Gallery ja valitse sitten Pystysuora.

  4. Avaa oikean ruudun Ominaisuudet-välilehdessä Tietolähde ja valitse sitten Asiakkaat.

  5. (Valinnainen) Valitse vaihtoehtoja Asettelu-luettelossa.

  6. Valitse Lisää-välilehdessä Syöte ja valitse sitten Combo box. Lisää vielä kaksi yhdistelmäruutuohjausobjektia toistamalla tämä vaihe.

  7. Avaa kunkin yhdistelmäruutuohjausobjektin oikean ruudun Ominaisuudet-välilehdessä Tietolähde ja valitse sitten Asiakkaat. Valitse MuokkaaKenttä-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.

    Yhdistelmäruudun arvojen määrittäminen.

  8. Valitse nyt Gallery-ohjausobjekti ja määritä Items-ominaisuuteen seuraava kaava:

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

    Asiakkaat-tietolähde.

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 ohjeaiheen esimerkeissä on hakutuloksia Asiakkaat-nimisestä luettelosta, ja siinä on seuraavat tiedot:

Asiakkaita koskeva haku

Luo tämä tietolähde kokoelmana luomalla Button-ohjausobjekti ja määrittämällä sen OnSelect-ominaisuuden arvoksi kaava:

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

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

Hakusyötteeseen perustuva haku.

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:

Alkaa seuraavalla -haku.

Voit suodattaa Nimi-sarakkeen perusteella määrittämällä valikoiman Items-ominaisuudeksi jonkin seuraavista kaavoista:

Kaava Kuvaus Tulos
Filter( Customers, StartsWith( Name, 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. Alkaa seuraavalla -suodatus.
Filter( Customers, SearchInput.Text in Name ) 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. Hakusyötettä käyttävä suodatus.
Search( Customers, SearchInput.Text, "Name" ) Search-funktio etsii vastaavuutta missä tahansa kunkin tietueen Name-sarakkeen osassa, samaan tapaan kuin in-operaattori. On huomattava, että sarakkeen nimi on kirjoitettava lainausmerkkeihin. Hae asiakkaita.

Haun voi laajentaa sisältämään jCompany- ja Name-sarakkeet:

Kaava Kuvaus Tulos
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, 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. Asiakkaiden alkaa seuraavalla -suodatus.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Suodattaa Customers-tietolähteestä tietueet, joiden Name-sarakkeen tai Company-sarakkeen jossain kohdassa esiintyy hakumerkkijono (esimerkiksi co). Hakusyötettä käyttävä asiakkaiden suodatus.
Search( Customers, SearchInput.Text, "Name", "Company" ) 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. On huomattava, että sarakkeiden nimet on kirjoitettava lainausmerkkeihin.  Asiakkaiden hakeminen hakusyötteellä.