Objašnjenje delegiranja u aplikacijama sa podlogom
Power Apps uključuje moćan skup funkcija za filtriranje, sortiranje i oblikovanje tabela podataka u aplikaciji podloge za crtanje: Funkcije Filter , Sort i AddColumns imenuju samo nekoliko. Pomoću ovih funkcija možete korisnicima omogućiti fokusiran pristup informacijama koje su im potrebne. Za one sa iskustvom u bazama podataka, korišćenje ovih funkcija je ekvivalent pisanju upita za bazu podataka.
Ključ za izgradnju efikasnih aplikacija je da smanjite količinu podataka koja se mora doneti na vaš uređaj. Možda vam je potrebno samo nekoliko zapisa od njih milion ili jedna zbirna vrednost može da predstavlja hiljade zapisa. Ili se može preuzeti samo prvi skup zapisa, a ostatak se dovesti kada korisnik naznači da želi više. Usredsređenost može dramatično umanjiti procesorsku snagu, količinu memorije i propusni opseg mreže koji su potrebni vašoj aplikaciji, što dovodi do kraćeg vremena odziva za vaše korisnike, čak i na telefonima povezanim putem mobilne mreže.
Delegacija je mesto gde izražajnost Power Apps formula zadovoljava potrebu da se podaci svedu na najmanju moguću sumu. Ukratko, Power Apps će delegirati obradu podataka izvor podataka, umesto da podatke premešta u aplikaciju radi lokalne obrade.
Ono što postaje komplikovano, a razlog zbog kojeg ovaj članak postoji, jeste taj što ne može sve što se može izraziti formulom Power Apps može da se delegira na svaku izvor podataka. Ovaj Power Apps jezik oponaša Excelov jezik formule, dizajniran sa potpunim i trenutnim pristupom punoj radnoj svesci u memoriji, sa velikim brojem numeričkih funkcija i funkcija za manipulaciju tekstom. Kao rezultat toga, Power Apps je mnogo bogatiji nego što većina izvora podataka može da podrži, uključujući moćne mašine baze podataka kao što je SQL Server.
Rad sa velikim skupovima podataka zahteva korišćenje izvora podataka i formula koje se mogu delegirati. To je jedini način da vaša aplikacija radi dobro i da korisnicima osigura pristup svim informacijama koje su im potrebne. Obratite pažnju na upozorenja o delegiranju koja identifikuju mesta na kojima delegiranje nije moguće. Ako radite sa malim skupovima podataka (manje od 500 zapisa), možete koristiti bilo koji izvor podataka i formulu jer aplikacija može lokalno da obradi podatke ako formula ne može da se delegira.
Napomena
Upozorenja delegacije prethodno su označena Power Apps kao "plava tačka", ali su predlozi delegacija od tada ponovo klasifikovani kao upozorenja. Ako podaci u vašem izvor podataka premašuju 500 zapisa, a funkcija ne može da se delegira, Power Apps možda neće moći da preuzme sve podatke, a aplikacija možda ima pogrešne rezultate. Upozorenja o delegiranju pomažu vam da upravljate svojom aplikacijom tako da ima ispravne rezultate.
Izvori podataka koje je moguće delegirati
Delegiranje je podržano samo za određene tabelarne izvore podataka. Ako izvor podataka podržava delegiranje, dokumentacija za njegov konektor ističe tu podršku. Na primer, ovi tabelarni izvori podataka su najpopularniji i podržavaju delegiranje:
- Power Apps delegibilne funkcije i operacije za Microsoft Dataverse
- Power Apps delegibilne funkcije i operacije za SharePoint
- Power Apps delegibilne funkcije i operacije za SQL Server
- Power Apps delegiranih funkcija i operacija za Salesforce
Uvezene Excel radne sveske (koje koriste izvor podataka Dodavanje statičkih podataka u aplikaciju), kolekcije i tabele uskladištene u promenljivama konteksta ne zahtevaju delegiranje. Svi ti podaci su već u memoriji, a ceo jezik Power Apps može primeniti.
Funkcije koje se mogu delegirati
Sledeći korak je upotreba samo onih formula koje se mogu delegirati. Ovde su uključeni elementi formula koji bi se mogli delegirati. Međutim, svaki izvor podataka je različit i ne podržavaju svi oni sve ove elemente. Proverite da li postoje upozorenja o delegiranju u vašoj određenoj formuli.
Ove liste će se vremenom menjati. Radimo na tome da podržimo više funkcija i operatora sa delegiranjem.
Funkcije filtriranja
Funkcije Filter, Search i LookUp mogu se delegirati.
Unutar funkcija Filter i LookUp, možete ih koristiti sa kolonama tabele za odabir odgovarajućih zapisa:
- And (uključujući &&), Or (uključujući ||), Not (uključujući !)
- U
- =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- StartsWith, EndsWith
- Konstantne vrednosti koje su iste u svim zapisima, kao što su svojstva kontrola i globalne i promenljive konteksta.
Takođe možete koristiti delove svoje formule koji kao rezultat daju konstantnu vrednost za sve zapise. Na primer, Left( Language(), 2 ), Date( 2019, 3, 31 ) i Today() ne zavise od bilo koje kolone zapisa i stoga vraćaju istu vrednost za sve zapise. Ove vrednosti se mogu poslati u izvor podataka kao konstanta i neće blokirati delegiranje.
Prethodna lista ne uključuje ove značajne stavke:
- Ako
- *, /, Mod
- Concatenate (uključujući &)
- ExactIn
- Funkcije manipulacije niskom: Lower, Upper, Left, Mid, Len, ...
- Signali: Location, Acceleration, Compass, ...
- Promenljive vrednosti: Rand, ...
- Kolekcije
Funkcije sortiranja
Sort i SortByColumns mogu se delegirati.
U funkciji Sort, formula može biti samo naziv jedne kolone i ne može uključiti druge operatore ili funkcije.
Agregatne funkcije
Sum, Average, Min i Max mogu se delegirati. Trenutno samo ograničen broj izvora podataka podržava ovo delegiranje; proverite lista delegiranja za detalje.
Napomena
Ako izraz nije delegiran, radiće samo na prvih 500 zapisa (moguće je konfigurisati do 2000, pogledajte Promena ograničenja) preuzetih iz izvora podataka umesto delegiranja obrade svih podataka na izvoru podataka
Funkcije brojanja kao što su CountRows, CountA i Count ne mogu se delegirati.
Ostale agregatne funkcije kao što su StdevP i VarP ne mogu se delegirati.
Funkcije oblikovanja tabele
AddColumns, DropColumns, RenameColumns i ShowColumns delimično podržavaju delegiranje. Formule u njihovim argumentima mogu biti delegirane. Međutim, izlazi ovih funkcija podležu ograničenju nedelegiranja zapisa.
Kao u ovom primeru, autori često koriste AddColumns i LookUp za spajanje informacija iz jedne tabele u drugu, što se obično naziva pridruživanje u terminologiji baza podataka:
AddColumns( Products,
"Supplier Name",
LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name
)
Iako su Products i Suppliers izvori podataka koji mogu da se delegiraju i LookUp je funkcija koja može da se delegira, izlaz funkcije AddColumns ne može da se delegira. Rezultat cele formule je ograničen na prvi deo izvora podataka Products. Pošto funkcija LookUp i njen izlaz mogu da se delegiraju, podudaranje za Suppliers može se naći bilo gde u izvoru podataka, čak i ako je velika.
Ako koristite AddColumns na taj način, LookUp mora da napravi zasebne pozive izvoru podataka za svaki od tih prvih zapisa u Products, što izaziva mnogo mrežnih pregovora. Ako je izvor podataka Suppliers dovoljno mali i ne menja se često, možete pozvati funkciju Collect u OnStart da kešira izvor podataka u vašoj aplikaciji kada se pokrene. Kao alternativu, možete restrukturirati aplikaciju tako što ćete povlačiti u nju povezane zapise samo kada ih korisnik zatraži.
Funkcije koje se ne mogu delegirati
Sve ostale funkcije ne podržavaju delegiranje, uključujući ove značajne funkcije:
- First, FirstN, Last, LastN
- Choices
- Concat
- Collect, ClearCollect
- CountIf, RemoveIf, UpdateIf
- GroupBy, Ungroup
Ograničenja koja se ne mogu delegirati
Formule koje se ne mogu delegirati obradiće se lokalno. To omogućava da se koristi puna širina Power Apps jezik formule. Ali postoji cena: svi podaci se prvo moraju dopremiti na uređaj, što bi moglo podrazumevati preuzimanje velike količine podataka preko mreže. To može da potraje, što ostavlja utisak da je vaša aplikacija spora ili je možda srušena.
Da biste to Power Apps, on nameće ograničenje količine podataka koji se mogu obrađivanja lokalno: 500 zapisa po podrazumevanoj vrednosti. Odabrali smo ovaj broj da biste i dalje imali potpun pristup malim skupovima podataka i mogli da poboljšate upotrebu velikih skupova podataka gledajući delimične rezultate.
Očigledno je da morate biti oprezni kada koristite ovaj objekat, jer može zbuniti korisnike. Na primer, uzmite u obzir funkciju Filter sa izborom formule koja se ne može delegirati, preko izvora podataka koji sadrži milion zapisa. Pošto se filtriranje obavlja lokalno, skenira se samo prvih 500 zapisa. Ako se željeni zapis nalazi na rednom broju 501 ili 500.001, on se ne uzima u obzir niti ga funkcija filter vraća.
Agregatne funkcije takođe mogu izazvati zbrku. Uzmimo za primer funkciju Average nad kolonom istog izvora podataka sa milion zapisa. Prosek nije moguće delegirati u ovom slučaju jer izraz nije delegiran (pogledajte raniju belešku), pa se uprosečava samo prvih 500 zapisa. Ako niste pažljivi, korisnik aplikacije bi mogao da delimični odgovor pogrešno shvati kao potpuni odgovor.
Promena ograničenja
500 je podrazumevani broj zapisa, ali taj broj možete da promenite za celu aplikaciju:
- Na kartici Datoteka izaberite opciju Podešavanja.
- U meniju Opšti podaci promenite podešavanje Ograničenje reda podataka od 1 do 2000.
U nekim slučajevima ćete znati da će 2000 (ili 1000 ili 1500) zadovoljiti potrebe vašeg scenarija. Uz pažnju, možete povećati ovaj broj kako bi odgovarao vašem scenariju. Kako povećavate ovaj broj, performanse aplikacije mogu se pogoršati, posebno za široke tabele sa mnogo kolona. Ipak, najbolji odgovor je da delegirate onoliko koliko možete.
Da biste osigurali da vaša aplikacija može da se skalira do velikog broja podataka, smanjite ovo podešavanje na 1. Sve što ne može da se delegirati vratiće samo jedan zapis, što bi trebalo lako da otkrijete prilikom testiranja aplikacije. Ovo vam može pomoći da izbegnete iznenađenja kada pokušate da promovišete aplikaciju za proveru koncepta u proizvodnju.
Upozorenja o delegiranju
Da bi lakše znao šta jeste, a šta nije delegirano, Power Apps obezbeđuje upozorenje (žuti trougao) kada kreirate formulu koja sadrži nešto što nije moguće delegirati.
Upozorenja o delegiranju se prikazuju samo u formulama koje rade sa izvorima podataka koji mogu da se delegiraju. Ako ne vidite upozorenje i verujete da vaša formula nije pravilno delegirana, proverite vrstu izvora podataka na listi izvori podataka koji mogu da se delegiraju ranije u ovoj temi.
Primeri
Za ovaj primer, automatski ćete generisati aplikaciju sa tri ekrana zasnovanu na SQL Server tabeli pod nazivom [dbo].[Fruit]. Za informacije o generisanje aplikacije možete da primenite slične principe u tema o Dataverse na SQL Server.

