Apraksts par deleģēšanu pamatnes programmā

Power Apps ietver komplektu ar efektīvām funkcijām pamatnes programmas datu tabulu filtrēšanai, kārtošanai un veidošanai: kā dažas no tām var minēt funkcijas Filter, Sort un AddColumns. Izmantojot šīs funkcijas, varat lietotājiem sniegt fokusētu piekļuvi viņiem nepieciešamajai informācijai. Personām, kas pārzina datu bāzu lietošanu, šo funkciju izmantošana ir ekvivalenta datu bāzes vaicājuma rakstīšanai.

Efektīvu programmu veidošanas atslēga ir uz jūsu ierīci nogādājamo datu apjoms. Iespējams, no miljoniem rindu jums ir nepieciešamas tikai dažas, vai tūkstošiem rindu var parādīt tikai ar vienu apkopotu vērtību. Bet varbūt var izgūt tikai pirmo rindu kopu un pārējās piegādāt, kad lietotājs ar žestiem norāda, ka vēlas redzēt vairāk. Fokusēšanās var dramatiski samazināt jūsu programmai nepieciešamo apstrādes jaudu, atmiņu un tīkla joslas platumu, līdz ar to lietotājiem sniedzot zibenīgāku reaģēšanu pat tālruņos, kas izmanto mobilo datu pieslēgumu.

Deleģēšana ir vieta, kur Power Apps formulu izteiksmīgums sastopas ar nepieciešamību minimizēt tīklā pārsūtītos datus. Īsumā — datu apstrādi Power Apps deleģē datu avotam, nevis pārvieto datus uz programmu un apstrādā lokāli.

Šis raksts ir tapis tādēļ, ka tas var kļūt sarežģīti, jo ne visu, ko var izteikt ar Power Apps formulu, var deleģēt visiem datu avotiem. Power Apps valoda atgādina Excel formulu valodu, un tā ir izstrādāta ar pilnīgu un tūlītēju piekļuvi pilnai darbgrāmatai atmiņā, ar dažnedažādām skaitļu un teksta manipulāciju funkcijām. Līdz ar to Power Apps valoda ir daudz bagātīgāka par to, kādu spēj atbalstīt vairums datu avotu, tostarp jaudīgas datu bāzu programmas, piemēram, SQL Server.

Lai strādātu ar lielām datu kopām, ir nepieciešams izmantot datu avotus un formulas, kuras var deleģēt. Tikai tā var gādāt, ka jūsu programma darbojas labi, un nodrošināt, ka lietotāji spēj piekļūt visai viņiem 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 par 500 rindu), varat izmantot jebkuru datu avotu un formulu, jo gadījumā, ja formulu nevar deleģēt, programma datus var apstrādāt lokāli.

Piezīme

Pakalpojumā Power Apps deleģēšanas brīdinājumi iepriekš tika atzīmēti kā “zilo punktu” ierosinājumi, bet kopš tā laika deleģēšanas ierosinājumi ir pārklasificēti par brīdinājumiem. Ja dati jūsu programmā pārsniedz 500 rindas un funkciju nevar deleģēt, Power Apps varētu nespēt izgūt visus datus un jūsu programmai varētu būt nepareizi rezultāti. Deleģēšanas brīdinājumi palīdz jums pārvaldīt programmu, lai tās rezultāti būtu pareizi.

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 šāds atbalsts. Piemēram, vispopulārākie ir tālāk norādītie tabulveida datu avoti, un tie atbalsta deleģēšanu.

Importētajām Excel darbgrāmatām (izmantojot datu avotu Pievienojiet savai programmai statiskus datus ), kolekcijām un konteksta mainīgajos glabātajām tabulām nav nepieciešama deleģēšana. 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ā.

Laika gaitā šie saraksti mainās. Mēs strādājam pie tā, lai ar deleģēšanu atbalstītu vairāk funkciju un operatoru.

Filtrēšanas funkcijas

Funkcijas Filter, Search un LookUp var deleģēt.

Lai tabulas kolonnās atlasītu atbilstošās rindas, izmantojiet Filter un LookUp funkcijas.

  • And (tostarp &&), Or (tostarp ||), Not (tostarp !)
  • Iekšā

    Piezīme

    In tiek deleģēts tikai kolonnām bāzes datu avots. Piemēram, ja datu avots ir tabula Konti, Filter(Accounts, Name in ["name1", "name2"]) deleģē datu avots novērtēšanai. Tomēr netiek deleģēts, Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) jo pilna nosaukuma kolonna atrodas citā tabulā (PrimaryContact) nekā konti. Izteiksme tiek novērtēta lokāli.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • Konstantas vērtības, kuras ir vienādas visās rindās, 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, vērtības Left( Language(), 2 ), Date( 2019, 3, 31 ) un Today() nav atkarīgas no kādas rindas kolonnas, tādēļ tās atgriež vienādu vērtību visām rindām. Šī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.

Kārtošanas funkcijas

Funkcijas Sort un SortByColumns var deleģēt.

Izmantojot Sort, formula var būt tikai vienas kolonnas nosaukums, un tajā nedrīkst būt citu operatoru un funkciju.

Apkopošanas funkcijas

Funkcijas Sum, Average, Min un Max var deleģēt. Pašlaik šo deleģēšanu atbalsta tikai ierobežots skaits datu avotu; plašāku informāciju skatiet deleģēšanas sarakstā.

Piezīme

Ja izteiksme nav deleģēta, tā darbojas tikai ar pirmiem 500 ierakstiem (konfigurējams līdz 2000, skatiet sadaļu Ierobežojuma mainīšana) no izgūtā datu avota, nevis visu datu apstrādes deleģēšana datu avotā.

