Deli z drugimi prek


Omejitve poizvedb: Omejitve pooblastil in poizvedb

Razumevanje delegiranja

Power Apps najbolje deluje z zalednim vir podatkov, ko je Power Fx poizvedbo mogoče v celoti prevesti v enakovredno poizvedbo, ki jo je mogoče izvajati na vir podatkov. Power Apps pošlje poizvedbo, ki jo vir podatkov razume, poizvedba se izvede na vir podatkov in vrnejo se rezultati poizvedbe Power Apps. Na primer, vir podatkov lahko filtrira podatke na vir podatkov in vrne samo vrstice, ki ustrezajo kriterijem filtra. Ko to deluje pravilno, pravimo, da je poizvedba delegirana na vir podatkov, da opravi delo poizvedbe.

Vendar Power Fx poizvedb ni mogoče vedno prevesti v enakovredne poizvedbe v vseh virih podatkov. Na primer, Dataverse podpira več funkcij poizvedb kot Excel. Dataverse podpira operator poizvedbe 'in' (članstvo), Excel pa ne. Pravimo, da poizvedbe ni mogoče prenesti če poizvedba uporablja funkcijo, ki je vir podatkov ne podpira. Na splošno velja, da če katerega koli dela izraza poizvedbe ni mogoče delegirati, ne delegiramo nobenega dela poizvedbe.

Ko poizvedbe ni mogoče delegirati, Power Apps prejme samo prvih 500 zapisov iz vir podatkov in nato izvede dejanja v poizvedbi. To omejitev je mogoče povečati na 2000 zapisov Spreminjanje omejitve Power Apps omeji velikost rezultata na 500 zapisov, da se ohrani dobro delovanje Power Apps. S poskusi smo ugotovili, da nabori rezultatov, večji od teh velikosti, povzročajo težave z zmogljivostjo za vašo aplikacijo in Power Apps na splošno.

Vendar je lahko ta omejitev težava, saj lahko poizvedba vrne napačne rezultate, če podatki na vir podatkov presežejo 500/2000 zapisov. Na primer, razmislite o primeru, ko ima vaš vir podatkov 10 milijonov zapisov in vaša poizvedba mora delovati na zadnjem delu podatkov. (Na primer družinska imena, ki se začnejo z 'Z') Vendar ima vaša poizvedba operator, ki ga ni mogoče prenesti (na primer distinct.) V tem primeru dobite samo prvih 500/2000 zapisov in imate nepravilne rezultate.

Ustvarite svoje Power Fx poizvedbe z uporabo tabel, ki jih je mogoče prenesti za svoj vir podatkov. Uporabite samo poizvedovalne funkcije, ki jih je mogoče delegirati. To je edini način, da vaša aplikacija deluje dobro in uporabnikom zagotovite dostop do vseh informacij, ki jih potrebujejo.

Bodite pozorni na opozorila o dodeljevanju, ki identificirajo mesta, kjer dodeljevanje ni mogoča. Če delate z majhnimi nabori podatkov (manj kot 500 zapisov), lahko uporabite kateri koli vir podatkov in formulo, ker lahko aplikacija obdela podatke lokalno, če formule ni mogoče delegirati.

Opomba

Opozorila o dodeljevanju vam lahko pomagajo upravljati aplikacijo, da ima pravilne rezultate. Če podatki v vašem vir podatkov presegajo 500 zapisov in funkcije ni mogoče dodeliti, bo Power Fx formulo označil z modro podčrtano.

Viri podatkov za pooblastitev

Dodeljevanje je podprto samo za določene tabelarične vire podatkov. Če vir podatkov podpira dodeljevanje, njegova dokumentacija za povezovalnike opisuje to podporo. Na primer, ti tabelarični viri podatkov so najbolj priljubljeni in podpirajo dodeljevanje:

Za uvožene Excelove delovne zvezke (ki uporabljajo vir podatkov Dodajanje statičnih podatkov v aplikacijo), zbirke in tabele, shranjene v spremenljivkah konteksta, dodeljevanje ni potrebno. Vsi ti podatki so že v pomnilniku in uporabiti je mogoče poln jezik v storitvi Power Apps.

Dodeljive funkcije

Naslednji korak je uporaba samo tistih formul, ki jih je mogoče dodeliti. Tukaj so vključeni elementi formule, ki bi jih bilo mogoče dodeliti. Vendar pa je vsak vir podatkov drugačen in vsi ne podpirajo vseh teh elementov. Preverite za opozorila o dodeljevanju v vaši določeni formuli.

Funkcije filtriranja

Filter, Išči, Prvi in Poišči je mogoče delegirati.

