Lõuendirakenduse delegeerimise mõistmine

Power Apps sisaldab võimsaid funktsioone, mis on seotud lõuendirakenduse andmete filtreerimise, sortimise ja kujundamisega: funktsioonid Filter (Filtreeri), Sort (Sordi) ja AddColumns (Lisa veerud) on ühed vähesed. Nende funktsioonidega saate anda kasutajatele suunatud ligipääsu vajalikule teabele. Andmebaasi taustaga kasutajate puhul on nende funktsioonide kasutamine samaväärne andmebaasipäringu kirjutamisega.

Tõhusate rakenduste ehitamise võti on vähendada andmete hulka, mis tuleb seadmesse viia. Võib-olla on teil vaja ainult käputäis kirjeid miljonite kirjete merest või üksikut agregaatväärtust, mis esindab tuhandeid kirjeid. Või võib-olla saab tagastada ainult esimese kirjete kogumi ning ülejäänud tagastatu kasutaja žestide alusel (nad tahavad rohkem). Keskendumine võib dramaatiliselt vähendada teie rakenduse vajalikku töötlemisvõimsust, mälu ja võrgu ribalaiust, mille tulemuseks on kiirem reaktsiooniaeg isegi mobiilsidevõrgu kaudu ühendatud telefonides.

Delegatsioon on Power Apps valemite väljendus vastata vajadusele minimeerida andmete liikumist üle võrgu. Lühidalt, Power Apps delegeerib andmete töötlemist andmeallikasse, mitte andmete teisaldamist rakendusse kohapeal töötlemiseks.

Kui see muutub keeruliseks ja artikli eksisteerimise põhjuseks on tõsiasi, et kõike, mida saab Power Apps valemites väljendada, ei saa delegeerida igale andmeallikale. Power Apps keel jäljendab Exceli valemite keelt, mis on kujundatud täieliku ja vahetu juurdepääsuga täielikule töövihikule mälus ja millel on lai valik numbreid ja teksti manipuleerimise funktsioone. Selle tulemusena on Power Apps keel palju rikkam, kui enamik andmeallikaid toetab (sh võimsad andmebaasi mootorid nagu SQL Server).

Suurte andmekogumitega töötamiseks on vaja kasutada andmeallikaid ja valemeid, mida saab delegeerida. See on ainus viis oma rakenduse toimivuse tagamiseks ja kasutajatele vajalikule teabele ligipääsu garanteerimiseks. Pöörake tähelepanu delegatsioonide hoiatustele, mis määratlevad kohad, kus delegeerimine pole võimalik. Väikeste andmekogumitega (vähem kui 500 kirjetet) töötades saate kasutada mis tahes andmeallikat ja valemit, kuna rakendus saab andmeid kohapeal töödelda, kui valemit ei saa delegeerida.

Märkus

Delegatsioonide hoiatused on varem märgitud rakenduses Power Apps soovituste all "sinise täpiga", kuid delegatsioonide soovitused on nüüdseks ümber klassifitseeritud hoiatusteks. Kui teie andmeallika andmed ületavad 500 kirjet ja funktsiooni ei saa delegeerida, ei pruugi Power Apps kõiki andmeid enam alla laadida ja teie rakendusel võivad olla valed tulemused. Delegatsioonide hoiatused aitavad teil oma rakendust hallata, et see oleks õigete tulemustega.

Delegeeritavad andmeallikad

Delegeerimist toetatakse ainult teatud tabulaarsete andmeallikate puhul. Kui andmeallikas toetab delegeerimist kirjeldab konnektori dokumentatsioon seda tuge. Näiteks on need tabularsed andmeallikad kõige populaarsemad ja toetavad delegeerimist.

Imporditud Exceli töövihikud (funktsiooni Add static data to your app (Lisa rakendusse staatilised andmed) kasutades), kogumid ja konteksti muutujates salvestatud tabelid ei vaja delegeerimist. Kõik need andmed on juba mälus ja rakendada saab täieliku Power Apps keele funktsionaalsust.

Delegeeritavad funktsioonid

Järgmine etapp on kasutada ainult neid valemeid, mida saab delegeerida. Siia kuuluvad ka delegeeritavad valemi elemendid. Kuid iga andmeallikas on teistsugune ja mitte kõik ei toeta kõiki neid elemente. Kontrollige kindla valemi delegeeritud hoiatusi.

Käesolevad loendid muutuvad aja jooksul. Töötame, et toetada rohkem funktsioone ja delegeeritud operaatoreid.

Filtreerimise funktsioonid

Delegeerida saab funktsioone Filter (Filtreeri), Search (Otsing) ja LookUp (Leia).

Funktsioonide Filter (Filtreeri) ja LookUp (Leia) kaudu saate neid kasutada tabeli veergudega, et valida vastavad kirjed.

