Obmedzenia dotazov: Obmedzenia delegovania a dotazov

Porozumenie delegácii

Power Apps funguje najlepšie s back-endom zdroj údajov, keď Power Fx dotaz môže byť plne preložený do ekvivalentného dotazu, ktorý možno spustiť na zdroj údajov. Power Apps odošle dotaz, ktorému zdroj údajov rozumie, dotaz sa vykoná na zdroj údajov a vrátia sa mu výsledky dotazu Power Apps. Napríklad zdroj údajov môže vykonávať prácu filtrovania údajov na zdroj údajov a vrátiť iba riadky, ktoré spĺňajú kritériá filtra. Keď to funguje správne, hovoríme, že dopyt je delegovaný na zdroj údajov, aby vykonal prácu na dopyte.

Power Fx Dopyty však nemožno vždy preložiť na ekvivalentné dopyty na všetky zdroje údajov. Napríklad Dataverse podporuje viac funkcií dotazov ako Excel. Dataverse podporuje operátor dotazu 'in' (členstvo) a Excel nie. Hovoríme, že dopyt je nedelegovateľný ak dopyt používa funkciu, ktorú zdroj údajov nepodporuje. Vo všeobecnosti, ak niektorá časť výrazu dopytu nie je delegovateľná, nedelegujeme žiadnu časť dopytu.

Keď dotaz nie je možné delegovať, Power Apps získa len prvých 500 záznamov z zdroj údajov a potom vykoná akcie v dotaze. Tento limit možno zvýšiť až na 2 000 záznamov Zmena limitu Power Apps obmedzí veľkosť výsledku na 500 záznamov, aby sa zachoval dobrý výkon Power Apps. Experimentovaním sme zistili, že množiny výsledkov väčšie ako tieto veľkosti spôsobujú problémy s výkonnosťou vašej aplikácie a Power Apps vo všeobecnosti.

Toto obmedzenie však môže byť problémom, pretože dotaz môže vrátiť nesprávne výsledky, ak údaje na zdroj údajov presiahnu 500/2000 záznamov. Uvažujme napríklad o príklade, kde zdroj údajov má 10 miliónov záznamov a váš dopyt musí pracovať s poslednou časťou údajov. (Napríklad rodinné mená začínajúce na „Z“) Váš dopyt však obsahuje nedelegovateľný operátor (napríklad odlišný.) V tomto prípade získate iba prvých 500/2000 záznamov a máte nesprávne výsledky.

Vytvorte svoje Power Fx dotazy pomocou deliteľných tabuliek pre zdroj údajov. Mali by ste používať iba funkcie dotazov, ktoré možno delegovať. Je to jediný spôsob, ako zabezpečiť, aby vaša aplikácia fungovala dobre a aby používatelia mali prístup ku všetkým informáciám, ktoré potrebujú.

Všímajte si upozornenia týkajúce sa delegovania, ktoré označujú miesta, kde nie je možné delegovanie používať. Ak pracujete s malými množinami údajov (menej ako 500 záznamov), môžete použiť ľubovoľný zdroj údajov a vzorec, pretože aplikácia môže spracovať údaje lokálne, ak vzorec nemožno delegovať.

Poznámka

Upozornenia týkajúce sa delegovania pomáhajú spravovať aplikáciu, aby používala správne výsledky. Ak údaje vo vašom zdroj údajov presahujú 500 záznamov a funkciu nie je možné delegovať, Power Fx označí vzorec modrým podčiarknutím.

Delegovateľné zdroje údajov

Delegovanie je podporované len pre niektoré tabuľkové údaje zdrojov. Ak zdroj údajov podporuje delegovanie, jeho dokumentácia konektora načrtáva túto podporu. Napríklad tieto tabuľkové zdroje údajov sú najobľúbenejšie a podporujú delegovanie:

Importované zošity programu Excel (používajúce zdroj údajov Pridanie statických údajov do aplikácie), kolekcie a tabuľky uložené v kontextových premenných delegovanie nevyžadujú. Všetky tieto údaje sú už v pamäti a môže sa použiť úplný jazyk Power Apps.

Funkcie s možnosťou delegovania

Ďalším krokom je použitie iba takých vzorcov, ktoré je možné delegovať. Tu sú uvedené prvky vzorcov, ktoré by mohli byť delegované. Každý zdroj údajov je však iný. Tieto prvky teda nemusia byť podporované všetkými zdrojmi údajov. Skontrolujte vzorec, či sa v ňom nevyskytujú upozornenia týkajúce sa delegovania.

Funkcie filtrovania

Filter, Hľadať, Najprv a Vyhľadať možno delegovať.

Vo funkciách Filter a LookUp môžete použiť nasledujúce operátory, aby ste v stĺpcoch tabuľky mohli vybrať príslušné záznamy:

  • And (vrátane &&), Or (vrátane ||), Not (vrátane !)
  • Na

    Poznámka

    V je delegovaný iba pre stĺpce na základe zdroj údajov. Ak je napríklad zdrojom údajov tabuľka Účty, potom Filter(Accounts, Name in ["name1", "name2"]) deleguje na vyhodnotenie zdroj údajov. Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) však nedeleguje, keď je stĺpec Fullname v inej tabuľke (PrimaryContact) než Účty. Výraz sa vyhodnocuje lokálne.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • Konštantné hodnoty, ktoré sú v prípade všetkých záznamov rovnaké, napríklad vlastnosti ovládacích prvkov a globálne a kontextové premenné.

