A delegálás ismertetéseUnderstand delegation

A PowerApps számos hatékony függvényt tartalmaz adattáblázatok szűréséhez, rendezéséhez és alakításához. Ezek közül néhány, például a Filter (Szűrő), a Sort (Rendezés) és az AddColumns (Oszlopok hozzáadása).PowerApps includes a powerful set of functions for filtering, sorting, and shaping tables of data: Filter, Sort, and AddColumns functions to name just a few. Ezekkel a szűrőkkel biztosíthatja, hogy a felhasználók csak a számukra szükséges információkra koncentrálhassanak.With these functions, you can provide your users with focused access to the information they need. Azok számára, akik jártasak az adatbázisok kezelésében, ezeknek a függvényeknek a használata egyenértékű adatbázis-lekérdezések írásával.For those with a database background, using these functions is the equivalent of writing a database query.

A hatékony alkalmazások összeállításának kulcsa, hogy minimálisra csökkentsük azoknak az adatoknak a mennyiségét, amelyeket az eszközre le kell tölteni.The key to building efficient apps is to minimize the amount of data that needs to be brought to your device. Lehetséges, hogy több milliónyi adat közül csak néhány rekordra van szükség, vagy hogy egyetlen, összesített érték rekordok ezreit helyettesítheti.Perhaps only a handful of records from a sea of millions are needed, or a single aggregate value can represent thousands of records. Az is előfordulhat, hogy csak az első rekordokat lehet lekérni, a többi pedig akkor töltődik le, ha a felhasználó jelzi, hogy továbbiakra is szüksége van.Or perhaps only the first set of records can be retrieved, and the rest brought in as the user gestures that they want more. A koncentráltság drámai mértékben lecsökkentheti az alkalmazás számára szükséges feldolgozási teljesítményt, memóriát és hálózati sávszélességet, ami a felhasználók számra gyorsabb válaszidőket jelent még mobilhálózatokhoz kapcsolódó telefonok esetében is.Being focused can dramatically reduce the processing power, memory, and network bandwidth needed by your app, resulting in snappier response times for your users, even on phones connected via a cellular network.

Delegálás az, amikor a PowerApps-képletek kifejezőképessége megfelel a lehető legkevesebb adat hálózati továbbítása iránti igénynek.Delegation is where the expressiveness of PowerApps formulas meets the need to minimize data moving over the network. Röviden, azt jelenti, hogy a PowerApps delegálja az adatfeldolgozást az adatforráshoz ahelyett, hogy letöltené az adatokat az alkalmazásba helyi feldolgozásra.In short, it means that PowerApps will delegate the processing of data to the data source, rather than moving the data to the app for processing locally.

Azonban ez nem mindig megy olyan könnyen, és ezért született ez a cikk, mivel nem minden, PowerApps-képlettel kifejezhető dolgot lehet bármelyik adatforrásnak delegálni.Where this becomes complicated, and the reason this article exists, is because not everything that can be expressed in a PowerApps formula can be delegated to every data source. A PowerApps-nyelv az Excel képletnyelvét utánozza, amelyet a memóriában lévő teljes munkafüzet teljes és azonnali elérésére terveztek számok és szöveg manipulálására alkalmas függvények széles választékával.The PowerApps language mimics Excel's formula language, designed with complete and instant access to a full workbook in memory, with a wide variety of numerical and text manipulation functions. Ennek eredményeként a PowerApps-nyelv sokkal gazdagabb, mint amit a legtöbb adatforrás támogatni képes, beleértve az olyan funkciógazdag adatbázismotorokat is, mint az SQL Server.As a result, the PowerApps language is far richer than most data sources can support, including powerful database engines such as SQL Server.

A nagy adatkészletekkel történő munkavégzés olyan adatforrások és képletek használatát teszi szükségessé, amelyek delegálhatók.Working with large data sets requires using data sources and formulas that can be delegated. Ez az egyetlen módja annak, hogy az alkalmazás folyamatosan jó teljesítményt nyújtson, és hogy a felhasználók biztosan elérhessék az összes szükséges információt.It is the only way to keep your app performing well and ensure users can access all the information they need. Figyeljen a kék ponttal jelölt javaslatokra, amelyek azokat a helyeket jelzik, ahol a delegálás nem lehetséges.Take heed of blue-dot suggestions that flag places where delegation is not possible. Ha kisméretű adatkészletekkel dolgozik (500 rekordnál kevesebb), akkor bármilyen adatforrást és képletet használhat, mivel a feldolgozást el lehet végezni helyeben, ha nem delegálható a képlet.If you're working with small data sets (less than 500 records), you can use any data source and formula as processing can be done locally if the formula cannot be delegated.

Adatforrások delegálásaDelegable data sources

