Ograničenja upita: delegiranje i ograničenja upita

Delegiranje

Power Apps Najbolje funkcionira s pozadinskim izvor podataka kada Power Fx se upit može u potpunosti prevesti u ekvivalentni upit koji se može pokrenuti na izvor podataka. Power Apps Šalje upit koji izvor podataka razumije, upit se izvodi na izvor podataka, a rezultati upita se vraćaju Power Apps. Na primjer, izvor podataka može obaviti posao filtriranja podataka na izvor podataka i vratiti samo retke koji zadovoljavaju kriterije filtra. Kada to radi ispravno, kažemo da je upit delegiran izvor podataka za obavljanje posla upita.

Međutim, Power Fx upiti se ne mogu uvijek prevesti u ekvivalentne upite na svim izvorima podataka. Na primjer, Dataverse podržava više značajki upita od Excela. Dataverse podržava operator upita "in" (članstvo), a Excel ne. Kažemo da se upit ne može delegirati ako upit koristi značajku koju izvor podataka ne podržava. Općenito, ako se bilo koji dio izraza upita ne može delegirati, ne delegiramo nijedan dio upita.

Kada se upit ne može delegirati, Power Apps dobiva samo prvih 500 zapisa iz izvor podataka a zatim izvodi akcije u upitu. To se ograničenje može povećati na 2000 zapisa Promjena ograničenja ograničava veličinu rezultata na 500 zapisa Power Apps kako bi se sačuvale dobre performanse Power Apps. Eksperimentiranjem smo otkrili da skupovi rezultata veći od ovih veličina uvode probleme s performansama za vašu aplikaciju i Power Apps općenito.

Međutim, ovo ograničenje može biti problem jer upit može vratiti netočne rezultate ako podaci na izvor podataka premašuju 500/2000 zapisa. Na primjer, razmotrite primjer u kojem vaš izvor podataka ima 10 milijuna zapisa i vaš upit mora raditi na posljednjem dijelu podataka. (Na primjer, obiteljska imena koja počinju sa "Z") Međutim, u upitu se nalazi operator koji se ne može delegirati (na primjer, različit). U tom slučaju dobivate samo prvih 500/2000 zapisa i imate netočne rezultate.

Stvorite upite Power Fx pomoću tablica koje se mogu delegirati za izvor podataka. Trebali biste koristiti samo funkcije upita koje se mogu delegirati. To je jedini način da vaša aplikacija bude uspješna i da korisnici mogu pristupiti svim potrebnim informacijama.

Obratite pozornost na upozorenja delegacija koja identificiraju mjesta na kojima delegacija nije moguća. Ako radite s malim skupovima podataka (manje od 500 zapisa), možete koristiti bilo koju izvor podataka i formulu jer aplikacija može obrađivati podatke lokalno ako se formula ne može delegirati.

Napomena

Upozorenja delegiranja pomažu vam upravljati aplikacijom tako da ima točne rezultate. Ako podaci u vašoj izvor podataka premašuju 500 zapisa i funkcija se ne može delegirati, Power Fx označit će formulu plavim podcrtavanjem.

Izvori podataka koji se mogu delegirati

Delegiranje je podržano samo za određene tablične izvore podataka. Ako izvor podataka podržava delegiranje, to dokumentacija poveznika navodi tu potporu. Na primjer, ovi tablični izvori podataka su najpopularniji i podržavaju delegiranje:

Uvezene radne knjige Excel (koristeći izvor podataka Dodaj statičke podatke svojoj aplikaciji) zbirke i tablice pohranjene u varijablama konteksta ne zahtijevaju delegiranje. Svi ovi podaci već su u memoriji i može se primijeniti cijeli jezik Power Apps.

Funkcije koje se mogu delegirati

Sljedeći korak je upotreba samo onih formula koje se mogu delegirati. Ovdje su uključeni elementi formule koji bi se mogli delegirati. Međutim, svaki izvor podataka je drugačiji i ne podržavaju svi sve ove elemente. Provjerite upozorenja delegiranja u vašoj određenoj formuli.

Funkcije filtra

Filter,Search,First ... ... i LookUp mogu se delegirati.

Unutar funkcija Filtriraj i Pretraži možete ih koristiti sa stupcima tablice za odabir odgovarajućih zapisa:

  • I (uključujući &&), Ili (uključujući ||), Ne (uključujući !)
  • U

    Napomena

    Funkcija In delegirana je samo za stupce u bazi izvora podataka. Na primjer, ako je izvor podataka tablica Računi, onda Filter(Accounts, Name in ["name1", "name2"]) delegira u izvor podataka za evaluaciju. Međutim, Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) ne deligira jer se stupac Ime i prezime nalazi u drugoj tablici (Primarni kontakt), a ne Računi. Izraz se evaluira lokalno.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • Počinjes, Završavas
  • Konstantne vrijednosti koje su iste u svim zapisima, kao što su kontrolna svojstva i globalne i kontekstne varijable.

