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 Power Fx lekérdezés teljes mértékben lefordítható egy 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átokPower Apps , az eredmény méretének módosítása 500 rekordra 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 Power Fx lekérdezéseket a 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ó.
Feljegyzé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 ismerteti ezt 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:
- Power Apps delegálható funkciók és műveletek Microsoft Dataverse
- Power Apps delegálható funkciók és műveletek SharePoint
- Power Apps delegálható függvények és műveletek az SQL Serverhez
- Power Apps delegálható funkciók és műveletek a Salesforce számára
A környezeti változókban tárolt importált Excel-munkafüzetek (a Statikus adatok hozzáadása az alkalmazáshoz adatforrás), gyűjtemények és táblák nem igényelnek delegálást. 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 Szűrő és a Keresés függvényen belül ezeket a tábla oszlopaival használhatja a megfelelő rekordok kiválasztásához:
- És (beleértve &&), Vagy (beleértve ||), Nem (beleértve !)
- Ban
Feljegyzés
In csak az alap adatforrás oszlopaihoz van delegálva. Ha például a adatforrás a Számlák tábla, akkor
Filter(Accounts, Name in ["name1", "name2"])
delegálja a adatforrás kiértékelésre. Azonban nem delegál, mivelFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
a Teljes név oszlop egy másik táblában ( ElsődlegesKapcsolattartó) található, mint az Ügyfelek. A kifejezés kiértékelése helyben történik. - =, <>, >=, <=,, > <
- +, -
- TrimEnds
- IsBlank
- StartsWith,EndsWith ...
- Állandó értékek, amelyek minden rekordban azonosak, például a vezérlőtulajdonságok , valamint a 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 ), Date( 2019, 3, 31 ) és a Today() nem függ a rekord egyetlen oszlopától sem, ezért minden rekordhoz ugyanazt az értéket adja vissza. 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:
- Ha
- *, /, Mod
- Oszlopátütemezési műveletek Szöveg,Érték ...
- Összefűzés (beleértve &)
- ExactIn
- Karakterlánc-manipulációs funkciók: Alsó,Felső,Bal,Közép,Len ... ... ... ..., ...
- Jelek: hely, gyorsulás, iránytű, ...
- Volatilis: Rand, ...
- Gyűjtemények
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 Rendezés beállításnála képlet csak egyetlen oszlop neve lehet, és nem tartalmazhat más operátorokat vagy függvényeket.
Aggregátumfüggvények
Bizonyos összesítő függvények háttértámogatás alapján delegálhatók. Az olyan függvények, mint a Sum, Average , Min és Max delegálhatók. A számlálási függvények, például a CountRows és a Count is delegálhatók. A RemoveIf és az UpdateIf azonban delegálási korlátozásokkal rendelkezik. Jelenleg csak korlátozott számú adatforrás támogatja ezeknek a függvényeknek a delegálását. További részletekért tekintse meg a Delegálás listát.
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:
- ElsőN,Utolsó,UtolsóN ... ...
- Választás
- Concat
- Gyűjtés,ClearCollect ...
- Csoportosítás,Csoportbontás ...
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. Vegyünk például egy Filter függvényt egy olyan kiválasztási képlettel, amely nem delegálható egy millió rekordot tartalmazó adatforrás felett. Mivel a szűrés helyeben történik, csak az első 500 rekord van megvizsgálva. Ha a kívánt rekord 501 vagy 500 001 rekord, a szűrő nem veszi figyelembe és nem adja vissza.
Az összesítő függvények is okozhatnak félreértést. Vegyük az Átlagot ugyanazon millió rekord adatforrás oszlopán. Ebben az esetben az átlag nem delegálható, mivel a kifejezés nincs delegálva (lásd a korábbi megjegyzést), így csak az első 500 rekord lesz átlagolva. 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:
- Válassza a Beállítások lehetőséget.
- Az Általános csoportbanmódosítsa az Adatsorok korlátja 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 létrehoz egy három képernyős alkalmazást egy [dbo][ nevű SQL Server-tábla alapján.[ Gyümölcs]. Az alkalmazás létrehozásával kapcsolatos információkért hasonló alapelveket alkalmazhat a Dataverse SQL Server.
A katalógus Elemek tulajdonsága olyan képletre van beállítva, amely SortByColumns és Search függvényeket tartalmaz , amelyek delegálhatók.
A keresőmezőbe írja be : "Apple".
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.
A keresési eredmények közé tartozik "alma" és "ananász" mert a Keresés funkció mindenhol egy szöveges oszlopban néz ki. Ha csak olyan rekordokat szeretne találni, amelyek tartalmazzák a gyümölcs nevének elején lévő keresőszó (search word), használhat egy másik delegálható függvényt, a Filter függvényt, bonyolultabb keresőszó (search word). (Az egyszerűség kedvéért távolítsa el a SortByColumns hívás.)
Az új eredmények közé tartozik "Alma" de nem "Ananász". 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:
SQL Server delegálható adatforrás, a szűrő pedig delegálható függvény, azonban a Mid és a Len nem delegálható egyetlen adatforrás sem.
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. A rendszer minden rekordot áthozott az eszközre, és helyileg alkalmazta a szűrőt .
- 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
A nem delegálható függvények és a nem megfelelő adatsorkorlátok használatának hatása a teljesítményre
Teljesítménnyel kapcsolatos tippek és ajánlott eljárások a delegálás használatához