Lekérdezési korlátozások: Delegálási és lekérdezési korlátok
A delegálás ismertetése
Power Apps Akkor működik a legjobban háttér-adatforrással, ha egy Power Fx lekérdezés teljes mértékben lefordítható egy egyenértékű lekérdezésre, amely futtatható az adatforráson. Power Apps elküldi az adatforrás által megértett lekérdezést, a lekérdezést a rendszer végrehajtja az adatforráson, és visszaadja a lekérdezés eredményeit Power Apps. Előfordulhat például, hogy az adatforrás szűri az adatforrás adatait, é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 az adatforráshoz a lekérdezés munkájának elvégzéséhez.
A lekérdezések azonban Power Fx nem mindig fordíthatók le egyenértékű lekérdezésekre az összes adatforráson. Például,több Dataverse lekérdezési funkciót támogat, mint az Excel. Dataverse támogatja az "in" (tagság) lekérdezési operátort, az Excel pedig nem. Azt mondjuk, hogy a lekérdezés nem delegálható , ha egy lekérdezés olyan funkciót használ, amelyet az adatforrás nem támogat. Általánosságban elmondható, hogy ha egy lekérdezési kifejezés bármely része nem delegálható, akkor a lekérdezés egyetlen részét sem delegáljuk.
Ha egy lekérdezés nem delegálható, csak az első 500 rekordot kapja le az adatforrásból, Power Apps majd hajtsa végre a lekérdezés műveleteit. Ez a korlát 2 000 rekordra növelhető: A korlátPower Apps módosítása az eredmény méretét 500 rekordra korlátozza a jó teljesítmény megőrzése Power Apps érdekében. Kísérletezés során azt találtuk, hogy az ennél nagyobb eredményhalmazok teljesítményproblémákat okoznak az alkalmazásban é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 vissza, ha az adatforrás adatai meghaladják az 500/2000 rekordot. Vegyük például azt a példát, amelyben az adatforrás 10 millió rekordot tartalmaz, és a lekérdezésnek az adatok utolsó részén kell működnie. (Például a "Z"-vel kezdődő családnevek) A lekérdezés azonban tartalmaz egy nem delegálható operátort (például különálló). 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 az 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 dolgozik (500-nál kevesebb rekord), bármilyen adatforrást és képletet használhat, mert az alkalmazás helyileg tudja feldolgozni 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 az adatforrásban lévő adatok száma meghaladja az 500 rekordot, és egy függvény nem delegálható, Power Fx a képletet kék aláhúzással jelöli meg.
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 felvázolja 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 SQL Serverhez
- Power Apps delegálható függvények és műveletek a Salesforce számára
Az importált Excel-munkafüzetek (a Statikus adatok hozzáadása az alkalmazáshoz adatforráshoz használatával ), gyűjtemények és környezeti változókban tárolt 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, a Search , az First és a LookUp delegálható .
A Filter és aLookUp függvényen belül ezeket használhatja a tábla oszlopaival a megfelelő rekordok kiválasztásához:
- És(beleértve && ),Vagy ...(beleértve ),Nem||(beleértve ! ) ...
-
Ban
Feljegyzés
A be csak az alapadatforrás oszlopaihoz van delegálva. Ha például az adatforrás a Partnerek tábla, akkor
Filter(Accounts, Name in ["name1", "name2"])
delegálja az adatforrást kiértékelésre. AzonbanFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
nem delegál, mivel a Teljes név oszlop egy másik táblán (PrimaryContact) található, mint a Partnerek. A kifejezés kiértékelése helyben történik. - =, <>,= >, <=,, ><
- +, -
- TrimEnds
- Üres
- Kezdődik,Véget ér
- Állandó értékek, amelyek minden rekordban azonosak, 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,Left( Language(), 2 ),Date ( 2019, 3, 31 ), és Today () nem függ a rekord egyetlen oszlopától sem, ezért ugyanazt az értéket adja vissza az összes rekordhoz. 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öntési műveletek Szöveg,Érték...
- Összefűzés (beleértve &)
- Pontosabban
- Húrmanipulációs funkciók: Alsó, Felső, Bal, Középső, Len, ...
- Jelek: Hely, gyorsulás, iránytű, ...
- Illékony anyagok: 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és legfeljebb két keresési függvényt tartalmazhat. Ez a korlátozás a teljesítmény megőrzését szolgálja. Ha egy lekérdezési kifejezés tartalmaz egy keresést, Power Apps először lekérdezést végez az alaptábla lekéréséhez. Ezután egy második lekérdezést hajt végre, amely kibontja az első táblát a keresési adatokkal. Ezen túl még egy szintet támogatunk maximumként. Offline módban azonban csak egy keresési szint kibontását támogatjuk.
Kifejezés kiértékelése - az entitás tulajdonságának az egyenlőségi operátor bal oldalán kell lennie 'LHS'
Fontos, hogy az összehasonlítandó entitás tulajdonságát egy kifejezésben az egyenlet bal oldalán helyezzük el. Szemléltetésképpen az alábbi példában az "Üzletági egység azonosítója" entitástulajdonság . A név egy tulajdonságérték, és a kiértékelendő kifejezés LHS-jére kell helyezni. 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 párbeszédpanelena 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 delegálhatók a háttértámogatás alapján. Az olyan függvények, mint a Sum, Average, Min ésMax 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 a funkciók delegálását. További részletekért tekintse meg a Delegálási 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:
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, amelynek nem delegálható kiválasztási képlete 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 az 501-es vagy az 500 001-es rekord, a Filter nem veszi figyelembe és nem adja vissza.
Az összesítő függvények is okozhatnak félreértést. Vegyük az átlagot ugyanannak a millió rekordos adatforrásnak egy oszlopára. 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 átlagolása történik. 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 Adatsorkorlát 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 adathalmazokra skálázható 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 nincs megfelelően delegálva, ellenőrizze az adatforrás típusát a cikk korábbi delegálható adatforrásainak listájával.
Példák
Ebben a példában automatikusan létrehoz egy háromképernyős alkalmazást egy SQL Server tábla alapján.[ Gyümölcs]. Az alkalmazás létrehozásával kapcsolatos információkért hasonló elveket alkalmazhat a SQL Server című cikkben Dataverse .
A katalógus Items tulajdonsága egy olyan képletre van beállítva, amely tartalmazza a SortByColumns és a Search függvényt, amelyek mindkettő delegálható.
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 keres egy szöveges oszlopban. Ha csak azokat a rekordokat szeretné megtalálni, amelyek a gyümölcs nevének elején tartalmazzák a keresett kifejezést, használhat egy másik delegálható függvényt, a Szűrőt, egy bonyolultabb keresőkifejezéssel. (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 Filter pedig egy delegálható függvény, a Mid és a Len azonban nem delegálható egyetlen adatforráshoz 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 az eszközre hozott, és a szűrőt helyileg alkalmazta.
- 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ő adatsor-korlátok hatása a teljesítményre
Teljesítménybeli tippek és ajánlott eljárások a delegálás használatához