Možete koristiti i dijelove svoje formule koji vrednuju konstantnu vrijednost svih zapisa. Na primjer, Lijevo( Jezik(), 2 ), Datum( 2019, 3, 31 ) i Danas() ne ovise o stupcima zapisa i, stoga, vraćaju istu vrijednost za sve zapise. Ove vrijednosti mogu se poslati na izvor podataka kao konstanta i neće blokirati delegiranje.

Prethodni popis ne uključuje ove značajne stavke:

Ograničenja upita

Razine pretraživanja

Power Apps podržava dvije razine pretraživanja. To znači da izraz upita Power Fx može imati - najviše - dvije funkcije pretraživanja. Ovo ograničenje je očuvanje performansi. Ako izraz upita uključuje pretraživanje, Power Apps najprije postavlja upit za dohvaćanje osnovne tablice. Zatim izvodi drugi upit koji proširuje prvu tablicu s informacijama o pretraživanju. Podržavamo još jednu razinu iznad toga kao maksimum. Međutim, za izvanmrežni način podržavamo samo jednu razinu proširenja pretraživanja.

Procjena izraza – vlasništvo subjekta mora biti na lijevoj strani "LHS" operatora jednakosti

Važno je postaviti svojstvo entiteta koje treba usporediti u izrazu na lijevoj strani 'LHS' jednadžbe. Za ilustraciju, u primjeru ispod entitetskog svojstva 'ID poslovne jedinice'. Naziv je vrijednost svojstva i mora se staviti na LHS izraza koji se ocjenjuje. Sljedeći izraz uspijeva:

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

Međutim, ovaj izraz neće:

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

Funkcije sortiranja

Sortiraj i Sortirajpostupcu mogu se delegirati.

U formuli Sortiraj, može biti samo naziv jednog stupca i ne može uključiti druge operatore ili funkcije

Funkcije agregacije

Neke funkcije zbrajanja mogu se delegirati ovisno o podršci na stražnjem kraju. Zbroj, Prosjek, Minimalno i Maksimalno mogu se delegirati. Funkcije brojanja kao što su CountRows i Count također se mogu delegirati. Samo ograničen broj izvora podataka podržava te funkcije za delegiranje u ovom trenutku. Dodatne informacije potražite u odjeljku Popis delegiranja.

RemoveIf i UpdateIf podrška za delegiranje je u eksperimentalnom i isključena prema zadanim postavkama.

Funkcije koje se ne mogu delegirati

Sve ostale funkcije ne podržavaju delegiranje, uključujući ove značajne funkcije:

Ograničenja koja se ne mogu delegirati

Formule koje nije moguće delegirati obradit će se lokalno. Lokalna obrada omogućuje korištenje pune širine jezika formule Power Apps . Ali po cijeni: svi se podaci moraju najprije donijeti na uređaj, što bi moglo uključivati dohvaćanje velike količine podataka putem mreže. Ovo može potrajati i ostaviti dojam da je vaša aplikacija spora ili se možda ruši.

Da biste to izbjegli, Power Apps nameće ograničenje za količinu podataka koja se može lokalno obraditi: prema zadanom 500 zapisa. Odabrali smo ovaj broj tako da imate i dalje potpuni pristup malim skupovima podataka i moći ćete poboljšati upotrebu velikih skupova podataka tako što ćete vidjeti djelomične rezultate.

Očito se mora paziti kada koristite ovu opremu jer može zbuniti korisnike. Na primjer, razmislite o funkciji Filtriraj s formulom odabira koja se ne može delegirati preko izvora podataka koji obuhvaća milijun zapisa. Kako se filtriranje obavlja lokalno, skenira se samo prvih 500 zapisa. Ako je željeni zapis zapis 501 ili 500,001, ne uzima ga u obzir niti ga vraća Filtriraj.

Agregatne funkcije također mogu stvoriti zbrku. Uzmite Prosjek preko stupca tog istog milijunskog zapisa izvora podataka. Prosjek se ne može delegirati u ovom slučaju jer izraz nije delegiran (pogledajte prethodnu napomenu), pa se prosjek izračunava samo za prvih 500 zapisa. Ako niste pažljivi, djelomični odgovor korisnik vaše aplikacije može pogrešno protumačiti kao potpuni odgovor.

Promjena ograničenja

