Vaicājumu ierobežojumi: deleģēšanas un vaicājumu ierobežojumi
Izpratne par deleģēšanu
Power Apps Vislabāk darbojas ar aizmugures datu avotu, ja Power Fx vaicājumu var pilnībā pārvērst līdzvērtīgā vaicājumā, ko var izpildīt datu avotā. Power Apps Nosūta vaicājumu, ko datu avots saprot, vaicājums tiek veikts datu avotā, un vaicājuma rezultāti tiek atgriezti Power Apps. Piemēram, datu avots var filtrēt datu avota datus un atgriezt tikai tās rindas, kas atbilst filtra kritērijiem. Kad tas darbojas pareizi, mēs sakām, ka vaicājums tiek deleģēts datu avotam, lai veiktu vaicājuma darbu.
Tomēr Power Fx vaicājumus ne vienmēr var pārvērst līdzvērtīgos vaicājos visos datu avotos. Piemēram, Dataverse atbalsta vairāk vaicājumu līdzekļu nekā Excel. Dataverse atbalsta vaicājuma operatoru "in" (dalība), bet Excel ne. Mēs sakām, ka vaicājums nav deleģējams , ja vaicājums izmanto līdzekli, ko datu avots neatbalsta. Kopumā, ja kāda vaicājuma izteiksmes daļa nav deleģējama, mēs nedeleģējam nevienu vaicājuma daļu.
Ja vaicājums nav deleģējams, Power Apps iegūstiet tikai pirmos 500 ierakstus no datu avota un pēc tam veiciet vaicājuma darbības. Šo ierobežojumu var palielināt līdz 2,000 ierakstiem Mainot ierobežojumuPower Apps , rezultāta lielums ir ierobežots līdz 500 ierakstiem, lai saglabātu labu veiktspēju Power Apps. Eksperimentējot mēs konstatējām, ka rezultātu kopas, kas lielākas par šiem izmēriem, rada veiktspējas problēmas jūsu lietotnē un Power Apps kopumā.
Tomēr šis ierobežojums var būt problēma, jo vaicājums var atgriezt nepareizus rezultātus, ja datu avota dati pārsniedz 500/2000 ierakstus. Piemēram, apsveriet piemēru, kad datu avotam ir 10 miljoni ierakstu un vaicājumam ir jādarbojas ar pēdējo datu daļu. (Piemēram, uzvārdi, kas sākas ar "Z") Tomēr vaicājumam ir nedeleģējams operators (piemēram, atšķirīgs). Šajā gadījumā jūs saņemat tikai pirmos 500/2000 ierakstus, un jums ir nepareizi rezultāti.
Izveidojiet vaicājumus Power Fx , izmantojot datu avota deleģējamās tabulas. Izmantojiet tikai vaicājuma funkcijas, kuras var deleģēt. Tas ir vienīgais veids, kā nodrošināt lietotnes labu darbību un nodrošināt, ka lietotāji var piekļūt visai nepieciešamajai informācijai.
Ņemiet vērā deleģēšanas brīdinājumus, kas norāda vietas, kur deleģēšana nav iespējama. Ja strādājat ar mazām datu kopām (mazāk nekā 500 ierakstiem), varat izmantot jebkuru datu avotu un formulu, jo programma var apstrādāt datus lokāli, ja formulu nevar deleģēt.
Piezīmes
Deleģēšanas brīdinājumi palīdz jums pārvaldīt programmu, lai tās rezultāti būtu pareizi. Ja datu avota dati pārsniedz 500 ierakstus un funkciju nevar deleģēt, Power Fx formula tiks atzīmēta ar zilu pasvītrojumu.
Deleģējamie datu avoti
Deleģēšana tiek atbalstīta tikai noteiktiem tabulveida datu avotiem. Ja datu avots atbalsta deleģēšanu, tā savienotāja dokumentācijā ir norādīts šis atbalsts. Piemēram, vispopulārākie ir tālāk norādītie tabulveida datu avoti, un tie atbalsta deleģēšanu.
- Power Apps deleģējamas funkcijas un darbības Microsoft Dataverse
- Power Apps deleģējamas funkcijas un darbības SharePoint
- Power Apps deleģējamas funkcijas un operācijas SQL Server
- Power Apps deleģējamas funkcijas un darbības Salesforce
Importētām Excel darbgrāmatām (izmantojot opciju Pievienot statiskus datus programmas datu avotam), kolekcijām un tabulām, kas glabājas konteksta mainīgajos, deleģēšana nav nepieciešama. Visi šie dati jau atrodas atmiņā, un var izmantot pilnīgo Power Apps valodu.
Deleģējamās funkcijas
Nākamais posms ir izmantot tikai tās formulas, kuras var deleģēt. Šeit ir iekļauti formulu elementi, kurus varēja deleģēt. Taču katrs datu avots ir atšķirīgs, un ne visi avoti atbalsta visus šos elementus. Apskatiet deleģēšanas brīdinājumus savā konkrētajā formulā.
Filtrēšanas funkcijas
Var deleģēt filtru, meklēšanu, pirmo un uzmeklēšanu .
Funkcijās Filter un LookUp varat tās izmantot ar tabulas kolonnām, lai atlasītu atbilstošos ierakstus:
- Un (ieskaitot &&), Vai (ieskaitot ||), Nē (ieskaitot !)
-
Iekšienē
Piezīmes
In tiek deleģēts tikai pamatdatu avota kolonnām. Piemēram, ja datu avots ir tabula Konti, tad
Filter(Accounts, Name in ["name1", "name2"])
tiek deleģēts datu avotam novērtēšanai. Tomēr nedeleģēFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
, jo kolonna Pilns vārds atrodas citā tabulā (PrimaryContact) nekā Accounts. Izteiksme tiek lokāli novērtēta. - =, <>,= >, <=, >, <
- +, -
- Apgriezieni
- Ir tukšs
- Sākas ar,beidzasAr...
- Nemainīgas vērtības, kas ir vienādas visos ierakstos, piemēram, vadīklas rekvizīti un globālie un konteksta mainīgie.
Varat izmantot arī savu formulas daļas, kuru rezultāts ir konstanta vērtība visām rindām. Piemēram, Left( Language(), 2 ), Date( 2019, 3, 31 ) un Today() nav atkarīgi no ieraksta kolonnām un tāpēc visiem ierakstiem atgriež vienādu vērtību. Šīs vērtības var nosūtīt uz datu avotiem kā konstantes, un tās nebloķē deleģēšanu.
Iepriekšējā sarakstā nav tālāk norādīto svarīgo vienumu.
- Ja
- *, /, Mod
- Kolonnu pārraides operācijas Teksts,Vērtība...
- Savienot (ieskaitot &)
- Precīzs
- Stīgu manipulācijas funkcijas: apakšējā, augšējā, kreisā, vidū, lēca, ...
- Signāli: atrašanās vieta, paātrinājums, kompass, ...
- Gaistoši: Rand, ...
- Kolekcijas
Vaicājumu ierobežojumi
Uzmeklēšanas līmeņi
Power Apps Atbalsta divus uzmeklēšanas līmeņus. Tas nozīmē, ka Power Fx vaicājuma izteiksmē var būt ne vairāk kā divas uzmeklēšanas funkcijas. Šis ierobežojums ir paredzēts, lai saglabātu veiktspēju. Ja vaicājuma izteiksme ietver uzmeklēšanu, vispirms veic vaicājumu, Power Apps lai iegūtu pamattabulu. Pēc tam tas veic otro vaicājumu, kas izvērš pirmo tabulu ar uzmeklēšanas informāciju. Mēs atbalstām vēl vienu līmeni, kas pārsniedz šo līmeni. Tomēr bezsaistē mēs atbalstām tikai vienu uzmeklēšanas līmeņa paplašināšanu.
Izteiksmes novērtējums - vienības īpašumam jābūt vienlīdzības operatora kreisajā pusē "LHS"
Ir svarīgi salīdzināmās vienības īpašību novietot izteiksmē vienādojuma kreisajā pusē "LHS". Piemēram, zemāk esošajā piemērā entītijas rekvizīts "Struktūrvienības ID". Nosaukums ir rekvizīta vērtība, un tā ir jāievieto novērtējamās izteiksmes LHS. Sekmīga šāda izteiksme:
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
Tomēr šis izteiciens:
Filter(
Budgets,
LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name = 'Business unit ID'.Name,
'Date Range String'=DataCardValue37.Selected.'Date Range String'
)
Kārtošanas funkcijas
Var deleģēt kārtošanu un kārtošanu pēc kolonnām .
Programmā Kārtošana formula var būt tikai vienas kolonnas nosaukums un nevar ietvert citus operatorus vai funkcijas.
Apkopošanas funkcijas
Dažas apkopotās funkcijas var deleģēt, pamatojoties uz aizmugursistēmas atbalstu. Var deleģēt tādas funkcijas kā Sum, Average, Min unMax .... Var deleģēt arī skaitīšanas funkcijas, piemēram , CountRows un Count. Tomēr RemoveIf un UpdateIf ir deleģēšanas ierobežojumi. Pašlaik tikai ierobežots skaits datu avotu atbalsta šo funkciju deleģēšanu. Detalizētu informāciju skatiet deleģēšanas sarakstā.
Nedeleģējamas funkcijas
Visas pārējās funkcijas, tostarp tālāk norādītās svarīgās funkcijas, deleģēšanu neatbalsta.
Nedeleģējami ierobežojumi
Formulas, kuras nevar deleģēt, tiek apstrādātas lokāli. Vietējā apstrāde ļauj izmantot visu formulas valodas Power Apps plašumu. Taču tam ir sava cena: vispirms visi dati ir jānogādā uz ierīci, un tas var būt saistīts ar liela datu apjoma izgūšanu tīklā. Tas var aizņemt laiku, radot iespaidu, ka jūsu programma darbojas lēni vai varētu būt avarējusi.
Lai no tā izvairītos, Power Apps nosaka lokāli apstrādājamo datu apjoma ierobežojumu: pēc noklusējuma tās ir 500 rindas. Šo skaitu mēs izvēlējāmies tā, lai jums joprojām būtu pilnīga piekļuve mazām datu kopām un jūs varētu uzlabot lielu datu kopu izmantošanu, redzot daļējos rezultātus.
Protams, izmantojot šo iespēju, ir jāuzmanās, jo lietotājus tas var maldināt. Piemēram, apsveriet funkciju Filter ar atlases formulu, kuru nevar deleģēt, pār datu avotu, kas satur miljonu ierakstu. Tā kā filtrēšana notiek lokāli, tiek skenēti tikai pirmās 500 rindas. Ja vēlamais ieraksts ir ieraksts 501 vai 500 001, filtrs to neņem vērā vai neatgriež.
Arī apkopošanas funkcijas var izraisīt apjukumu. Ņemiet vidējo virs tā paša miljonu ierakstu datu avota kolonnas. Šajā gadījumā vidējo vērtību nevar deleģēt, jo izteiksme nav deleģēta (skatiet iepriekšējo piezīmi), tāpēc tiek aprēķināts vidējais rādītājs tikai pirmajiem 500 ierakstiem. Ja neuzmanaties, jūsu programmas lietotājs daļēju atbildi var nepareizi pieņemt par pilnīgu atbildi.
Ierobežojuma mainīšana
500 ir rindu noklusējuma skaits, taču šo skaitu visai programmai varat mainīt tālāk norādītajā veidā.
- Atlasiet Iestatījumi.
- Sadaļā Vispārīgi mainiet iestatījumu Datu rindas ierobežojums no 1 uz 2000.
Dažos gadījumos jūs zināt, ka 2,000 (vai 1,000 vai 1,500) apmierinās jūsu scenārija vajadzības. Šo skaitli varat uzmanīgi palielināt, lai tas atbilstu jūsu scenārijam. Šo skaitli palielinot, jūsu programmas veiktspēja var pasliktināties, it īpaši tas attiecas uz plašām tabulām, kur ir daudz kolonnu. Taču tik un tā, vislabākais risinājums ir deleģēt, cik daudz vien iespējams.
Lai nodrošinātu, ka jūsu lietotne var mērogot līdz lielām datu kopām, samaziniet šo iestatījumu līdz 1. Viss, ko nevar deleģēt, atgriež vienu rindu, ko vajadzētu vienkārši konstatēt, testējot jūsu programmu. Tas var palīdzēt izvairīties no pārsteigumiem, kad prototipa programmu mēģināt pārcelt uz ražošanu.
Deleģēšanas brīdinājumi
Lai būtu vienkāršāk saprast, kas tiek un kas netiek deleģēts, Power Apps parāda brīdinājumu (dzeltenu trīsstūri), kad izveidojat formulu, kurā ir kaut kas, ko nevar deleģēt.
Deleģēšanas brīdinājumi tiek rādīti tikai formulām, kas darbojas deleģējamos datu avotos. Ja neredzat brīdinājumu un uzskatāt, ka formula netiek pienācīgi deleģēta, pārbaudiet datu avota tipu ar deleģējamo datu avotu sarakstu iepriekš šajā rakstā.
Piemēri
Šajā piemērā automātiski ģenerēsit trīs ekrānu programmu, kuras pamatā ir SQL Server tabula ar nosaukumu [dbo].[ Augļi]. Lai iegūtu informāciju par to, kā ģenerēt programmu, līdzīgus principus varat lietot rakstā par Dataverse SQL Server.
Galerijas rekvizīts Items ir iestatīts uz formulu, kas satur funkcijas SortByColumns un Search , kuras abas var deleģēt.
Meklēšanas lodziņā ierakstiet "Apple".
Uz īsu brīdi ekrāna augšpusē tiek rādīta punktiņu animācija, kamēr programma sazinās ar SQL Server, lai apstrādātu šo meklēšanas pieprasījumu. Tiek parādīti visias rindas, kas atbilst meklēšanas kritērijiem, pat gadījumā, ja datu avotā ir miljoniem rindu.
Meklēšanas rezultāti ietver" Āboli" un "Ananāsi" jo meklēšanas funkcija izskatās visur teksta kolonnā. Ja vēlaties atrast tikai ierakstus, kas satur meklējamo terminu augļa nosaukuma sākumā, varat izmantot citu deleģējamu funkciju,Filtrs , ar sarežģītāku meklēšanas terminu. (Vienkāršības labad noņemiet SortByColumns izsaukums.)
Jaunie rezultāti ietver" Āboli" bet nē "Ananāsi". Taču blakus galerijai (un ekrāna sīktēlā, ja kreisajā navigācijas joslā tiek rādīti sīktēli) kļūst redzams dzeltens trīsstūris, un zem formulas daļas kļūst redzama viļņota līnija zilā krāsā. Katrs no šiem elementiem norāda uz brīdinājumu. Ja ar peles kursoru norādāt uz dzeltenā trīsstūra blakus galerijai, tiek parādīts ziņojums:
SQL Server ir deleģējams datu avots, un filtrs ir deleģējama funkcija, Tomēr Mid un Len nevar deleģēt nevienam datu avotam.
Taču tas darbojās, nav ne? Nu, jā, savā ziņā. Tādēļ šis ir brīdinājums, nevis viļņots ķeburs sarkanā krāsā.
- Ja tabulā ir mazāk par 500 rindām, formula darbojas nevainojami. Visi ieraksti tika pārnesti uz ierīci, un filtrs tika lietots lokāli.
- Ja tabulā ir vairāk par 500 rindām, formula neatgriež nevienu rindu pēc rindas numur 501 pat tad, ja tas atbilst kritērijiem.
Skatiet arī
Nedeleģējamu funkciju un neatbilstošu datu rindu ierobežojumu izmantošanas ietekme uz veiktspēju
Veiktspējas padomi un deleģēšanas izmantošanas paraugprakse