Lekérdezési korlátozások: Delegálási és lekérdezési korlátok

A delegálás ismertetése

Power Apps Háttérrendszerrel működik a legjobban, adatforrás ha egy lekérdezés teljes mértékben lefordítható egy Power Fx egyenértékű lekérdezésre, amely futtatható a adatforrás. Power Apps Elküld egy lekérdezést, amelyet a adatforrás megért, a lekérdezést végrehajtja a adatforrás, és visszaadja a lekérdezés eredményeit Power Apps. Előfordulhat például, hogy a adatforrás szűri az adatokat a adatforrás, és csak azokat a sorokat adja vissza, amelyek megfelelnek a szűrési feltételeknek. Ha ez megfelelően működik, azt mondjuk, hogy a lekérdezés delegálva van a adatforrás a lekérdezés munkájának elvégzéséhez.

Power Fx A lekérdezések azonban nem mindig fordíthatók le egyenértékű lekérdezésekre az összes adatforráson. Például több lekérdezési funkciót támogat, Dataverse mint az Excel. Dataverse támogatja a "be" (tagság) lekérdezési operátort, az Excel nem. Azt mondjuk, hogy a lekérdezés nem delegálható , ha a lekérdezés olyan funkciót használ, amelyet a adatforrás nem támogat. Általánosságban elmondható, hogy ha egy lekérdezési kifejezés bármely része nem delegálható, a lekérdezés egyetlen részét sem delegáljuk.

Ha egy lekérdezés nem delegálható, Power Apps csak az első 500 rekordot kéri le a adatforrás, majd végrehajtja a lekérdezésben szereplő műveleteket. Ez a korlát 2 000 rekordra növelhető: A korlátkorlátok , az eredmény méretének módosítása 500 rekordra Power Apps a jó teljesítmény Power Apps megőrzése érdekében. Kísérletezés során megállapítottuk, hogy az ezeknél a méreteknél nagyobb eredményhalmazok teljesítménybeli problémákat okoznak az alkalmazásodban és Power Apps általában is.

Ez a korlátozás azonban problémát jelenthet, mivel a lekérdezés helytelen eredményeket adhat, ha a adatforrás adatai meghaladják az 500/2000 rekordot. Vegyük például azt a példát, amelyben a adatforrás 10 millió rekorddal rendelkezik, és a lekérdezésnek az adatok utolsó részén kell működnie. (Például a "Z" betűvel kezdődő családnevek) A lekérdezés azonban tartalmaz egy nem delegálható operátort (például eltérő). Ebben az esetben csak az első 500/2000 rekordot kapja meg, és helytelen eredményeket kap.

Hozza létre a lekérdezéseket a Power Fx adatforrás delegálható tábláinak használatával. Csak delegálható lekérdezési függvényeket használjon. Ez az egyetlen módja annak, hogy az alkalmazás jól teljesítsen, és biztosítsa, hogy a felhasználók hozzáférjenek az összes szükséges információhoz.

Vegye figyelembe a delegálási figyelmeztetéseket, amelyek megadják a helyeket, ahol a delegálás nem lehetséges. Ha kis adatkészletekkel (500-nál kevesebb rekorddal) dolgozik, bármilyen adatforrás és képletet használhat, mivel az alkalmazás helyileg feldolgozhatja az adatokat, ha a képlet nem delegálható.

Megjegyzés

A delegálási figyelmeztetések segítenek úgy felügyelni az alkalmazást, hogy az helyes eredményeket adjon. Ha a adatforrás adatai meghaladják az 500 rekordot, és egy függvény nem delegálható, Power Fx akkor a képletet kék aláhúzással jelöli.

Meghatalmazással használható adatforrások

A delegálás csak bizonyos táblázatos adatforrások esetén támogatott. Ha egy adatforrás támogatja a delegálást, az összekötő dokumentációja vázolja fel a támogatást. Például ezek a táblázatos adatforrások a legnépszerűbbek, és támogatják a delegálást:

(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. Ezeknek az adatoknak mindegyike már a memóriában van, és a teljes Power Apps-nyelv alkalmazható.

Delegálható függvények

A következő lépés az, hogy csak a delegálható függvényeket használja. Ez a cikk tartalmazza a delegálható képletelemeket. Azonban minden adatforrás különböző, és nem mindegyikük támogatja ezeknek az elemeknek az összességét. Ellenőrizze az adott képletben fellépő delegálási figyelmeztetéseket.

Szűrőfüggvények

A Filter,Search,First ... ... és LookUp delegálható.

A Filter és a LookUp függvényen belül az alábbiakat használhatja a tábla oszlopaival a megfelelő rekordok kiválasztására:

  • And (beleértve a következőt: &&), Or (beleértve a következőt: ||), Not (beleértve a következőt: !)
  • A

    Megjegyzés

    A benne csal az alap adatforráson lévő oszlopokhoz van delegálva. Például, ha az adatforrás Partnerek tábla, akkor a Filter(Accounts, Name in ["name1", "name2"]) delegál az adatforráshoz a kiértékeléshez. A Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) azonban nem delegál, mivel a Fullname oszlop egy másik táblán van (PrimaryContact), nem a Partnereken. A kifejezés kiértékelése helyben történik.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • Állandó értékek, amelyek azonosak minden rekordban, például vezérlő tulajdonságok, valamint globális és környezeti változók.