Saate kasutada ka enda valemi osi, mis tagastavad kõigi kirjete puhul konstantse väärtuse. Näiteks Left( Language(), 2 ), Date( 2019, 3, 31 ) ja Today() ei sõltu kirje veergudest ja seega tagastab sama väärtuse kõigi kirjete jaoks. Need väärtused saab andmeallikasse saata konstantidena ja need ei takista delegeerimist.

Eelmine loend ei sisalda neid märkimisväärseid üksusi.

Sortimise funktsioonid

Sort (Sorteeri) ja SortByColumns (Sorteeri veergu alusel) saab delegeerida.

Funktsiooniga Sort (Sorteeri) saab valem olla nimetatud ainult ühe veeruga ja teisi tehtemärke ega funktsioone ei saa kaasata.

Koondfunktsioonid

Funktsioone Sum (Summa), Average (Keskmine), Min (Minimaalne) ja Max (Maksimaalne) saab delegeerida. Praegu toetavad seda delegatsiooni ainult piiratud arv andmeallikaid. Üksikasjade vaatamiseks vaadake delegatsioonide loendit.

Loendamisfunktsioone (nt CountRows (Loenda read) , CountA (Loenda A) ja Count (Loenda)) ei saa delegeerida.

Muid koondfunktsioone (nt StdevP ja VarP) ei saa delegeerida.

Tabeli kujundamise funktsioonid

Osaliselt saab delegeerida funktsioone AddColumns (Lisa veerud), DropColumns (Kustuta veerud), RenameColumns (Nimeta veerud ringi) ja ShowColumns (Kuva veerud). Nende argumentide valemeid saab delegeerida. Nende funktsioonide väljund sõltub siiski mitte-delegatsiooni kirje limiidist.

Nagu käesolevas näites, kasutavad loojad sageli funktsioone AddColumns (Lisa veerud) ja LookUp (Leia), et liita teavet ühest tabelist teise, mida nimetatakse tavaliselt andmebaasi kõnepruugis liitmiseks.

AddColumns( Products, 
    "Supplier Name", 
    LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name 
)

Kuigi Products (Tooted) ja Suppliers (Tarnijad) on delegeeritavad andmeallikad ja LookUp (Leia) on delegeeritav funktsioon, ei ole funktsiooni AddColumns (Lisa veerud) väljund delegeeritav. Kogu valemi tulemus piirdub andmeallikas Products (Toodet) esimese osaga. Kuna funktsioon LookUp (Leia) ja selle andmeallikas on delegeeritav, võib andmeallika Suppliers (Tarnijad) vastet leida kõikjal andmeallikast, isegi kui see on suur.

Kui kasutate sel viisil funktsiooni AddColumns (Lisa veerud)l, peab funktsioon LookUp (Leia) tegema eraldi päringuid kõigi nende Products (Tooted) esimeste kirjete kohta andmeallikas tuues kaasa ohtrat võrguliiklust. Kui Suppliers (Tarnijad) on küllalt väiksed ja ei muutu sageli, võite kasutada funktsiooni Collect (Kogu) valikus OnStart (Käivitamisel), et vahemällu käivitada rakenduse andmeallikas kävitamisel. Alternatiivina võite oma rakenduse ümber korraldada, et saaksite seostuvad kirjed kaasata ainult juhul, kui kasutaja nende kohta küsib.

Mittedelegeeritavad funktsioonid

Kõik muud funktsioonid ei toeta delegeerimist, sh need märkimisväärsed funktsioonid.

Mittedelegeeritavad piirid

Valemeid, mida ei saa delegeerida, töödeldakse kohapeal. See võimaldab kasutada kogu rakenduse Power Apps valemi keelt. Sellel on hind: kõik andmed tuleb kõigepealt seadmesse viia, mis võib hõlmata suure hulga andmete pärimist üle võrgu. See võib olla aeglane, mis võib jätta mulje, et rakendus on aeglane või jooksis kokku.

Selle vältimiseks kehtestab Power Apps piiri andmehulgale, mida saab töödelda lokaalselt - vaikimisi 500 kirjet. Valisime selle piiri, et teil oleks endiselt täielik juurdepääs väikestele andmekogumitele ja saaksite osaliste tulemuste näitamiseks viimistleda suurte andmekogumite kasutamist.

Selle võimaluse kasutamisel tuleb kindlasti olla ettevaatlik, kuna see võib kasutajaid segadusse ajada. Näiteks võite kaaluda funktsiooni Filter (Filtreeri) kasutamist, millel on valikuvalem, mida ei saa delegeerida üle andmeallika, mis sisaldab miljonit kirjet. Kuna filtreerimine toimub kohapeal, skaneeritakse ainult esimesed 500 kirjet. Kui soovitud kirje on 501. või 500001. kirje, siis seda ei arvestata ega tagastata funktsioonide Filter (Filtreeri).

Koondfunktsioonid võivad ka põhjustada segadust. Võtke keskmine üle sama miljoni kirjega andmeallika veeru. Funktsiooni Average (Keskmine) ei saa veel delegeerida, seega on keskmistatud ainult esimesed 500 kirjet. Kui te pole ettevaatlik, võib teie rakenduse kasutaja osalist vastust tõlgendada täieliku vastusena.

