Jokainen PowerAppseja vähääkään enemmän toteuttanut on törmännyt tähän viattoman näköiseen siniseen huutomerkkiin.
Huutomerkki kertoo sinun tehneen kyselyn, jota ei voida delegoida. Laittamalla hiiren lauseen päälle, näet informatiivisen ilmoituksen. Ei tämä nyt niin kauhealta vaikuta?
Varoituksen jälkeen kannattaa jatkaa ainoastaan mikäli tietää mitä on tekemässä.
Siniseen huutomerkkiin törmää ennen pitkää kaikki, joten avataan hieman mistä tässä delegoinnissa on kyse.
Toiminnon suorittaminen – PowerApps vs. tietolähde
Delegointi liittyy PowerAppsin käyttämiin tietolähteisiin (SharePoint, SQL Server, Excel-tiedosto, Dynamics..). Kuvitellaan seuraava tilanne.
- Tietovarastossa on tuotetietoja. Tuoterivejä on miljoona.
- Tuotteet on jaettu tuoteryhmiin
- Meitä kiinnostaa tuoteryhmän ”kahvit” tuotteet (40 kpl), joiden hintoja haluamme päivittää mobiilisovelluksella
Teemme PowerAppsin, joka hakee gallerialistaan kaikki kahvituotteet käyttäen Search-toimintoa (function).
Mikäli tietolähteenä on SQL-kanta, ei sinistä huutomerkkiä ilmesty. SQL-palvelu osaa rajata tietojoukon pyydetyllä tavalla ja palauttaa ainoastaan oikeat tuoterivit PowerAppsin käyttöön.
SQL-palvelu tukee delegointia ja kaikki toimii hienosti.
Tehdään sama ratkaisu käyttäen tietovarastona SharePoint -listaa (toivottavasti kenelläkään ei ole miljoonaa riviä SharePoint listassa). SharePoint ei tue tekemämme kyselyn osalta delegointia.
SharePoint palauttaa PowerAppsille 500 ensimmäistä tuoteriviä. PowerApps hakee itse näiden rivien joukosta kaikki, jotka kuuluvat tuoteryhmään ”kahvi”.
Voitte arvata miten moni etsimistämme tuotteista on ensimmäisten 500 joukossa. Tuotteita on kuitenkin miljoona.
Ymmärsit aivan oikein. Yli 500 rivimäärillä ollaan tilanteessa, jossa PowerAppsissa ei ole käsiteltävänä kaikkia tietolähteen rivejä. Peliä pelataan 500 ensimmäisellä rivillä.
Delegointia tukevat tietolähteet
Kun sinisen huutomerkin takana oleva kauheus on selvinnyt, käydään katsomassa Microsoftin sivuilta mitkä tietolähteet tukevat delegointia.
Lista näyttää varsin hyvältä.
- Common Data Service – Yes
- SharePoint – Yes
- SQL Server – Yes
- Dynamics 365 – Yes
- Salesforce – Yes
- Dynamics 365 for Operations – Not yet
- Dynamics 365 for Financials – Not yet
- Dynamics NAV – Not yet
- Google Sheets – Not yet
Hetkinen. Äskeisessä esimerkissä SharePoint palautti vain 500 riviä. Mutta sehän on delegointia tukevien tietolähteiden joukossa!
Niinpä. Saman artikkelin loppuosassa kerrotaan tarkemmin, mitkä operaatiot tukevat delegointia missäkin tietolähteessä.
Esimerkiksi SharePoint tukee seuraavia toimintoja (functions).
- Filter
- LookUp
- Sort
- SortByColumns
Seuraavia ei tueta
- Average
- Max
- Min
- Search
- Sum
Käytimme esimerkissämme Search -toimintoa, joka ei ole tuettujen joukossa. Tällä kertaa ratkaisu on helppo. Voimme käyttää Searchin sijasta Filter -toimintoa ja sen StartsWith -operaatiota (predicate).
Huomaa että vaikka joku toiminto tukee delegointia, eivät kaikki sen operaatiot sitä välttämättä tee. Esimerkiksi (SharePointin) Filter/LookUp toiminnot tukevat ainoastaan seuraavia operaatioita (predicates)
- =
- And, Or, Not
- StartsWith
Vinkki: SQL Serverin kanssa toimii sitten lähes kaikki.
Voiko 500 rivin rajoitusta muuttaa?
Mikäli tietojoukkosi on 600 tai 700 riviä, voi olla perusteltua fuskata ja kasvattaa tuota 500 rivin rajoitusta. Voit tehdä tämän PowerAppsin asetuksista (App settings).
Yhteenveto
Mikäli PowerApps käsittelee hyvin pieniä tietojoukkoja, ei delegointiin välttämättä tarvitse kiinnittää huomiota. Delegoinnin puute toki hidastaa sovellustasi.
Isommilla tietomäärillä tulee aivan aluksi selvittää, voidaanko haluttua toiminnallisuutta toteuttaa annetuilla tietolähteillä. Mikäli tietolähteet ovat vapaasti valittavissa, on SQL palvelimessa selvästi vähiten rajoituksia kyselyjen suhteen.