A képletnek azok a részei, amelyek minden rekordnál állandó értéket adnak, szintén használhatók. Például a Left( Language(), 2 ), a Date( 2019, 3, 31 ) és a Today() a rekord egyetlen oszlopától sem függ, ezért ugyanazt az értéket adja minden rekordnál. Ezek az értékek állandóként elküldhetők az adatforrás számára, és nem blokkolják a delegálást.

A fenti lista nem tartalmazza a következő fontos elemeket:

Lekérdezési korlátozások

Keresési szintek

Power Apps Két keresési szintet támogat. Ez azt jelenti, hogy egy Power Fx lekérdezési kifejezésnek legfeljebb két keresési függvénye lehet. Ez a korlátozás a teljesítmény megőrzését szolgálja. Ha egy lekérdezési kifejezés keresést tartalmaz, Power Apps először lekérdezéssel lekéri az alaptáblát. Ezután egy második lekérdezést hajt végre, amely kibontja az első táblát a keresési információkkal. Ezen túl még egy szintet támogatunk maximumként. Offline módban azonban csak egy szintű keresési bővítést támogatunk.

Kifejezésértékelés - az entitás tulajdonságának az egyenlőségi operátor bal oldali "LHS" oldalán kell lennie

Fontos, hogy az összehasonlítandó entitás tulajdonságát egy kifejezésben helyezze el az egyenlet bal oldalán található "LHS" kifejezésben. Szemléltetésképpen az alábbi példában az entitás tulajdonsága"Részlegazonosító ". A Name egy tulajdonságérték, amelyet a kiértékelendő kifejezés LHS-én kell elhelyezni. A következő kifejezés sikeres:

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

Ez a kifejezés azonban nem:

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

Rendezési függvények

A Sort és a SortByColumns delegálható.

A Sort esetében a függvény csak egyetlen oszlop neve lehet, és nem tartalmazhat más operátorokat vagy függvényeket.

Aggregátumfüggvények

Egyes összesítő függvények a háttérrendszer támogatásától függően delegálhatók. A Sum, az Average, a Min és a Max delegálható. A számlálási függvények, például a CountRows és a Count is delegálhatók. Jelenleg csak korlátozott számú adatforrás támogatja ezeket a függvényeket delegáláshoz. További információ: Delegálási lista.

A RemoveIf és az UpdateIf delegálási támogatása kísérleti állapotban van, és alapértelmezés szerint ki van kapcsolva.

Nem delegálható funkciók

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:

Nem delegálható limitek

A nem delegálható képletek helyben lesznek feldolgozva. A helyi feldolgozás lehetővé teszi a Power Apps képletnyelv teljes szélességének használatát. 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. Ez sokáig tarthat, azt a benyomást keltve, hogy az alkalmazás lassú vagy esetleg összeomlott.

Ennek elkerülése érdekében a Power Apps korlátot alkalmaz a helyileg feldolgozható adatmennyiségre. Ez alapértelmezés szerint 500 rekord. 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.

Természetesen ennek a lehetőségnek a használatakor óvatosan kell eljárni, mert megtévesztheti a felhasználókat. Képzeljen el például egy nem delegálható kiválasztási képlettel rendelkező Filter függvényt egy egymillió rekordból álló adatforrásra alkalmazva. Mivel a szűrés helyeben történik, csak az első 500 rekord van megvizsgálva. Ha a lekérni kívánt rekord az 501-edik vagy az 500 001-edik, akkor a Filter függvény nem veszi figyelembe, és nem kéri le.

Az összesítő függvények is okozhatnak félreértést. Nézzük meg az Average (Átlag) függvény alkalmazását ugyanarra az egymillió rekordot tartalmazó adatforrásoszlopra. Az Átlagolás ebben az esetben nem delegálható, mivel a kifejezés nem delegált (lásd a korábbi megjegyzést), így csak az első 500 rekord átlagolása történik meg. Ha nem kellően körültekintő, akkor az alkalmazás felhasználója félreértelmezheti, és teljes válasznak vélheti a részleges választ.

A korlát módosítása

Az alapértelmezett rekordszám 500, de ezt az egész alkalmazásra vonatkozóan megváltoztathatja:

  1. Válassza a Beállítások lehetőséget.
  2. Az Általános rész alatt állítsa át az Adatsor korlátozása beállítást 1-ről 2000-re.

