Principy delegování v aplikaci plátna
Power Apps obsahuje sadu výkonných funkcí pro filtrování, řazení a vytváření tabulek dat v aplikaci plátna: mimo jiné to jsou funkce Filter, Sort a AddColumns. Pomocí těchto funkcí můžete uživatelům poskytnout cílený přístup k informacím, které potřebují. Uživatelům se znalostí databází může používání těchto funkcí připomínat psaní databázového dotazu.
Klíčem k vytváření efektivních aplikací je minimalizace objemu dat, která se přenáší do zařízení. Z mnoha milionů záznamů je potřeba možná jen několik. Tisíce záznamů může zase představovat jen jedna agregovaná hodnota. Nebo se může načíst pouze první sada záznamů a zbylé sady se mohou načíst, když uživatel naznačí, že záznamů potřebuje více. Tím, že svou práci zacílíte, můžete výrazně snížit výpočetní výkon, paměť a šířku pásma sítě, které vaše aplikace potřebuje. Výsledkem bude rychlejší odezva pro uživatele, dokonce i na telefonech připojených prostřednictvím mobilní sítě.
Delegování kombinuje výraznost vzorců Power Apps a potřebu minimalizovat data přesouvaná přes síť. Stručně řečeno to znamená, že Power Apps bude delegovat zpracování dat na zdroj dat a nebude přesunovat data do aplikace za účelem místního zpracování.
Tady se to však začíná komplikovat, protože ne vše, co lze vyjádřit vzorcem Power Apps, může být delegováno na všechny zdroje dat. A právě s tím nám pomůže tento článek. Jazyk Power Apps napodobuje jazyk excelových vzorců, který poskytuje úplný a okamžitý přístup k celému sešitu v paměti a širokou škálu číselných funkcí a funkcí pro manipulaci s textem. Proto je jazyk Power Apps mnohem rozsáhlejší, než může většina zdrojů dat, včetně výkonných databázových strojů, jako je třeba SQL Server, podporovat.
Práce s velkými sadami dat vyžaduje použití zdrojů dat a vzorců, které je možné delegovat. Je to jediný způsob, který umožní, aby vaše aplikace dobře fungovala a zajistila uživatelům přístup ke všem potřebným informacím. Věnujte pozornost upozorněním delegování, která identifikují místa, kde není delegování možné. Pokud pracujete s malými sadami dat (méně než 500 záznamů), můžete použít jakýkoli zdroj dat a vzorec, protože pokud vzorec nemůže být delegován, aplikace může zpracovat data místně.
Poznámka
Upozornění delegování byla v Power Apps dříve označena jako návrhy s modrou tečkou, nyní jsou překlasifikována jako upozornění. Pokud zdroj dat obsahuje více než 500 záznamů a funkci nejde delegovat, je možné, že Power Apps nebudou moct načíst všechna data a aplikace může mít nesprávné výsledky. Upozornění delegování pomáhají spravovat aplikaci, aby měla správné výsledky.
Delegovatelné datové zdroje
Delegování se podporuje pouze u určitých tabulkových zdrojů dat. Pokud zdroj dat podporuje delegování, jeho dokumentace ke konektoru popisuje tuto podporu. Například tyto tabulkové zdroje dat jsou nejoblíbenější a podporují delegování:
- Delegovatelné funkce a operace Power Apps pro službu Microsoft Dataverse
- Delegovatelné funkce a operace Power Apps pro službu SharePoint
- Delegovatelné funkce a operace Power Apps pro SQL Server
- Delegovatelné funkce a operace Power Apps pro Salesforce
Importované excelové sešity (používající zdroj dat Přidání statických dat do aplikace), kolekce a tabulky uložené v kontextových proměnných delegování nevyžadují. Všechna tato data jsou již v paměti a může se použít úplný jazyk Power Apps.
Funkce s možností delegování
Dalším krokem je použití pouze takových vzorců, které je možné delegovat. Zde jsou uvedené prvky vzorců, které by mohly být delegovány. Každý zdroj dat je ale jiný. Tyto prvky tedy nemusí být podporovány všemi zdroji dat. U konkrétního vzorce zkontrolujte upozornění delegování.
Tyto seznamy se budou průběžně měnit. Pracujeme na podpoře delegování u dalších funkcí a operátorů.
Filtrovací funkce
Funkce Filter, Search a LookUp je možné delegovat.
Ve funkcích Filter a LookUp můžete použít následující operátory, abyste ve sloupcích tabulky mohli vybrat příslušné záznamy:
- And (včetně &&), Or (včetně ||), Not (včetně !)
- In
Poznámka
Operátor In je delegován pouze pro sloupce základního zdroje dat. Pokud je například zdrojem dat tabulka Accounts, pak je výraz
Filter(Accounts, Name in ["name1", "name2"])předán do zdroje dat k vyhodnocení. Avšak výrazFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])delegován není, protože sloupec Fullname je v jiné tabulce (PrimaryContact) než Accounts. Výraz je vyhodnocen lokálně. - =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- StartsWith, EndsWith
- Konstantní hodnoty, které jsou u všech záznamů stejné, například vlastnosti ovládacích prvků a globální a kontextové proměnné.
Můžete také použít části vzorce, které se vyhodnotí jako konstantní hodnota pro všechny záznamy. Například Left( Language(); 2 ), Date( 2019, 3, 31 ) a Today() nezávisí na žádných sloupcích záznamu, a proto vrací pro všechny záznamy stejnou hodnotu. Tyto hodnoty mohou být zaslány do zdroje dat jako konstanta a neblokují delegování.
Předchozí seznam neobsahuje tyto důležité položky:
- If
- *, /, Mod
- Concatenate (včetně &)
- ExactIn
- Funkce pro manipulaci s řetězci: Lower, Upper, Left, Mid, Len, ...
- Signály: Location, Acceleration, Compass, ...
- Nestálé funkce: Rand, ...
- Kolekce
Funkce řazení
Funkce Sort a SortByColumns je možné delegovat.
U funkce Sort může být vzorcem pouze název jednoho sloupce a nemůže zahrnovat další operátory nebo funkce.
Agregační funkce
Funkce Sum, Average, Min a Max je možné delegovat. V současné době je toto delegování podporováno pouze omezeným počtem zdrojů dat. Podrobnosti najdete v seznamu delegování.
Poznámka
Pokud výraz není delegován, bude fungovat pouze na prvních 500 záznamů (konfigurovatelných až do 2000, viz Změna limitu) načtených ze zdroj dat místo delegace zpracování všech dat na zdroj dat.
Funkce počtu, jako například CountRows, CountA a Count, není možné delegovat.
Další agregační funkce, jako například StdevP a VarP, není možné delegovat.
Funkce strukturování tabulky
Funkce AddColumns, DropColumns, RenameColumns a ShowColumns částečně podporují delegování. Vzorce v jejich argumentech lze delegovat. Výstup těchto funkcí však podléhá limitu záznamu bez delegování.
Stejně jako v tomto příkladu tvůrci častou používají funkce AddColumns a LookUp, běžně se tomu v databázové hantýrce říká spojení:
AddColumns( Products,
"Supplier Name",
LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name
)
I když mohou být zdroje dat Products a Suppliers delegovatelné a funkce LookUp je delegovatelnou funkcí, výstup funkce AddColumns delegovat nejde. Výsledek celého vzorce je omezen na první část zdroje dat Products. Vzhledem k tomu, že funkci LookUp a její zdroj dat je možné delegovat, dá se shoda pro zdroj dat Suppliers najít kdekoli ve zdroji dat, i když je velký.
Pokud používáte funkci AddColumns tímto způsobem, funkce LookUp musí uskutečnit samostatná volání do zdroje dat pro každý z těchto prvních záznamů ve zdroji dat Products, což způsobuje hustý síťový provoz. Pokud je zdroj dat Suppliers dostatečně malý a často se nemění, můžete volat funkci Colect v OnStart k uložení zdroje dat do mezipaměti v aplikaci, když se spustí. Alternativně můžete svou aplikaci restrukturalizovat, takže si související záznamy natáhnete, pouze pokud o ně uživatel požádá.
Nedelegovatelné funkce
Žádné další funkce delegování nepodporují, včetně těchto důležitých funkcí:
- First, FirstN, Last, LastN
- Choices
- Concat
- Collect, ClearCollect
- CountIf, RemoveIf, UpdateIf
- GroupBy, Ungroup
Omezení plynoucí z nedelegovatelnosti
Vzorce, které nejdou delegovat, se zpracují místně. Umožní se tak použití jazyka vzorců Power Apps v jeho plném rozsahu. Není to ale zadarmo. Všechna data se musí nejprve přenést do zařízení, což může znamenat načtení velkého objemu dat přes síť. To může nějakou dobu trvat a aplikace se pak může jevit jako pomalá nebo nereagující.
Abychom tomu předešli, má aplikace Power Apps omezení množství dat, které lze zpracovat místně. Je to ve výchozím nastavení 500 záznamů. Toto číslo jsme zvolili tak, aby vám zůstal zachován úplný přístup k malým sadám dat a díky zobrazení částečných výsledků jste mohli své použití velkých sad dat vylepšit.
Při použití těchto prostředků je potřeba dávat pozor, pro uživatele totiž mohou být matoucí. Představte si třeba použití funkce Filter se vzorcem výběru, který nejde delegovat, a zdroje dat obsahujícího více než milion záznamů. Vzhledem k tomu, že se filtrování provádí místně, prohledává se pouze prvních 500 záznamů. Pokud je požadovaným záznamem záznam 501 nebo 500 001, funkce Filter ho nevezme v potaz ani nevrátí.
Také agregační funkce mohou být matoucí. Použijte funkci Average na sloupec toho stejného zdroje dat s milionem záznamů. Průměrný v tomto případě nelze delegovat, protože výraz není delegován (viz dřívější poznámka), takže je zprůměrováno pouze prvních 500 záznamů. Pokud byste nebyli pozorní, uživatel vaší aplikace by mohl zaměnit částečnou odpověď za konečný výsledek.
Změna limitu
500 je výchozí počet záznamů. Toto číslo ale můžete pro celou aplikaci změnit:
- Vyberte Nastavení.
- V části Obecné změňte nastavení Limit řádku dat z 1 na 2000.
V některých případech budete vědět, že 2 000 (nebo 1 000 nebo 1 500) bude vyhovovat vašim potřebám. Tento počet můžete opatrně zvýšit, aby vám vyhovoval. Když tento počet zvýšíte, může se snížit výkon vaší aplikace, zejména u širokých tabulek s mnoha sloupci. Nejvhodnějším řešením však stále je co nejvíce delegovat.
Aby vaše aplikace zvládala velké datové sady, snižte toto nastavení na 1. Všechno, co není možné delegovat, bude vracet jenom jeden záznam, což by se mělo při testování aplikace snadno zjistit. Díky tomu se dá vyhnout nečekaným událostem při pokusu dát testovací koncept aplikace do produkčního prostředí.
Upozornění delegování
Aby bylo jednodušší zjistit, co se deleguje a co nikoli, poskytují Power Apps upozornění (žlutý trojúhelník) při vytváření vzorce obsahujícího položku, která nejde delegovat.
Upozornění delegování se zobrazují pouze u vzorců, které pracují s delegovatelnými zdroji dat. Pokud upozornění nevidíte a máte pocit, že se váš vzorec nedeleguje správně, zkontrolujte typ zdroje dat v seznamu delegovatelných zdrojů dat uvedeném výše v tomto tématu.
Příklady
V tomto příkladu automaticky vygenerujete aplikaci se třemi obrazovkami [dbo].[ Fruit] založenou na SQL Serveru. Pokud chcete získat informace o tom, jak aplikaci vygenerovat, můžete pro SQL Server použít principy podobné těm, které jsou uvedené v tématu o Dataverse.