Lásd a delegálási listát, amely egy teljes lista arról, hogy mely adatforrások támogatják a delegálást, és milyen mértékig.See the delegation list for the full list of which data sources support delegation and to what extent.

Folytatjuk delegálási támogatás hozzáadását a meglévő adatforrásokhoz és több adatforrás felvételét.We are continuing to add delegation support to existing data sources, as well as add more data sources.

(A „Statikus adatok felvétele az alkalmazásba” adatforrásának használatával) importált Excel-munkafüzetekhez, gyűjteményekhez és a környezeti változókban tárolt táblákhoz nem szükséges delegálás.Imported Excel workbooks (using the "Add static data to your app" data source), collections, and tables stored in context variables don't require delegation. Ezeknek az adatoknak mindegyike már a memóriában van, és a teljes PowerApps-nyelv alkalmazható.All of this data is already in memory, and the full PowerApps language can be applied.

Delegálható függvényekDelegable functions

A következő lépés az, hogy csak a delegálható függvényeket használja.The next step is to use only those formulas that can be delegated. Ez a cikk tartalmazza a delegálható képletelemeket.Included here are the formula elements that could be delegated. Azonban minden adatforrás különböző, és nem mindegyikük támogatja ezeknek az elemeknek az összességét.However, every data source is different, and not all of them support all of these elements. Keressen kék ponttal jelölt javaslatokat az adott képletben.Check for blue-dot suggestions in your particular formula.

Ezek a listák idővel változni fognak.These lists will change over time. Azon dolgozunk, hogy további függvényeket és operátorokat támogassunk delegálással.We're working to support more functions and operators with delegation.

SzűrőfüggvényekFilter functions

A Filter, a Search és a LookUp delegálhatók.Filter, Search, and LookUp can be delegated.

A Filter és a LookUp függvényen belül az alábbiakat lehet használni a tábla oszlopaival a megfelelő rekordok kiválasztására:Within the Filter and LookUp functions, the following can be used with columns of the table to select the appropriate records:

A képletnek azok a részei, amelyek minden rekordnál állandó értéket adnak, szintén használhatók.Portions of your formula that evaluate to a constant value for all records can also be used. Például a Left( Language(), 2 ) a rekord egyetlen oszlopától sem függ, ezért ugyanazt az értéket adja minden rekordnál.For example, Left( Language(), 2 ) does not depend on any columns of the record and therefore returns the same value for all records. Ez az érték gyakorlatilag egy konstans.It is effectively a constant. A környezeti változók, gyűjtemények és jelek használata lehet nem állandó, ezért megakadályozza a Filter és a LookUp függvény delegálását.Use of context variables, collections, and signals may not be constant and therefore will prevent Filter and LookUp from being delegated.

A fenti listából hiányzó néhány fontos elem:Some notable items missing from the above list:

Rendezési függvényekSorting functions

A Sort és a SortByColumns delegálható.Sort and SortByColumns can be delegated.

A Sort esetében a függvény csak egyetlen oszlop neve lehet, és nem tartalmazhat más operátorokat vagy függvényeket.In Sort, the formula can only be the name of a single column and can't include other operators or functions.

AggregátumfüggvényekAggregate functions

A Sum, az Average, a Min és a Max delegálható.Sum, Average, Min, and Max can be delegated. Jelenleg ezt a delegálást csak korlátozott számú adatforrás támogatja, további részletekért tekintse át a delegálási listát.Only a limited number of data sources support this delegation at this time, check the delegation list for more details.

A számítási függvények, például a CountRows, a CountA és a Count nem delegálhatók.Counting functions such as CountRows, CountA, and Count cannot be delegated.

Más aggregátumfüggvények, például az StdevP és a VarP nem delegálhatók.Other aggregate functions such as StdevP and VarP cannot be delegated.

Egyéb függvényekOther functions

A további függvények egyike sem támogatja a delegálást, többek között ezek a fontos függvények:All other functions do not support delegation, including these notable functions:

Gyakori, hogy az AddColumns és a LookUp függvényt használják az egyik tábla adatainak a másikkal való összefésülésére, amit az adatbázis-programozás nyelvhasználatában általában illesztésnek neveznek.A common pattern is to use AddColumns and LookUp to merge information from one table into another, commonly referred to as a Join in database parlance. Példa:For example:

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

Bár a Products (Termékek) és a Suppliers (Szállítók) lehetnek delegálható adatforrások, és a LookUp delegálható függvény, az AddColumns függvény nem delegálható.Even though Products and Suppliers may be delegable data sources and LookUp is a delegable function, the AddColumns function is not delegable. A teljes képlet eredménye a Products (Termékek) adatforrás első részére fog korlátozódni.The result of the entire formula will be limited to the first portion of the Products data source.