Piiri muutmine

500 on vaikimisi kirjete arv, kuid saate seda numbrit terves rakenduses muuta.

  1. Valige vahekaardil Fail suvand Sätted.
  2. Jaotises Üldine muutke andmerea piirangu sätet 1-lt 2000-le.

Mõnel juhul teate, et 2000 (või 1000 või 1500) vastab teie stsenaariumi vajadustele. Ettevaatlikult saate selle numbri oma stsenaariumi puhul sobivaks suurendada. Seda arvu suurendades võib teie rakenduse jõudlus halveneda, eriti suure ja rohkearvuliste veergudega tabelite puhul. Siiski on parim lahendus delegeerida nii palju kui võimalik.

Tagamaks, et teie rakendus saab skaleerida mahukate andmekogumite korral, vähendage selle sätte väärtust tasemeni 1. Kõik, mida ei saa delegeerida, tagastab ühe kirje, mida oleks lihtne teie rakenduse testimisel tuvastada. See aitab vältida üllatusi, kui proovite viia kontseptsiooni tõestamise rakendust tootmisse.

Delegeerimise hoiatused

Selleks, et oleks lihtsam teada, mis on ja kellele delegeeritakse, kuvab Power Apps hoiatuse (kollane kolmnurk), kui loote valemi, mis sisaldab midagi, mida ei saa delegeerida.

Delegeeritud hoiatused kuvatakse ainult sellistes valemites, mis töötavad delegeeritavate andmeallikatega. Kui te ei näe hoiatust ja arvate, et teie valemit pole õigesti delegeeritud, kontrollige andmeallika tüüpi delegeeritavate andmeallikate loendi vastu, mis on toodud käesolevas teemas ülalpool.

Näited

Selles näites genereerite automaatselt kolme ekraanikuvaga rakenduse, mis põhineb SQL Server tabelil nimega [dbo].[Fruit]. Rakenduse loomise kohta leiate lisateavet SQL Serveri Dataverse teemast sarnaste põhimõtete rakendamise kohta.

Kolme ekraaniga rakendus.

Galerii atribuut Items (Üksused) on seatud valermi järgi, mis sisaldab funktsioone SortByColumns (Sorteeri veergude järgi) ja Search (Otsi), mille mõlemad saab delegeerida.

Tippige otsingukasti "Apple" (Õun).

Järjestikused punktid ilmuvad hetkeks ekraani ülaossa, kui rakendus suhtleb SQL Serveriga otsingupäringu töötlemiseks. Kõik otsingukriteeriumitele vastavad kirjed kuvatakse ka juhul, kui andmeallikas sisaldab miljoneid kirjeid.

Otsinguga tekstisisene juhtelement.

Otsingutulemite hulka kuuluvad "Apples" (Õunad), "Crab apples" (Metsikud õunad) ja "Pineapple" (Ananass), kuna funktsioon Search (Otsing) otsib tervest tekstiveerust. Kui soovite leida ainult kirjed, mis sisaldavad puuvilja nime alguses otsinguterminit, võite kasutada mõnda muud delegeeritavat funktsiooni (Filter) keerukama otsinguterminiga. (Lihtsuse huvides eemaldage kutsung SortByColumns (Sorteeri veergude järgi))

Eemaldage veergudepõhise sotreerimise kutsung.

Uute tulemuste hulka kuuluvad "Apples" (Õunad), aga mitte "Crab apples" (Metsikud õunad) või "Pineapple" (Ananass). Galerii kõrvale ilmub aga kollane kolmnurk (ja kui vasakpoolsel navigeerimisribal on pisipildid, siis ekraani pisipildil) ja valemi osa alla ilmub sinine laineline joon. Kõik need elemendid näitavad hoiatust. Kui liigute kursoriga üle galerii kõrval oleva kollase kolmnurga kuvatakse järgmine teade:

Kursoriga üle delegatsiooni hoiatuse liikumine.

SQL Server on delegeeritav andmeallikas ja Filter (Filtreeri) on delegeeritav funktsioon, kuid funktsioone Mid (Keskmine) ja Len (Pikkus) ei saa delegeerida ühelegi andmeallikale.

Kuid see töötas, eks? Noh, natuke. Ja see on põhjus, miks see on hoiatus, mitte punane laineline prääks.

  • Valem töötab suurepäraselt, kui tabel sisaldab vähem kui 500 kirjet. Kõik kirjed toodi seadmesse ja funktsiooni Filter (Filtreeri) rakendati lokaalselt.
  • Kui tabel sisaldab üle 500 kirje, ei tagasta valem 501. kirjet või uuemat, isegi kui see vastab kriteeriumidele.

Vt ka

Mitteeraldatavate funktsioonide kasutamise ja ebasobivate andmeridade limiitide mõju jõudlusele
Näpunäited ja head tavad jõudluse kohta