Vlastnost Items galerie je nastavená na vzorec obsahující funkce SortByColumns a Search. Obě tyto funkce je možné delegovat.
Do vyhledávacího pole zadejte "Apple".
V horní části obrazovky se zobrazí běžící tečky indikující komunikaci mezi aplikací a SQL Serverem kvůli zpracování požadavku hledání. Zobrazí se všechny záznamy, které splňují kritéria hledání, a to i v případě, že zdroj dat obsahuje milióny záznamů.

Vzhledem k tomu, že funkce Search hledá v celém sloupci textu, výsledky hledání obsahují Apples, Crab apples a Pineapple. Pokud byste chtěli najít pouze záznamy, které hledaný termín obsahují na začátku názvu ovoce, můžete použít jinou delegovatelnou funkci, Filter, se složitějším hledaným termínem. (Pro zjednodušení odeberte volání funkce SortByColumns.)

Nové výsledky budou zahrnovat Apples. Nebudou zahrnovat Crab apples ani Pineapple. Vedle galerie (a u miniatury obrazovky, pokud levý navigační panel zobrazuje miniatury) se ale zobrazí žlutý trojúhelník a pod částí vzorce se zobrazí modrá vlnovka. Každý z těchto prvků označuje upozornění. Pokud najedete myší na žlutý trojúhelník vedle galerie, zobrazí se tato zpráva:

SQL Server je delegovatelný zdroj dat a funkce Filter je delegovatelná funkce. Funkce Mid a Len ale není možné delegovat na žádný zdroj dat.
Ale fungovalo to nebo ne? Tak trochu. A proto se jedná o upozornění a nezobrazuje se červená vlnovka.
- Pokud tabulka obsahuje méně než 500 záznamů, vzorec fungoval perfektně. Všechny záznamy se přenesly do zařízení a funkce Filter se použila místně.
- Pokud tabulka obsahuje více než 500 záznamů, vzorec nevrátí záznam 501 a vyšší, i když odpovídá kritériím.
Viz také
Dopad použití nedelegovatelných funkcí a omezení nevhodných řádků dat na výkon
Osvědčené postupy a tipy pro delegování
Poznámka
Můžete nám sdělit, jaké máte jazykové preference pro dokumentaci? Zúčastněte se krátkého průzkumu. (upozorňujeme, že tento průzkum je v angličtině)
Průzkum bude trvat asi sedm minut. Nejsou shromažďovány žádné osobní údaje (prohlášení o zásadách ochrany osobních údajů).
Váš názor
Odeslat a zobrazit názory pro