Mivel a LookUp és az adatforrása delegálható a Suppliers (Szállítók) adatforrásban bárhol elérhető találat, még akkor is, ha az adatforrás nagy.Since the LookUp and its data source are delegable, a match for Suppliers can be found anywhere in the data source, even if it is large. Egy lehetséges hátulütője a dolognak, hogy a LookUp különálló hívásokat fog végezni az adatforrásban a Products összes első rekordjáért, ami nagymértékben használja a hálózatot.A potential downside is that LookUp will made separate calls to the data source for each of those first records in Products, causing a lot of chatter on the network. Ha a Suppliers elég kicsi és nem gyakran változik, akkor gyorsítótárazhatja az adatforrást az alkalmazásában a Collect hívással, amikor az alkalmazás elindul (az OnVisible tulajdonság nyitóképernyőn való használatával), és végrehajthatja a LookUp függvényt inkább ezen.If Suppliers is small enough and does not change often, you could cache the data source in your app with a Collect call when the app starts (using OnVisible on the opening screen) and do the LookUp to it instead.

A nem delegálhatóság korlátaiNon-delegable limits

A nem delegálható képletek helyben lesznek feldolgozva.Formulas that cannot be delegated will be processed locally. Ez lehetővé teszi a PowerApps képletnyelvének teljes kihasználását.This allows for the full breadth of the PowerApps formula language to be used. De ennek ára van: először minden adatot le kell tölteni az eszközre, ami nagy mennyiségű adat hálózaton való lekérdezésével járhat.But at a price: all the data must be brought to the device first, which could involve retrieving a large amount of data over the network. Ez sokáig tarthat, azt a benyomást keltve, hogy az alkalmazás lassú vagy esetleg lefagyott.That can take time, giving the impression that your app is slow or possibly hung.

Ennek elkerülése érdekében a PowerApps korlátot alkalmaz a helyileg feldolgozható adatmennyiségre: 500 rekord.To avoid this, PowerApps imposes a limit on the amount of data that can be processed locally: 500 records. Azért választottuk ezt a számot, hogy továbbra is teljes hozzáférése legyen a kis adatkészletekhez, és finomíthassa a nagy adatkészletek használatát a részleges találatok megtekintésével.We chose this number so that you would still have complete access to small data sets and you would be able to refine your use of large data sets by seeing partial results.

Természetesen ennek a lehetőségnek a használatakor óvatosan kell eljárni, mert zavaró lehet a felhasználók számára.Obviously care must be taken when using this facility as it can be confusing for users. Képzeljen el például egy nem delegálható kiválasztási képlettel rendelkező Filter függvényt több mint egymillió rekordból álló adatforrásra alkalmazva.For example, consider a Filter function with a selection formula that cannot be delegated, over a million record data source. Mivel a szűrés helyileg történik, az egymillió rekordból csak az első 500 rekord lesz megvizsgálva.Since the filtering will be done locally, only the first 500 records of the million records will be scanned. Ha a lekérni kívánt rekord az 501-edik vagy az 500 001-edik, akkor a Filter függvény nem fogja figyelembe venni vagy lekérni.If the desired record is record 501, or 500,001, it will not be considered or returned by Filter.

Egy másik hely, ahol ez zavarba ejtő lehet, az aggregátumfüggvények.Another place where this can be confusing is aggregate functions. Nézzük meg az Average függvény alkalmazását ugyanarra az egymillió rekordot tartalmazó adatforrásoszlopra.Take Average over a column of that same million record data source. Mivel az Average még nem delegálható, csak az első 500 rekord átlaga lesz kiszámítva.Since Average cannot yet be delegated, only the first 500 records will be averaged. Óvatosan kell eljárnia, vagy a részleges választ félre értelmezheti, és teljes válasznak vélheti az alkalmazás felhasználója.Care must be taken or a partial answer could be misconstrued as a complete answer by a user of your app.

Kék ponttal jelölt javaslatokBlue dot suggestions

Annak érdekében, hogy könnyebb legyen eldönteni, mi az, ami delegált és mi az, ami nem, a szerkesztőfelület kék pontokkal jelölt javaslatokat jelenít meg, ha a képlet nem delegálható elemet tartalmaz.To make it easier to know what is and is not being delegated, the authoring experience provides blue dot suggestions when a formula contains something that cannot be delegated.

A kék pontok csak olyan képleteknél jelennek meg, amelyeket delegálható adatforrásokon hajt végre.Blue dots are only shown on formulas that operate on delegable data sources. Ha nem lát kék pontot, és úgy véli, hogy a képlet nincs megfelelően delegálva, ellenőrizze az adatforrás típusát fent, a delegálható adatforrások listájában.If you don't see a blue dot and you believe your formula is not being properly delegated, check the type of data source against the list of delegable data sources above.

PéldákExamples