Môžete tiež použiť aj časti vzorca, ktoré sa vyhodnotia ako konštantná hodnota pre všetky záznamy. Napríklad Left( Language(), 2 ), Date( 2019, 3, 31 ) a Today() nezávisia na žiadnych stĺpcoch záznamu, a preto vracajú pre všetky záznamy rovnakú hodnotu. Tieto hodnoty môžu byť odoslané do zdroja údajov ako konštanta a neblokujú delegovanie.

Predchádzajúci zoznam neobsahuje nasledovné významné položky:

Obmedzenia dopytov

Úrovne vyhľadávania

Power Apps podporuje dve úrovne vyhľadávania. To znamená, že Power Fx výraz dopytu môže obsahovať maximálne dve vyhľadávacie funkcie. Toto obmedzenie slúži na zachovanie výkonu. Ak výraz dotazu obsahuje vyhľadávanie, Power Apps najprv vykoná dotaz na získanie základnej tabuľky. Potom vykoná druhý dotaz, ktorý rozšíri prvú tabuľku s informáciami o vyhľadávaní. Podporujeme maximálne ešte jednu úroveň nad rámec toho. V režime offline však podporujeme iba jednu úroveň rozšírenia vyhľadávania.

Vyhodnotenie výrazu - vlastnosť entity musí byť na ľavej strane 'LHS' operátora rovnosti

Je dôležité umiestniť vlastnosť porovnávanej entity do výrazu na ľavej strane „LHS“ rovnice. Na ilustráciu v nižšie uvedenom príklade vlastnosť entity 'ID obchodnej jednotky'. Názov je hodnota vlastnosti a musí byť umiestnená na LHS výrazu, ktorý sa má vyhodnotiť. Nasledujúci výraz je úspešný:

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

Tento výraz však nebude:

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

Funkcie zoraďovania

Funkcie Sort a SortByColumns je možné delegovať.

V prípade funkcie Sort môže byť vzorcom iba názov jedného stĺpca a nemôže zahŕňať ďalšie operátory alebo funkcie.

Agregačné funkcie

Niektoré agregované funkcie možno delegovať v závislosti od podpory na back-ende. Funkcie Sum, Average, Min a Max je možné delegovať. Funkcie počítania, ako napríklad CountRows a Count, možno tiež delegovať. V súčasnosti podporuje tieto funkcie na delegovanie iba obmedzený počet zdrojov údajov. Ďalšie informácie nájdete v časti Zoznam delegácií.

Podpora delegovania RemoveIf a UpdateIf je v experimentálnom režime a je predvolene vypnutá.

Nedelegovateľné funkcie

Žiadne ďalšie funkcie delegovanie nepodporujú vrátane týchto dôležitých funkcií:

Nedelegovateľné limity

Vzorce, ktoré nie je možné delegovať, sa spracujú lokálne. Lokálne spracovanie umožňuje použiť celú šírku jazyka vzorcov Power Apps . Nie je to však zadarmo. Všetky údaje sa musia najskôr preniesť do zariadení, čo môže znamenať načítanie veľkého objemu údajov cez sieť. To môže nejaký čas trvať a aplikácia sa potom môže javiť ako pomalá alebo nereagujúca.

Aby sa tomu predišlo, Power Apps využíva obmedzenie množstva údajov na 500 záznamov (predvolená hodnota), ktoré je možné spracovať miestne. Toto číslo sme zvolili tak, aby vám zostal zachovaný úplný prístup k malým množinám údajov a vďaka zobrazeniu čiastočných výsledkov ste mohli svoje použitie veľkých množín údajov vylepšiť.

Pri použití týchto prostriedkov je potrebné dávať pozor, pre používateľov totiž môžu byť mätúce. Predstavte si napríklad použitie funkcie Filter so vzorcom výberu, ktorý nie je možné delegovať, a zdroje údajov s viac než miliónom záznamov. Keďže filtrovanie sa vykonáva lokálne, prehľadá sa iba prvých 500 záznamov. Ak je požadovaným záznamom záznam 501 alebo 500 001, funkcia Filter ho nevezme do úvahy ani nevráti.

Agregačné funkcie môžu tiež spôsobiť zmätok. Použite funkciu Average na stĺpec rovnakého zdroja údajov s miliónom záznamov. Priemer v tomto prípade nemožno delegovať, pretože výraz nie je delegovaný (pozri poznámku vyššie), takže sa spriemeruje iba prvých 500 záznamov. Ak nebudete opatrní, používateľ vašej aplikácie by si mohol zameniť čiastočnú odpoveď za konečný výsledok.

Zmena limitu