Skaitīšanas funkcijas, piemēram, CountRows, CountA un Count, nevar deleģēt.

Citas apkopošanas funkcijas, piemēram, StdevP un VarP, nevar deleģēt.

Tabulu veidošanas funkcijas

Funkcijas AddColumns, DropColumns, RenameColumns un ShowColumns deleģēšanu atbalsta daļēji. Formulas to argumentos var deleģēt. Taču uz šo funkciju izvadi attiecas nedeleģēšanas rindas ierobežojumi.

Tāpat kā šajā piemērā, funkcijas AddColumns un LookUp veidotāji bieži izmanto, lai informāciju no vienas tabulas iepludinātu citā, datu bāzu žargonā to parasti to sauc par Join jeb savienošanu:

AddColumns( Products, 
    "Supplier Name", 
    LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name 
)

Lai gan Products un Suppliers varētu būt deleģējami datu avoti un LookUp ir deleģējama funkcija, funkcijas AddColumns izvadi nevar deleģēt. Visas formulas rezultāts ir ierobežots ar pirmo daļu no datu avota Products. Tā kā funkcija LookUp un tās datu avots ir deleģējams, atbilstību vērtībai Suppliers var atrast jebkurā datu avota vietā pat tad, ja tas ir liels.

Ja funkciju AddColumns izmantojat šādā veidā, funkcijai LookUp ir jāveic atsevišķi izsaukumi uz datu avotu par katru no šīm pirmajām rindām kolonnā Products, līdz ar to saziņas apjoms tīklā ir liels. Ja kolonna Suppliers ir pietiekami maza un ja tā nemainās bieži, funkciju Collect jūs varētu izsaukt ar OnStart, lai datu avotu saglabātu savas programmas kešatmiņā pēc programmas ieslēgšanas. Varat arī pārstrukturizēt programmu, lai ievilktu saistītās rindas vienīgi tad, ja lietotājs tās pieprasa.

Nedeleģējamās funkcijas

Visas pārējās funkcijas, tostarp tālāk norādītās svarīgās funkcijas, deleģēšanu neatbalsta.

Nedeleģējamie ierobežojumi

Formulas, kuras nevar deleģēt, tiek apstrādātas lokāli. Tas ļauj izmantot visu Power Apps formulu valodas bagātību. 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, iedomājieties funkciju Filter ar atlases formulu, ko nevar deleģēt, datu avotā, kur ir miljons rindu. Tā kā filtrēšana notiek lokāli, tiek skenēti tikai pirmās 500 rindas. Ja vēlamā rinda ir rinda numur 501 vai numur 500 001, tas netiek ņemts vērā un funkcija Filter to neatgriež.

Arī apkopošanas funkcijas var izraisīt apjukumu. Par piemēru ņemsim funkciju Average tajā pašā miljons rindu datu avota kolonnā. Vidējais nevar tikt deleģēt šajā gadījumā, jo izteiksme nav deleģēta (skatīt iepriekšējo piezīmi), tāpēc tikai pirmie 500 ieraksti ir ar vidēju vērtību. 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ā.

  1. Atlasiet Iestatījumi.
  2. Sadaļā Vispārīgi mainiet Datu rindas ierobežojuma iestatījumu no 1 uz 2000.

Reizēm jums būs zināms, ka jūsu scenārijā pietiek ar 2000 (vai 1000, vai 1500). Š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 programma ir mērogojama uz lielām datu kopām, samaziniet šo iestatījumu uz 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 jūsu formula netiek deleģēta pareizi, apskatiet datu avota tipu deleģējamo datu avotu sarakstā, kas šajā tēmā ir norādīts iepriekš.

Piemēri

Šim piemēram jūs automātiski ģenerējat trīs ekrānu programmu, balstoties uz SQL Server tabulu ar nosaukumu [dbo].[Fruit]. Informācijai par to, kā šādu programmu ģenerēt — programmai SQL Server varat vienkārši izmantot līdzīgus principus kā tēmā par Dataverse.

Trīs ekrānu programma.

Galerijas rekvizīts Items ir iestatīts uz formulu, kurā ir funkcijas SortByColumns un Search, un tās 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 teksta ievades vadīkla.

Meklēšanas rezultātos ietilpst "Apples", "Crab apples" un "Pineapple", jo ar funkciju Search teksta kolonnā tiek meklēts visur. Ja vēlaties atrast tikai rindas, kurās meklējamais vārds ir meklējamo nosaukuma sākumā, varat izmantot citu deleģējamu funkciju Filtrēt ar sarežģītāku meklējamo vārdu. (Vienkāršības labad noņemiet izsaukumu SortByColumns.)

Izsaukuma SortByColumns noņemšana.

Jaunajos rezultātos ir "Apples", bet nav "Crab apples" un "Pineapple". 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 kādu brīdinājumu. Ja ar peles kursoru norādāt uz dzeltenā trīsstūra blakus galerijai, tiek parādīts ziņojums:

Norādīšana ar peles kursoru uz deleģēšanas brīdinājuma.

SQL Server ir deleģējams datu avots, un Filter ir deleģējama funkcija, taču funkcijas 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. Visas rindas tika nogādātas uz ierīci, un funkcija Filter tika lietota 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šana nedeleģējamiem vaicājumiem
Veiktspējas padomi un deleģēšanas ieteikumi

Piezīme

Kādas ir jūsu dokumentācijas valodas preferences? Aizpildiet īsu aptauju. (ņemiet vērā, ka aptauja ir angļu valodā)

Aptaujai būs nepieciešamas aptuveni septiņas minūtes. Nekādi personas dati netiks vākti (paziņojums par konfidencialitāti).