Ebben a példában egy SQL Server-táblát fogunk használni, amely termékeket, konkrétan gyümölcsöket tartalmaz, a neve [dbo].[Products].In this example, we will use a SQL Server table that contains products, in particular fruits, names [dbo].[Products]. Az Új képernyőn a PowerApps létre tud hozni egy alapszintű, három képernyős alkalmazást, amely ehhez az adatforráshoz kapcsolódik:On the New screen, PowerApps can create a basic three screen app connected to this data source:

Figyelje meg a katalógus Items tulajdonságaihoz beállított képletet.Note the formula for the Gallery's Items property. A SortByColumns és a Search függvényeket használja, ezek mindegyike delegálható.It is using SortByColumns and Search functions, both of which can be delegated.

Írjuk be az „Apple” szót a keresés szövegbeviteli vezérlőelembe.Let's type "Apple" into the search text-input control. Ha nagyon figyelünk rövid ideig futó pontokat fogunk látni a képernyő tetején, amíg megtörténik az új keresési kifejezés feldolgozása.If we are very observant, we will momentarily see marching dots on the top of the screen while the new entry in the new search is processed. A futó pontok azt jelzik, hogy az alkalmazás a Microsoft SQL Serverrel kommunikál:The marching dots indicate that we are communicating with the SQL Server:

Mivel ez mind delegálható, még ha a [dbo].[Products] tábla több millió rekordot tartalmaz is, meg fogjuk mindet találni, átlapozva közöttük a katalógusban, miközben a felhasználó lefelé görgeti az eredményeket.Because this is all delegable, even if the [dbo].[Products] table contains millions of records, we will still find them all, paging through them in the gallery as the user scrolls through the results.

Észre fogja venni, hogy a találatok között szerepel az „Apple” és a „Pineapple” is.You will notice that we are seeing a match for both "Apple" and "Pineapple". A Search függvény bárhol megtalálja a keresési kifejezést a szövegoszlopban.The Search function will find a search term anywhere in a text column. Ehelyett az is lehetséges, hogy csak a gyümölcs nevének elejében szeretnénk megtalálni a keresési kifejezést.If instead, let's say we wanted to only find the search term at the beginning of the fruit's name. Használhatunk egy másik delegálható függvényt a Filter függvényt egy bonyolultabb keresési kifejezéssel (az egyszerűség kedvéért eltávolítjuk a SortByColumns hívást):We can use another delegable function, Filter, with a more complicated search term (for simplicity we'll remove the SortByColumns call):

Úgy látszik, működik, most csak az „Apples” jelenik meg, a „Pineapple” pedig nem.This appears to be working, only "Apples" is correctly showing now and "Pineapple" is not. Azonban, a katalógus mellett megjelenik egy kék pont, és hullámos kék vonal látható a képlet egy része alatt.However, there is a blue dot showing next to the gallery and there is a blue wavy line under a portion of the formula. Még a képernyő miniatűrjén is megjelenik egy kék pont.There is even a blue dot showing in the screen thumbnail. Ha az egérkurzort a katalógus melletti kék pontra visszük, a következőt fogjuk látni:If we hover over the blue dot next to the gallery, we see the following:

Annak ellenére, hogy a Filter függvényt használjuk, amely delegálható, egy Microsoft SQL Serveren, amely egy delegálható adatforrás, a Filter függvényben megadott képlet nem delegálható.Although we are using Filter which is a delegable function, with SQL Server which is a delegable data source, the formula we used within Filter is not delegable. A Mid és a Len nem delegálható semmilyen adatforrásba.Mid and Len cannot be delegated to any data source.

De működött, nem?But it worked, didn't it? Nos, valamennyire igen.Well, kind of. Ezért jelöli ezt egy kék pont a sárga veszély ikon és a hibát jelző piros hullámvonal helyett.And that is why this is a blue dot instead of a yellow hazard icon and red wavy error. Ha a [dbo].[Products] tábla 500 rekordnál kevesebbet tartalmaz, akkor igen, tökéletesen működött.If the [dbo].[Products] table contains less than 500 records, then yes, this worked perfectly. Minden rekord letöltődött az eszközre, és a Filter függvényt helyileg alkalmaztuk.All records were brought to the device and the Filter was applied locally.

Ha ehelyett ez a táblázat 500 rekordnál többet tartalmaz, akkor a katalógusban csak a tábla első 500 rekordjában az „Apple” szóval kezdődő gyümölcsök fognak megjelenni.If instead this table contains more than 500 records, then only fruit which begin with "Apple" in the first 500 records of the table will be displayed in the gallery. Ha az „Apple, Fuji” az 501-edik vagy 500 001-edik rekordban jelenik meg névként, akkor az alkalmazás nem fogja megtalálni.If "Apple, Fuji" appears as a name in record 501 or 500,001 it will not be found.