V funkcijah Filter in LookUp jih lahko uporabite s stolpci tabele, da izberete primerne zapise:

  • And (vključno &&), Or (vključno ||), Not (vključno !)
  • V

    Opomba

    V se dodeli samo za stolpce temeljnega vira podatkov. Na primer, če je vir podatkov tabela Računi, potem se Filter(Accounts, Name in ["name1", "name2"]) dodeli na vir podatkov za oceno. Vendar Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) se ne dodeli, saj je stolpec Polno ime v drugi tabeli (PrimaryContact) kot Računi. Izraz je ovrednoten lokalno.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • Konstantne vrednosti, ki so enake po vseh zapisih, kot so lastnostni kontrolnikov ter globalne spremenljivke in spremenljivke konteksta.

Uporabite lahko tudi dele formule, ki vrednotijo na stalno vrednost za vse zapise. Na primer, formule Left( Language(), 2 ), Date( 2019, 3, 31 ) in Today() niso odvisne od nobenih stolpcev zapisov in torej vrnejo isto vrednost za vse zapise. Te vrednosti je mogoče poslati v vir podatkov kot konstanto in ne bodo blokirale dodeljevanja.

Prejšnji seznam ne vključuje teh pomembnih elementov:

Omejitve poizvedb

Ravni iskanja

Power Apps podpira dve ravni iskanja. To pomeni, da ima lahko Power Fx izraz poizvedbe - največ - dve iskalni funkciji. Ta omejitev je namenjena ohranjanju zmogljivosti. Če izraz poizvedbe vključuje iskanje, Power Apps najprej izvede poizvedbo, da pridobi osnovno tabelo. Nato izvede drugo poizvedbo, ki razširi prvo tabelo z iskalnimi informacijami. Podpiramo še največ eno stopnjo nad to. Za način brez povezave pa podpiramo samo eno raven razširitev iskanja.

Vrednotenje izraza – lastnost entitete mora biti na levi strani 'LHS' operatorja enakosti

Pomembno je, da lastnost entitete, ki jo želite primerjati, umestite v izraz na levi strani 'LHS' enačbe. Za ponazoritev, v spodnjem primeru je lastnost entitete 'ID poslovne enote'.Ime vrednost lastnosti in jo je treba postaviti na LHS izraza, ki ga želite ovrednotiti. Naslednji izraz je uspešen:

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

Vendar ta izraz ne bo:

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

Funkcije razvrščanja

Funkciji Sort in SortByColumns je mogoče dodeliti.

V funkciji Sort je lahko formula samo ime enega stolpca in ne more vključevati drugih operaterjev ali funkcij.

Združevalne funkcije

Nekatere agregatne funkcije je mogoče delegirati glede na podporo v ozadju. Funkcije Sum, Average, Min in Max je mogoče dodeliti. Funkcije štetja, kot sta CountRows in Count lahko tudi prenesete. Samo omejeno število podatkovnih virov trenutno podpira te funkcije za delegiranje. Za več informacij glejte Seznam delegacij.

Podpora za delegiranje RemoveIf in UpdateIf je v poskusnem stanju in je privzeto izklopljena.

Funkcije, ki jih ni mogoče prenesti

Vse ostale funkcije ne podpirajo dodeljevanja, vključno s temi pomembnimi funkcijami:

Omejitve, ki jih ni mogoče prenesti

Formule, ki jih ni mogoče dodeliti, bodo obdelane lokalno. Lokalna obdelava omogoča uporabo celotne širine Power Apps jezika formule. Cena za to pa je naslednja: vse podatke je treba najprej dovesti v napravo, kar lahko vključuje pridobivanje velike količine podatkov prek omrežja. To lahko traja dalj časa in daje vtis, da je aplikacija počasna ali se je morda zrušila.

V izogib temu storitev Power Apps določa omejitev količine podatkov, ki jih je mogoče obdelati lokalno: privzeto je to 500 zapisov. To številko smo izbrali, da bi še vedno imeli popoln dostop do majhnih naborov podatkov in bi lahko natančneje določili uporabo velikih naborov podatkov z ogledom delnih rezultatov.

Seveda se svetuje previdnost pri uporabi te storitve, ker lahko zmede uporabnike. Na primer, zamislimo si funkcijo Filter s formulo izbire, ki je ni mogoče dodeliti, po viru podatkov, ki vsebuje milijon zapisov. Ker se filtriranje izvede lokalno, je pregledanih samo prvih 500 zapisov. Če je želeni zapis zapis 501 ali 500.001, potem ni obravnavan ali vrnjen s funkcijo Filter.

Združevalne funkcije lahko prav tako povzročijo zmedo. Vzemimo funkcijo Average za stolpec tega istega vira podatkov z milijonom zapisov. Povprečje v tem primeru ni mogoče dodeliti, ker izraz ni dodeljen (glejte prejšnjo opombo), zato se izračuna povprečje le za prvih 500 zapisov. Če niste previdni, bi si lahko uporabnik vaše aplikacije delni odgovor napačno razlagal kot popoln odgovor.

