Päringupiirangud: delegeerimis- ja päringupiirangud

Delegeerimise mõistmine

Power Apps Töötab kõige paremini back-end andmeallikas puhul, kui Power Fx päringu saab täielikult tõlkida samaväärseks päringuks, mida saab andmeallikas käivitada. Power Apps saadab päringu, mida andmeallikas mõistab, päring tehakse andmeallikas ja päringutulemid tagastatakse Power Apps. Näiteks võib andmeallikas teha andmeallikas andmete filtreerimise ja tagastada ainult need read, mis vastavad filtrikriteeriumidele. Kui see toimib õigesti, ütleme, et päring delegeeritakse päringu töö tegemiseks andmeallikas.

Power Fx Kuid päringuid ei saa alati tõlkida samaväärseteks päringuteks kõigis andmeallikates. Näiteks toetab rohkem Dataverse päringufunktsioone kui Excel. Dataverse toetab päringutehtemärki "in" (membership) ja Excel mitte. Ütleme, et päring pole delegeeritav , kui päring kasutab funktsiooni, mida andmeallikas ei toeta. Üldiselt, kui päringuavaldise mis tahes osa ei saa delegeerida, ei delegeeri me ühtegi päringu osa.

Kui päringut ei saa delegeerida, Power Apps saab andmeallikas ainult esimesed 500 kirjet ja teeb seejärel päringus toimingud. Seda limiiti saab suurendada 2,000 kirjele Limiidi muutmine piirab tulemuse suurust 500 kirjele Power Apps , et säilitada hea jõudlus Power Apps. Leidsime eksperimenteerimise käigus, et nendest suurustest suuremad tulemikomplektid tekitavad teie rakenduse jaoks ja Power Apps üldiselt jõudlusprobleeme.

Kuid see piirang võib olla probleemiks, kuna päring võib tagastada valesid tulemusi, kui andmeallikas andmed ületavad 500/2000 kirjet. Vaadake näiteks näidet, kus teie andmeallikas sisaldab 10 miljonit kirjet ja päring peab töötama andmete viimases osas. (Näiteks perekonnanimed, mis algavad tähega "Z") Kuid teie päringus on tehtemärk, mida ei saa delegeerida (nt eraldiseisev).) Sel juhul saate ainult esimesed 500/2000 kirjet ja teil on valed tulemused.

Looge oma Power Fx päringud, kasutades oma andmeallikas jaoks delegeeritavaid tabeleid. Peaksite kasutama ainult neid päringufunktsioone, mida saab delegeerida. See on ainus viis, kuidas hoida oma rakendus hästi toimivana ja tagada, et kasutajad pääsevad juurde kogu vajalikule teabele.

Pöörake tähelepanu delegatsioonide hoiatustele, mis määratlevad kohad, kus delegeerimine pole võimalik. Kui töötate väikeste andmekogumitega (vähem kui 500 kirjet), saate kasutada mis tahes andmeallikas ja valemit, kuna rakendus saab andmeid lokaalselt töödelda, kui valemit ei saa delegeerida.

Märkus

Delegatsioonide hoiatused aitavad teil oma rakendust hallata, et see oleks õigete tulemustega. Kui teie andmeallikas andmed ületavad 500 kirjet ja funktsiooni ei saa delegeerida, Power Fx tähistatakse valemit sinise allakriipsutusega.

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.

Filtreerimise funktsioonid

Filtreeri, otsi, esmalt ja otsingut saab delegeerida.

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

  • And (Ja) (sh &&) Or (Või) (sh ||), Not (Mitte) (sh !)
  • Kohas

    Märkus

    Sisse on delegeeritud ainult andmebaasi allika veergude jaoks. Näiteks kui andmeallikas on tabel on Kontod, delegeerib Filter(Accounts, Name in ["name1", "name2"]) need hindamiseks andmeallikale. Samas Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) ei delegeeri, kuna veerg Täisnimi on teises tabelis (PrimaryContact) kui Kontod. Avaldist hinnatakse kohalikult.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith (Algab), EndsWith (Lõppeb)
  • Konstantsed väärtused, mis on kõigis kirjetes ühesugused (nt juhtelemendi atribuudid ning globaalsed ja kontekstilised muutujad).

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.