Predvolený počet záznamov je 500, ale v aplikácii je možné toto číslo zmeniť:

  1. Vyberte Nastavenia.
  2. V časti Všeobecné zmeňte nastavenie Limit riadkov s údajmi od 1 do 2000.

V niektorých prípadoch viete, že 2 000 (alebo 1 000 alebo 1 500) uspokojí potreby vášho scenára. Tento počet môžete opatrne zvýšiť, aby vám vyhovoval. Keď tento počet zvýšite, môže sa znížiť výkon vašej aplikácie, hlavne v prípade širokých tabuliek s mnohými stĺpcami. Najlepšie riešenie je stále delegovať všetko, čo môžete.

Ak chcete zabezpečiť, aby sa vaša aplikácia mohla škálovať na veľké množiny údajov, znížte toto nastavenie na 1. Všetko, čo sa nedá delegovať, vráti iba jeden záznam, čo by sa malo pri testovaní aplikácie jednoducho zistiť. Vďaka tomu sa dá vyhnúť nečakaným udalostiam pri pokuse dať testovací koncept aplikácie do produkčného prostredia.

Upozornenia týkajúce sa delegovania

S cieľom zjednodušiť prehľad toho, čo je a nie je delegované, poskytuje služba Power Apps upozornenie (žltý trojuholník) pri vytvorení vzorca, ktorý obsahuje nedelegovateľnú časť.

Upozornenia týkajúce sa delegovania sa zobrazujú iba vedľa vzorcov, ktoré pracujú s delegovateľnými zdrojmi údajov. Ak sa vám nezobrazuje upozornenie a domnievate sa, že váš vzorec nie je delegovaný správne, skontrolujte typ zdroj údajov v porovnaní so zoznamom delegovateľných zdrojov údajov vyššie v tomto článku článok.

Príklady

V tomto príklade sa automaticky vygeneruje aplikácia s tromi obrazovkami založená na tabuľke SQL Servera s názvom [dbo].[Fruit]. Informácie o tom, ako vygenerovať aplikáciu, môžete použiť podobné princípy v článku o Dataverse na SQL Server.

Aplikácia s tromi obrazovkami.

Vlastnosť Items ovládacieho prvku Galéria je nastavená na vzorec, ktorý obsahuje funkcie SortByColumns a Search. Obe funkcie je možné delegovať.

Do vyhľadávacieho poľa zadajte výraz "Apple".

V hornej časti obrazovky sa dočasne zobrazia posúvajúce sa bodky počas komunikácie aplikácie s SQL Serverom pri spracovávaní požiadavky na vyhľadávanie. Zobrazia sa všetky záznamy, ktoré spĺňajú kritériá vyhľadávania, dokonca aj vtedy, ak zdroj údajov obsahuje milióny záznamov.

Ovládací prvok vyhľadávania textového vstupu.

Výsledky hľadania budú obsahovať výrazy "Apples" a "Pineapple", pretože funkcia Hľadať vyhľadáva v celom textovom stĺpci. Ak chcete vyhľadať iba záznamy, ktoré obsahujú vyhľadávaný výraz na začiatku názvu ovocia, môžete použiť inú delegovateľnú funkciu Filter a zadať zložitejší výraz na vyhľadávanie. (Pre jednoduchosť odstráňte volanie SortByColumns.)

Odstránenie volania SortByColumns.

Nové výsledky obsahujú výrazy "Apples", ale nie "Pineapple". Vedľa galérie sa však zobrazí žltý trojuholník (a na miniatúre obrazovky, ak sa na ľavom navigačnom paneli zobrazujú miniatúry) a časť vzorca sa označí modrou vlnovkou. Každý z týchto prvkov označuje varovanie. Po ukázaní na žltý trojuholník vedľa galérie sa zobrazí toto hlásenie:

Ukázanie myšou na upozornenie týkajúce sa delegovania.

SQL Server je delegovateľný zdroj údajov a funkcia Filter je delegovateľnou funkciou, avšak funkcie Mid a Len nemôžu byť delegované do žiadneho zdroja údajov.

Ale to fungovalo, alebo nie? Tak trochu. A to je dôvod, prečo ide o upozornenie a nie o označenie červenou vlnovkou.

  • Ak tabuľka obsahuje menej ako 500 záznamov, vzorec je správny. Všetky záznamy sa preniesli do zariadenia a funkcia Filter sa použila lokálne.
  • Ak tabuľka obsahuje viac ako 500 záznamov, vzorec nevráti záznam 501 alebo vyšší, dokonca ani vtedy, ak zodpovedajú kritériám.

Pozrite si tiež:

Vplyv používania nedelegovateľných funkcií a nevhodných limitov údajových riadkov na výkon
Osvedčené postupy a tipy na používanie delegácie

Poznámka

Môžete nás informovať o svojich voľbách jazyka pre dokumentáciu? Absolvujte krátky prieskum. (upozorňujeme, že tento prieskum je v angličtine)

Prieskum bude trvať približne sedem minút. Nezhromažďujú sa žiadne osobné údaje (vyhlásenie o používaní osobných údajov).