Spreminjanje omejitve

500 je privzeto število zapisov, ki pa ga lahko spremenite za celotno aplikacijo:

  1. Izberite Nastavitve.
  2. V razdelku Splošno spremenite nastavitev Omejitev števila vrstic podatkov z 1 na 2000.

V nekaterih primerih veste, da bo 2000 (ali 1000 ali 1500) zadovoljilo potrebe vašega scenarija. Previdno lahko to številko povečate, da ustreza vašemu scenariju. Ko povečate to številko, lahko učinkovitost delovanja vaše aplikacije postane slabša, zlasti pri širokih tabelah z veliko stolpci. A še vedno je najbolje, da dodelite toliko, kot lahko.

Če želite zagotoviti, da se lahko vaša aplikacija prilagaja velikim naborom podatkov, zmanjšajte to nastavitev na 1. Vse, česar ni mogoče dodeliti, vrne en zapis, ki bi ga morali zlahka najti, ko preskušate aplikacijo. To lahko pomaga pri preprečevanju presenečenj, ko poskušate aplikacijo za dokazovanje konceptov pretvoriti v produkcijsko.

Opozorila o dodeljevanju

Da boste lažje vedeli, kaj se in česar se ne da dodeliti, storitev Power Apps zagotovi opozorilo (rumeni trikotnik), ko ustvarite formulo, ki vsebuje kaj, česar ni mogoče dodeliti.

Opozorila o dodeljevanju se prikažejo samo za formule, ki operirajo na dodeljivih virih podatkov. Če ne vidite opozorila in menite, da vaša formula ni pravilno delegirana, preverite vrsto vir podatkov glede na seznam prenosljivih virov podatkov prej v tem Članek.

Primeri

Za ta primer boste samodejno ustvarili aplikacijo na treh zaslonih na podlagi tabele strežnika SQL Server z imenom [dbo].[Fruit]. Za informacije o tem, kako ustvariti aplikacijo, lahko podobna načela uporabite v članku o Dataverse za SQL Server.

Aplikacija na treh zaslonih.

Lastnost Items galerije je nastavljena na formulo, ki vsebuje funkciji SortByColumns in Search, ki ju je obe mogoče dodeliti.

V polje za iskanje vnesite "Apple".

Na vrhu zaslona se za trenutek prikažejo gibljive pike, saj aplikacija komunicira s strežnikom SQL Server, da obdela iskalno poizvedbo. Prikažejo se vsi zapisi, ki izpolnjujejo pogoje iskanja, tudi če vir podatkov vsebuje milijone zapisov.

Kontrolnik vnosa besedila iskanja.

Rezultati iskanja vključujejo "Apples" in "Pineapple", ker funkcija Search išče povsod v stolpcu besedil. Če bi želeli najti samo zapise, ki vsebujejo iskalni izraz na začetku imena sadja, lahko uporabite drugo funkcijo, ki jo je mogoče dodeliti, Filter, z bolj kompleksnim iskalnim izrazom. (Za poenostavitev odstranite priklic funkcije SortByColumns.)

Odstranitev priklica funkcije SortByColumns.

Novi rezultati vključujejo "Apples" ne pa tudi "Pineapple". A poleg galerije se prikaže rumeni trikotnik (in v sličici zaslona, če leva vrstica za krmarjenje prikazuje sličice), pod delom formule pa se prikaže modra, valovita črta. Vsak od teh elementov označuje opozorilo. Če se s kazalcem miške pomaknete nad trikotnik poleg galerije, se prikaže to sporočilo:

Opozorilo o dodeljevanju ob pomiku kazalca miške nad element.

SQL Server je dodeljiv vir podatkov in Filter je dodeljiva funkcija, toda funkcij Mid in Len ni mogoče dodeliti nobenemu viru podatkov.

Je pa delovalo, kajne? No, recimo. Zato pa je to opozorilo in ne rdeča, valovita vijuga.

  • Če tabela vsebuje manj kot 500 zapisov, formula deluje odlično. Vsi zapisi se dovedejo v napravo in lokalno se uporabi Filter.
  • Če tabela vsebuje več kot 500 zapisov, formula ne vrne zapisov nad vključno 501, tudi če ustrezajo pogojem.

Glejte tudi

Vpliv uporabe funkcij, ki jih ni mogoče dodeliti, in neprimerne omejitve podatkovnih vrstic na učinkovitost delovanja
Nasveti za učinkovitost delovanja in najboljše prakse pri uporabi pooblastitev

Opomba

Ali nam lahko poveste, kateri je vaš prednostni jezik za dokumentacijo? Izpolnite kratko anketo. (upoštevajte, da je v angleščini)

Z anketo boste porabili približno sedem minut. Ne zbiramo nobenih osebnih podatkov (izjava o zasebnosti).