Svojstvo galerije Items je postavljeno na formulu koja sadrži funkcije SortByColumns i Search, od kojih obe mogu da se delegiraju.
U polje za pretragu upišite "Apple".
Pokretne tačke se na trenutak pojavljuju blizu vrha ekrana dok aplikacija komunicira sa platformom SQL Server radi obrade zahteva za pretragom. Prikazaće se svi zapisi koji ispunjavaju kriterijume za pretraživanje, čak i ako izvor podataka sadrži milione zapisa.

Rezultati pretrage uključuju "Apples", "Crab apples" i "Pineapple" zato što funkcija Search traži svuda u koloni teksta. Ako ste želeli da pronađete samo zapise koji sadrže termin za pretragu na početku imena voća, možete koristiti drugu funkciju koju možete da delegirate, Filter, sa složenijim terminom za pretragu. (Radi jednostavnosti, uklonite poziv SortByColumns.)

Novi rezultati uključuju "Apples", ali ne "Crab apples" niti "Pineapple". Međutim, pored galerije se prikazuje žuti trougao (i na sličici ekrana ako se u levoj traci za navigaciju prikazuju sličice), a ispod dela formule pojavljuje se plava, talasasta linija. Svaki od ovih elemenata označava upozorenje. Ako zadržite pokazivač iznad žutog trougla pored galerije, pojavljuje se sledeća poruka:

SQL Server je izvor podataka koji može da se delegira, a Filter je funkcija koja može da se delegira; međutim, funkcije Mid i Len ne mogu da se delegiraju ni u jednom izvoru podataka.
Ali uspelo je, zar ne? Pa, moglo bi se reći. I zato je ovo upozorenje, a ne crvena talasasta škrabotina.
- Ako tabela sadrži manje od 500 zapisa, formula je funkcionisala savršeno. Svi zapisi su preneti na uređaj i funkcija Filter je primenjena lokalno.
- Ako tabela sadrži više od 500 zapisa, formula neće vratiti zapis 501 ili viši, čak i ako odgovara kriterijumima.
Takođe pogledajte
Uticaj korišćenja funkcija koje nije moguće delegirati i neodgovarajućeg ograničenja reda podataka na performanse
Saveti za performanse i najbolje prakse za korišćenje delegiranja