Päringu piirangud

Otsingutasemed

Power Apps toetab kahte otsingutaset. See tähendab, et päringuavaldisel Power Fx võib olla - kõige rohkem - kaks otsingufunktsiooni. Selle piirangu eesmärk on säilitada jõudlus. Kui päringuavaldis sisaldab otsingut, Power Apps teeb esmalt päringu alustabeli hankimiseks. Seejärel teeb see teise päringu, mis laiendab esimest tabelit otsinguteabega. Me toetame maksimaalselt veel ühte taset, mis ületab selle. Võrguühenduseta toe aga ainult ühe taseme otsingu laiendamist.

Avaldise hindamine - olemi omadus peab olema võrdsuse operaatori vasakul küljel "LHS"

Oluline on paigutada võrreldava olemi omadus võrrandi vasakul küljel olevasse avaldisesse LHS. Illustreerimiseks allolevas näites olemi atribuudi "Äriüksuse ID". Nimi on omaduse väärtus ja see tuleb paigutada hinnatava avaldise LHS-i. Järgmine avaldis õnnestub:

Filter(
        Budgets,
        'Business unit ID'.Name = LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name,
        DataCardValue37.Selected.'Date Range String'='Date Range String'
    )

Kuid see väljend:

 Filter(
        Budgets,
        LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name = 'Business unit ID'.Name,
        'Date Range String'=DataCardValue37.Selected.'Date Range String'
    )

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

Mõningaid koondfunktsioone saab delegeerida sõltuvalt back-end’i toest. Funktsioone Sum (Summa), Average (Keskmine), Min (Minimaalne) ja Max (Maksimaalne) saab delegeerida. Delegeerida saab ka selliseid inventuurifunktsioone nagu CountRows ja Count . Ainult piiratud arv andmeallikaid toetab praegu neid funktsioone delegeerimiseks. Lisateavet leiate jaotisest Delegatsioonide loend.

RemoveIf ja UpdateIf delegeerimise tugi on eksperimentaalses olekus ja vaikimisi välja lülitatud.

Mittedelegeeritavad funktsioonid

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

Delegeerimatud piirmäärad

Valemeid, mida ei saa delegeerida, töödeldakse kohapeal. Kohalik töötlemine võimaldab kasutada valemikeelt kogu ulatuses Power Apps . 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. Keskmist ei saa antud juhul delegeerida, kuna avaldis pole delegeeritud (vaata varasemat märkust), seega keskmise puhul kasutatakse ainult 500 esimest 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. Tehke valik Sätted.
  2. Jaotises Üldine muutke andmerea piirangu sätet 1-lt 2000-le.

Mõnel juhul teate, et 2,000 (või 1,000 või 1,500) rahuldab teie stsenaariumi vajadused. 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 suurte andmekogumiteni, vähendage seda sätet 1-le. 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 ei delegeerita õigesti, kontrollige andmeallikas tüüpi selles artiklis varem esitatud delegeeritavate andmeallikate loendi alusel.

Näited

Selles näites genereerite automaatselt kolme ekraanikuvaga rakenduse, mis põhineb SQL Server tabelil nimega [dbo].[Fruit]. Rakenduse loomise kohta teabe saamiseks võite rakendada sarnaseid põhimõtteid artiklis SQL Serveri kohta Dataverse .

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) ja „Pineapple“ (Ananass), kuna funktsioon 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 „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

Märkus

Kas saaksite meile dokumentatsiooniga seotud keele-eelistustest teada anda? Osalege lühikeses uuringus. (Uuring on ingliskeelne.)

Uuringus osalemine võtab umbes seitse minutit. Isikuandmeid ei koguta (privaatsusavaldus).