500 je zadani broj zapisa, ali taj broj možete promijeniti za čitavu aplikaciju:

  1. Odaberite Postavke.
  2. U dijelu Općenito promijenite postavku Ograničenje podatkovnog retka s 1 na 2000.

U nekim slučajevima znate da će 2.000 (ili 1.000 ili 1.500) zadovoljiti potrebe vašeg scenarija. S pažnjom možete povećati ovaj broj kako bi odgovarao vašem scenariju. Kako povećavate ovaj broj, izvedba vaše aplikacije može opadati, posebice za široke tablice s puno stupaca. Ipak, najbolji odgovor je delegirati koliko god možete.

Da biste bili sigurni da se vaša aplikacija može skalirati na velike skupove podataka, smanjite tu postavku na 1. Sve što se ne može delegirati vraća jedan zapis, što bi trebalo biti lako otkriti prilikom testiranja vaše aplikacije. Ovo vam može pomoći da izbjegnete iznenađenja kada pokušavate prenijeti dokaz koncepta aplikacije na proizvodnju.

Upozorenja o delegiranju

Da biste lakše saznali što je, a što nije delegirano, Power Apps pruža upozorenje (žuti trokut) kada stvorite formulu koja sadrži nešto što se ne može delegirati.

Upozorenja delegiranja pojavljuju se samo u formulama koje djeluju na delegiranim izvorima podataka. Ako ne vidite upozorenje i smatrate da formula nije pravilno delegirana, provjerite vrstu izvor podataka na popisu izvora podataka koji se mogu delegirati u prethodnom dijelu ovog članka.

Primjeri

U ovom primjeru automatski ćete generirati aplikaciju na tri zaslona na temelju tablice SQL Server pod nazivom [dbo].[Fruit]. Za informacije o tome kako generirati aplikaciju možete primijeniti slična načela u članku o Dataverse SQL Serveru.

Aplikacija s tri zaslona.

Svojstvo galerije Stavke postavljeno je na formulu koja uključuje funkcije Sortirajpostupcima i Traži, obje se mogu delegirati.

U okvir za pretraživanje upišite "Apple".

Pokretne točke na trenutak se pojavljuju pri vrhu zaslona dok aplikacija komunicira s SQL Serverom za obradu zahtjeva za pretraživanje. Pojavljuju se svi zapisi koji zadovoljavaju kriterije pretraživanja, čak i ako izvor podataka uključuje milijune zapisa.

Kontrola Pretraži unos teksta.

Rezultati pretraživanja uključuju funkciju „Jabuke” i „Ananas” zbog toga što funkcija Traži traži svugdje u stupcu teksta. Ako ste željeli pronaći samo zapise koji sadrže termin za pretraživanje na početku naziva voća, možete koristiti drugu funkciju koja se može delegirati, Filtrirajte s kompliciranijim terminom za pretraživanje. (Radi jednostavnosti uklonite poziv Sortirajpostupcima)

Uklonite poziv Sortirajpostupcima.

Novi rezultati uključuju „Jabuke”, ali ne „Ananas”. Međutim, pored galerije pojavljuje se žuti trokut (i na sličici zaslona ako lijeva navigacijska traka prikazuje sličice) a plava, valovita linija pojavljuje se ispod dijela formule. Svaki od ovih elemenata označava upozorenje. Ako zadržite pokazivač miša iznad žutog trokuta pokraj galerije, pojavit će se ova poruka:

Upozorenje o zadržavanju pokazivača iznad delegiranja.

SQL Server je izvor podataka koji se može delegirati a Filtriraj je funkcija koja se može delegirati. Ipak, Srednja i Dužina ne mogu se delegirati na bilo koji izvor podataka.

Ali uspjelo je, zar ne? Pa, donekle. I zato je ovo upozorenje, a ne crveni, valoviti zavijutak.

  • Ako tablica sadrži manje od 500 zapisa, formula je funkcionirala savršeno. Svi zapisi preneseni su na uređaj a Filtriraj je primijenjeno lokalno.
  • Ako tablica sadrži više od 500 zapisa, formula neće vratiti zapis 501 ili veći, čak i ako odgovara kriterijima.

Pogledajte također

Učinak korištenja funkcija koje se ne mogu delegirati i neprikladnih ograničenja retka podataka na izvedbu
Savjeti za izvedbu i najbolje prakse za korištenje delegiranja

Napomena

Možete li nam reći više o željenim jezicima za dokumentaciju? Ispunite kratki upitnik. (imajte na umu da je upitnik na engleskom jeziku)

Ispunjavanje upitnika će trajati otprilike sedam minuta. Osobni podaci se ne prikupljaju (izjava o zaštiti privatnosti).