Bizonyos esetekben tudja, hogy 2 000 (vagy 1 000 vagy 1 500) kielégíti a forgatókönyv igényeit. Körültekintően, a használati helyzethez igazodva emelheti ezt az értéket. Ennek a korlátnak az emelése az alkalmazás teljesítményének romlásához vezethet, különösen széles, sok oszlopból álló táblák esetében. A legjobb megoldás még mindig az, ha mindent delegál, amit lehet.

Annak érdekében, hogy az alkalmazás nagy adatkészletekre méretezhető legyen, csökkentse ezt a beállítást 1-re. Minden, ami nem delegálható, egyetlen rekordot fog visszaadni, ezt pedig könnyen észreveheti az alkalmazás tesztelése során. Ezáltal elkerülhetők a megvalósíthatósági vizsgálat alatt álló alkalmazás éles üzembe állításakor jelentkező meglepetések.

Delegálási figyelmeztetések

A delegált és nem delegált elemek könnyebb megkülönböztetése érdekében a Power Apps figyelmeztetést (sárga háromszög) jelenít meg a nem delegálható részeket tartalmazó képletek létrehozásakor.

A delegálási figyelmeztetések csak a delegálható adatforrásokon végrehajtott képleteknél jelennek meg. Ha nem lát figyelmeztetést, és úgy gondolja, hogy a képlet delegálása nem megfelelő, ellenőrizze a adatforrás típusát a delegálható adatforrások listájában a cikk korábbi részében.

Példák

Ebben a példában automatikusan generál egy háromképernyős alkalmazást a [dbo].[Fruit] SQL Server-tábla alapján. Az alkalmazás létrehozásával kapcsolatos információkért hasonló alapelveket alkalmazhat a Dataverse SQL Server.

Háromképernyős alkalmazás.

A katalógus Items tulajdonságaként megadott képlet a SortByColumns és a Search függvényeket tartalmazza, amelyek egyaránt delegálhatók.

A keresőmezőbe gépelje be az „Apple” szót.

A képernyő felső részén egy ideig futó pontok láthatók, amíg a keresési kérelmet feldolgozó alkalmazás az SQL Serverrel kommunikál. A keresési feltételnek megfelelő összes rekord megjelenik még akkor is, ha az adatforrás több millió rekordot tartalmaz.

Szövegbeviteli vezérlő kereséshez.

A keresési eredmények között megjelenik az „Apples” és a „Pineapple” is, mivel a Keresés függvény a szövegoszlopban mindenhol keres. Ha csak olyan rekordokat akar keresni, amelyek a keresett kifejezést a szöveg elején tartalmazzák, akkor egy másik delegálható függvény, a Filter használatával összetettebb keresőkifejezést alkothat. (Az egyszerűség kedvéért távolítsa el a SortByColumns hívást.)

SortByColumns hívás törlése.

Az új eredmények között szerepel az „Apples” szó, de a „Pineapple” nem. A katalógus mellett ugyanakkor megjelenik egy sárga háromszög (és egy képernyő-miniatűr, ha a bal oldali navigációs sávon megjelennek a miniatűrök), a képlet egy része pedig kék, hullámos vonallal van aláhúzva. Ezen elemek mindegyike figyelmeztetést jelez. Ha a kurzort a katalógus melletti sárga háromszög fölé viszi, a következő üzenet jelenik meg:

Kurzor által aktivált delegálási figyelmeztetés.

Az SQL Server delegálható adatforrás, a Filter pedig delegálható függvény, a Mid és a Len azonban semmilyen adatforrásnak sem delegálható.

De működött, nem? Nos, valamennyire igen. Ez az oka, hogy csupán figyelmeztetés jelent meg piros hullámos vonal helyett.

  • Amíg a tábla 500-nál kevesebb rekordot tartalmaz, addig a képlet tökéletesen működik. Minden rekord letöltődött az eszközre, és a Filter függvény helyileg lett alkalmazva.
  • Ha a tábla 500-nál több rekordot tartalmaz, akkor a képlet akkor sem adja vissza az 501-ediket és az az után következőket, ha azok eleget tesznek a feltételeknek.

Kapcsolódó információk

Nem delegálható funkciók és nem megfelelő adatsorkorlátok használatának hatása a teljesítményre
Teljesítménnyel kapcsolatos tippek és a delegálás használatának bevált gyakorlatai

Megjegyzés

Megosztja velünk a dokumentációja nyelvi preferenciáit? Rövid felmérés elvégzése. (ne feledje, hogy ez a felmérés angol nyelvű)

A felmérés elvégzése körülbelül hét percet vesz igénybe. Semmilyen személyes adatot nem gyűjtünk (adatvédelmi nyilatkozat).