Partekatu honen bidez:


Kodearen optimizazioa

Mihise aplikazioak negozio behar desberdinak asetzeko eboluzionatzen diren heinean, errendimendua optimoa mantentzea ezinbestekoa da. Datuen kudeaketak, erabiltzaile interfazearen diseinuak eta aplikazioaren funtzionaltasunak kodearen optimizazioari buruzko ikuspegi zaindua eskatzen dute.

Mihise aplikazioak konplexuagoak direnean, arazoak izan ditzakezu datuak berreskuratzeko, formulen konplexutasunerako eta errendatze-abiadurarako. Funtzionaltasun sendoa eta erabiltzaile-interfaze erantzunkor bat orekatzeak kodearen optimizaziorako ikuspegi sistematiko bat behar duzula esan nahi du.

Power Fx formulen optimizazioa

Funtzioarekin.

Funtzioak erregistro bakar baten formula ebaluatzen du. With Formulak balio bat kalkula dezake edo ekintzak egin ditzake, hala nola datuak aldatzea edo konexio batekin lan egitea. Erabili With formula konplexuak errazago irakurtzeko, azpiformula txikiagoetan banatuz. Balio izendatu hauek -ren esparrura mugatutako aldagai lokal sinple gisa jokatzen dute With. With erabiltzea testuinguru edo aldagai globalak baino hobea da, bere kabuz osatua, erraz ulertzen dena eta edozein formula deklaratibo testuingurutan funtzionatzen duelako. Lortu informazio gehiago funtzioari buruz.With

With funtzioa erabiltzen duen formula baten pantaila-argazkia. Power Fx

Funtzio paraleloa

*Funtzioak* propietate bereko hainbat formula aldi berean ebaluatzeko aukera ematen du, konektorea edo *deiak* badituzte. Concurrent Dataverse Normalean, hainbat formula aldi berean ebaluatzen dira ; (puntu eta koma) operadorearekin kateatzen direnean. Concurrent-rekin, aplikazioak propietate bateko formula guztiak aldi berean ebaluatzen ditu, ; eragilea erabili ondoren ere. Aldiberekotasun honek esan nahi du erabiltzaileek gutxiago itxaron behar dutela emaitzen zain. Datu-deiak aurreko deiak amaitu arte hasten ez direnean, aplikazioak eskaera-denbora guztien batura itxaroten du. Datu-deiak aldi berean hasten badira, aplikazioak eskaera-denbora luzeena bakarrik itxaroten du. Lortu informazio gehiago funtzioari buruz.Concurrent

Concurrent(
    ClearCollect(colAccounts1, Accounts),
    ClearCollect(colUsers1, Users),
    ClearCollect(colEnvDef1, 'Environment Variable Definitions'),
    ClearCollect(colEnvVal1, 'Environment Variable Values')
);

Koalesze funtzioa

Funtzioak bere argumentuak ordenan ebaluatzen ditu eta hutsik edo kate huts bat ez den lehen balioa itzultzen du. Coalesce Erabili funtzio hau balio huts bat edo kate huts bat beste balio batekin ordezkatzeko, baina balio hutsak eta ez-hutsak ez diren kate-balioak aldatu gabe utziz. Argumentu guztiak hutsik edo kate hutsak badira, funtzioak hutsik itzultzen du. Coalesce kate hutsak balio huts bihurtzeko modu ona da.

Adibidez:

If(Not IsBlank(value1), value1, Not IsBlank(value2), value2)

1. balioa eta 2. balioa bi aldiz ebaluatzea eskatzen du. Funtzio hau honetara murriztu daiteke:

Coalesce(value1, value2)

IsMatch funtzioa

*Funtzioak* testu-kate bat karaktere arruntez, aurrez definitutako ereduez edo adierazpen erregular batez osatutako eredu batekin bat datorren egiaztatzen du. IsMatch Lortu informazio gehiago funtzioari buruz.IsMatch

Adibidez, formula honek Estatu Batuetako Gizarte Segurantzako zenbaki batekin bat egiten du:

IsMatch(TextInput1.Text, "\d{3}-\d{2}-\d{4}")

Adierazpen erregularraren azalpena:

\\d Edozein digiturekin bat dator (0-9).

{3} Aurreko digitu-eredua (\d) zehazki hiru aldiz agertu behar dela zehazten du.

- Marratxo karakterearekin bat dator.

{2} Aurreko digitu-eredua (\d) zehazki bi aldiz agertu behar dela zehazten du.

{4} Aurreko digitu-eredua (\d) zehazki lau aldiz agertu behar dela zehazten du.

Adibide gehiago IsMatch:

IsMatch(TextInput1.Text, "Hello World")
IsMatch(TextInput1\_2.Text, "(?!^\[0-9\]\\\*$)(?!^\[a-zA-Z\]\\\*$)(\[a-zA-Z0-9\]{8,10})")

Optimizatu aplikazioa OnStart

Cavas aplikazioen OnStart propietateak funtsezko zeregina du aplikazioa abiaraztean gertatzen diren ekintzak definitzeko orduan. Propietate honek aplikazioen garatzaileei hasieratze-zeregin orokorrak exekutatzeko, aldagaiak konfiguratzeko eta aplikazioaren abiarazte-prozesuan behin bakarrik gertatu beharko liratekeen ekintzak egiteko aukera ematen die. OnStart propietatea ulertzea eta eraginkortasunez erabiltzea ezinbestekoa da mihise aplikazio erantzunkor eta eraginkorrak sortzeko.

Gomendatutako ikuspegi bat funtzioa erraztea da, aldagaien konfigurazioak izendatutako formuletara migratuz. App.OnStart Formula izendatuak, batez ere aplikazioaren bizi-zikloaren hasieran konfiguratutakoak, abantailagarriak direla frogatzen da. Formula hauek datu-deien arabera aldagaien hasieraketa kudeatzen dute, zure kodearentzako egitura garbiagoa eta antolatuagoa eskainiz. Xehetasun gehiago Sortu mihise aplikazio handiak eta konplexuak - Power Apps | Microsoft Learn.

Oharra

*Propietatea* ezinbestekoa da.* Lehenengo pantaila erakutsi aurretik egin behar diren lanen zerrenda ordenatua da.* OnStart Ez bakarrik zer egin behar den zehazten duenez, baita noiz egin behar den ere ordenaren arabera, bestela egin litezkeen berrantolaketak eta atzerapenak mugatzen ditu.

Abiarazi pantaila

Baldin eta funtzio-dei bat badu, funtzio batean egon eta gutxitan deitzen bada ere, Aplikazioaren exekuzioa osatu behar dugu. App.OnStartNavigateIf OnStart aplikazioaren lehen pantaila erakutsi aurretik.  App.StartScreen zein pantaila erakutsi behar den lehenengo adierazteko modu deklaratibo berria da, optimizazioak blokeatzen ez dituena.

StartScreen propietatea ezartzeak lehen pantaila erakusten du App.OnStart amaitu baino lehen. App.StartScreen declares zein pantaila-objektu erakutsi lehenengo, aurreprozesaketarik behar izan gabe.

Honelako kodea idatzi beharrean:

App.OnStart = Collect(OrdersCache, Orders);
If(Param("AdminMode") = "1", Navigate(AdminScreen), Navigate(HomeScreen))

Aldatu kodea honetara:

App.OnStart = Collect(OrdersCache, Orders);
App.StartScreen = If(Param("AdminMode") = "1", AdminScreen, HomeScreen)

Xehetasun gehiago lortzeko, jo ezazu <https://Power Apps.microsoft.com/en-us/blog/app-startscreen-a-new-declarative-alternative-to-navigate-in-app-onstart/> helbidera.

Abisua

Saihestu StartScreen eta arteko mendekotasunak OnStart. Aldagai global bati erreferentzia egiten dion izendatutako formula bati erreferentzia egiteak lasterketa-baldintza bat sor dezake, eta baldintza hori ez da behar bezala aplikatzen. StartScreen Oharra: ez genuke menpekotasunik izan behar StartScreen eta OnStart artean. StartScreen-en aldagai globalen erreferentziak blokeatzen ditugu, baina formula izendatu bati erreferentzia egin diezaiokegu, eta honek, aldi berean, aldagai global bati erreferentzia egiten dio, eta horrek lasterketa-baldintza bat sor dezake, non StartScreen ez den behar bezala aplikatzen.

Izendun formulak

Formula izendatuak estatikoak edo konstanteak dira, eta App.Formulas atalean defini daitezke. Behin App.Formulas-en deklaratu ondoren, aplikazioko edozein lekutan erabil daitezke eta haien balioa beti eguneratuta egongo da. Izendatutako formulek plataformak automatikoki kudeatu eta eguneratzen dituen balioak edo balio multzoak definitzea ahalbidetzen dute. Power Apps Funtzionalitate honek balioaren kalkuluaren eta mantentzearen ardura garatzailetik Power Appsra transferitzen du, garapen prozesua arintuz. Izendatutako formulak Power Apps funtzionalitate indartsua dira, aplikazioen errendimendua eta mantentze-lanak nabarmen hobetu ditzaketenak.

Izendatutako formulek aplikazioen gaiak deklaratzea ere jorratu dezakete. Enpresa-aplikazioak eraikitzen diren kasu askotan, aplikazioek gai komunak izatea nahi dugu, itxura eta erabiltzaile-esperientzia koherentea emateko. Gai bat sortzeko, App OnStart-en hamarnaka eta ehunka aldagai deklaratu behar dira. Honek aplikazioaren kodearen luzera eta hasieratze-denbora handitu zituen.

Kontrol modernoek ere asko lagun dezakete gaiak ezartzen eta bezeroak idatzitako logika murrizten lagun dezakete gaiak kudeatzeko. Kontrol modernoak aurrebistan daude oraingoz.

Adibidez, App.OnStart -ri buruzko kode hau App.Formulas-ra eraman daiteke, eta horrela aldagai globalen deklarazioen abiarazte-denbora murriztu.

Set(BoardDark, RGBA(181,136,99, 1));
Set(BoardSelect, RGBA(34,177,76,1));
Set(BoardRowWidth, 10);                      // expected 8 plus two guard characters for regular expressions.
Set(BoardMetadata, 8 \* BoardRowWidth + 1);   // which player is next, have pieces moved for castling rules, etc.
Set(BoardBlank, "----------------------------------------------------------------\_00000000000000");
Set(BoardClassic, "RNBQKBNR\_\_PPPPPPPP------------------------\_--------\_\_pppppppp\_\_rnbqkbnr\_\_0000000000");

Kodea App.Formulas-era eraman daiteke honela:

BoardSize = 70;
BoardLight = RGBA(240,217,181, 1);
BoardDark = RGBA(181,136,99, 1);
BoardSelect = RGBA(34,177,76,1);
BoardRowWidth = 10;                      // expected 8 plus two guard characters for regular expressions
BoardMetadata = 8 \* BoardRowWidth + 1;   // which player is next, have pieces moved for castling rules, etc.
BoardBlank = "----------------------------------------------------------------\_00000000000000";
BoardClassic = "RNBQKBNR\_\_PPPPPPPP------------------------\_--------\_\_pppppppp\_\_rnbqkbnr\_\_0000000000";

Beste adibide bat ostatuaren ezarpena da Lookups. Hemen, bilaketa-formula batean aldaketa bat behar da erabiltzaile-informazioa Office 365-tik lortzeko, Dataverse-ren ordez. Aldaketa leku bakarra dago behar den lekuan, kodea nonahi aldatu gabe.

UserEmail = User().Email;
UserInfo = LookUp(Users, 'Primary Email' = User().Email);
UserTitle = UserInfo.Title;
UserPhone = Switch(UserInfo.'Preferred Phone', 'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
UserInfo.'Main Phone');

Formula hauek kalkuluaren funtsa gorpuzten dute. Beste balio batzuetan oinarrituta UserEmail, UserInfo, UserTitle eta UserPhone zehazteko prozesua azaltzen dute. Logika hau kapsulatuta dago, aplikazio osoan erabilera zabala ahalbidetuz, eta kokapen bakarrean alda daiteke. Moldagarritasuna Dataverse Erabiltzaileen taulatik Office 365 konektorera aldatzera hedatzen da, aplikazioan zehar sakabanatutako formuletan aldaketak egin beharrik gabe.

Beste ikuspegi bat countRows optimizatzea da.

varListItems = CountRows(SampleList)

Set Funtzioarekin, varListItems aldagaia hasieratu beharko da lagin zerrendako errenkada kopuru hasierakoarekin eta berriro ezarri zerrendako elementuak gehitu edo kendu ondoren. Izendatutako formulekin, datuak aldatzen diren heinean, varListitems aldagaiak automatikoki eguneratzen dira.

*propietatean izendatutako formulek aplikazio osoko balioak eta kalkuluak kudeatzeko ikuspegi malguagoa eta deklaratiboagoa eskaintzen dute, denborarekiko independentziari, eguneratze automatikoei, mantentze-lanei eta aldaezintasun-definizioei dagokienez abantailak eskainiz, *a27> App.Formulas * soilik fidatzearekin alderatuta. App.OnStart

Alderdia Izendatutako formulak (App.Formulas) Aplikazioa.Hasieran
Denboraren Independentzia Formulak berehala eskuragarri daude, edozein ordenatan kalkula daitezke. Aldagaiek denbora-mendekotasunak sor ditzakete, eta horrek eragina izan dezake erabilgarritasunean.
Eguneratze automatikoak Formulak automatikoki eguneratzen dira mendekotasunak aldatzen direnean. Aldagaiak abiaraztean behin ezartzen dira; eskuzko eguneraketak beharrezkoak izan daitezke.
Mantentzeko erabilerraztasuna Leku bakarrean dauden formula zentralizatuek mantentze-lanak hobetzen dituzte. Aldagai sakabanatuak hainbat lekutan aurkitu eta eguneratu behar izatea gerta daiteke.
Definizio aldaezinak App.Formulas-eko formulen definizioak aldaezinak dira. Balio aldagaiak ustekabeko aldaketak jasan ditzakete.

Erabiltzaileak definitutako funtzioak

*Authoring Studio*-ko Erabiltzaileak Definitutako Funtzioek erabiltzaileei beren funtzio pertsonalizatuak sortzeko aukera ematen diete. Power Apps

Funtzio hau erabiltzeko, aurrebista ezarpenetan, aktibatu Erabiltzaileak definitutako funtzioak (UDF). Aurrebista funtzionalitatea ez da erabili behar ekoizpenean, horregatik desgaituta dago lehenespenez, baina laster egongo da eskuragarri orokorrean.

Definitu formula bat honela App.Formulas pean:

FunctionName(Parameter1:DataType1, Parameter2:DataType2):OutputDataType = Formula

Kodeak honela funtzionatzen du:

  • FunctionName funtzioa deitzeko erabiltzen da

  • Parameter sarreraren izena da. Sarrera bat edo gehiago onartzen dira

  • DataType funtziora pasatako argumentu bat da, datu mota honekin bat etorri behar duena. Eskuragarri dauden datu motak hauek dira: Boolearra, Kolorea, Data, Data eta Ordua, Dinamikoa, GUID, Hiperesteka, Testua eta Ordua.

  • OutputDataType funtzioaren irteera izango den datu mota da

  • Formula funtzioaren irteera da

// Function to calculate the area of a circle based on the radius
calcAreaOfCircle(radius: Number): Number = 
    IfError(Pi() * radius * radius, 0);

Erabili IfError funtzio definituaren barruan erroreen kudeaketa ezartzeko.

Deitu definitutako funtzioa testu/etiketa kontroletik.

calcAreaOfCircle(Int(*TextInput1*.Text))

Oharra

Ezaugarri esperimentala da hau eta alda daiteke. Datu mota batzuk, hala nola erregistroak eta iragazkiak, ez dira oraindik onartzen.

Optimizatu aldagaiak

Aldagaiek zure aplikazioan zehar erabiltzen dituzun balio lokalak eta globalak definitzen eta ezartzen dituzte. Erosoak diren arren, aldagai gehiegi erabiltzeak zure aplikazioa gutxiago eraginkorra bihur dezake.

Adibide honek objektu baten atributu bakoitzerako aldagai bat nola ezarri erakusten du, eta horretarako Set jabetza bakoitzerako.

Set(varEmpName, Office365Users.MyProfile().DisplayName);
Set(varEmpCity, Office365Users.MyProfile().City);
Set(varEmpPhone, Office365Users.MyProfile().BusinessPhones);
Set(varEmpUPN, Office365Users.MyProfile().UserPrincipalName);
Set(varEmpMgrName, Office365Users.ManagerV2(varEmpUPN).DisplayName);

Ikuspegi eraginkorragoa jabetza behar duzunean bakarrik erabiltzea da:

Set(varEmployee, Office365Users.MyProfile())
"Welcome " & varEmployee.DisplayName

Erabili testuinguru-aldagaiak eta aldagai globalak zentzuz. Aldagai baten esparrua pantaila bakar baten haratago doanean, erabili aldagai globalak testuinguru-aldagaien ordez.

Erabili gabeko aldagai gehiegi izateak memoriaren erabilera handitzen du eta aplikazioaren hasieraketa moteldu dezake. Baliabideak esleitzen dira aldagai hauetarako, nahiz eta zuk ez erabili. Erabili gabeko aldagaiek ere konplexutasuna gehitzen diote zure aplikazioaren logikari. Eragina larria ez izan arren, komenigarria da zure Power App garbi eta antolatuta mantentzea errendimendu hobea eta garapen errazagoa lortzeko.

Bildumak optimizatu

Bildumak aplikazio batean datuak gordetzeko eta manipulatzeko erabiltzen dituzun aldi baterako datuak biltegiratzeko egiturak dira. Power Apps Baina bildumak errendimendu-gainkarga sor dezakete gehiegi erabiltzen badituzu. Mugatu bildumak erabiltzea eta erabili itzazu beharrezkoa denean bakarrik.

// Use this pattern
ClearCollect(colErrors, {Text: gblErrorText, Code: gblErrorCode});

// Do not use this pattern
Clear(colErrors);
Collect(colErrors, {Text: gblErrorText, Code: gblErrorCode});

Tokiko bilduma bateko erregistroak zenbatzeko, erabili CountIf honen ordez Count(Filter()).

Bildumekin lan egitean, kontuan hartu gida hau:

Bilduma kopurua eta tamaina mugatu. Bildumak aplikazioaren lokalak direnez, gailu mugikorreko memorian gordetzen dira. Zenbat eta datu-bilduma gehiagok eduki, edo zenbat eta bilduma gehiago erabili, orduan eta okerragoa izango da errendimendua. Erabili ShowColumns funtzioa zutabe zehatzak bakarrik lortzeko. Gehitu Filter funtzioa datu garrantzitsuak bakarrik lortzeko.

Hurrengo adibide funtzioak datu-multzo osoa itzultzen du.

ClearCollect(colDemoAccount, Accounts);

Konparatu hau hurrengo kodearekin, zeinak erregistro eta zutabe espezifikoak soilik itzultzen dituen:

ClearCollect(colAcc,
              ShowColumns(
                Filter(Accounts, !IsBlank('Address 1: City')),
                "name","address1_city"))

Adibide honek datu-multzo hau itzultzen du:

colAcc izeneko taula eta bi zutabe dituen datu-multzo baten pantaila-argazkia, address1_city eta name.

Ezarri datu-iturburuaren freskatze-maiztasuna. Bilduma berrietara erregistro berriak gehitzen badituzu, freskatu edo bildu bertan erregistro berriak edo aldatuak lortzeko. Erabiltzaile anitzek zure datu-iturria eguneratzen badute, freskatu bilduma erregistro berriak edo aldatuak lortzeko. Freskatze dei gehiagok zerbitzariarekin interakzio gehiago esan nahi du.

Datuak cachean gorde bilduma eta aldagaietan

Bilduma datu-elementu bakarra ez, datu-errenkadak eta zutabeak gordetzen dituen taula-aldagai bat da. Bildumak bi arrazoi nagusirengatik dira erabilgarriak: datuak datu-iturburura bidali aurretik biltzea eta informazioa cachean gordetzea maiz kontsultak saihesteko. Bildumak datu-iturriaren egitura tabularrarekin bat datozenez eta Power Apps, datuekin modu eraginkorrean elkarreragiteko aukera ematen dizute, lineaz kanpo zaudenean ere.

// Clear the contents of EmployeeCollection, it already contains data
ClearCollect(
    colEmployee,
    {
        Id: "1",
        Name: "John",
        Department: "IT"
    },
    {
        Id: "2",
        Name: "Nestor",
        Department: "IT"
    }
)

Kendu erabili gabeko aldagaiak eta euskarria

Erabili gabeko euskarriek eta aldagaiek aplikazioaren errendimenduan eragin handirik ez izan arren, garrantzitsua da aplikazioa garbitzea erabili gabeko euskarri edo aldagaiak kenduz.

  • Erabili gabeko multimedia fitxategiek aplikazioaren tamaina handitzen dute, eta horrek aplikazioen kargatzeko denborak moteldu ditzake.

  • Erabili gabeko aldagaiek memoriaren erabilera handitzen dute eta aplikazioaren hasieraketa apur bat moteldu dezakete. Baliabideak esleitzen dira aldagai hauetarako, erabili ez arren. Erabili gabeko aldagai gehiegi izateak aplikazioaren logika konplexuagoa bihur dezake.

  • Erabili aplikazioen egiaztatzailea erabili gabeko euskarriak eta aldagaiak berrikusteko.

Pantailak eta kontrolak optimizatu

Saihestu kontrolen erreferentzia gurutzatuak

Beste pantailetako kontrolei erreferentzia egiten dieten kontrolek aplikazioen kargatzea eta nabigazioa moteldu dezakete. Hori egiteak aplikazioa beste pantailak berehala kargatzera behartu dezake, erabiltzailea pantaila horretara joan arte itxaron beharrean. Arazo hau konpontzeko, erabili aldagaiak, bildumak eta nabigazio testuingurua egoera pantailen artean partekatzeko.

Aplikazioen egiaztatzaileak erreferentzia gurutzatuak dituzten kontrolak erakusten ditu Power Apps Studio . Berrikusi aplikazioen egiaztatzailea aldizka arazo hau konpontzeko.

Hona hemen erreferentzia gurutzatuen kontrolen adibide bat. Beheko irudian, 1. Galeria kontrola 2. Pantailan, 2. Etiketa kontrolean erreferentzia gurutzatua dago.

Erreferentzia gurutzatua duen kontrol bat erakusten duen pantaila-argazkia Power Apps Studio .

Aplikazioko lehen pantailako kontrol bati erreferentzia egiten badiozu bigarren pantailan, ez da errendimenduan eraginik izango, lehen pantaila dagoeneko kargatuta baitago. Hau gauza ona izan daiteke, aplikazioa aldagaiak erabili beharrean deklaratiboa delako.

Oraindik kargatu ez diren kontrolak erreferentziatzen badituzu, hala nola 3. pantailako Label 3 izeneko kontrol bat aipatzen duen lehen pantaila, aplikazioak pantaila hori memorian kargatzen du.

Gaitu DelayOutput testu-kontroletarako

DelayOutput ezarpenak, egiazko gisa ezartzen denean, erabiltzailearen sarrera erdi segundoko atzerapenaren ondoren erregistratzen du. Hau erabilgarria da eragiketa garestiak erabiltzaileak testua sartzen amaitu arte atzeratzeko, adibidez, sarrera beste formula batzuetan erabiltzen denean iragaztea.

Adibidez, erabiltzaileak TextInput kontrolean sartzen duenaren arabera iragazitako elementuak dituen galeria batentzat:

  • DelayOutput false balioarekin ezarrita badago (lehenetsia), galeria iragazten da testua idazten den bezain laster. Elementu asko dituen galeria bat baduzu, aldaketak berehala berriro kargatzeak errendimendua moteldu egiten du. Hobe da pixka bat itxarotea. Hau praktikoa da TextInput erabiltzen duzunean bilaketa-kate baterako (ikus Search edo StartsWith funtzio berriak).

  • DelayOutput egiazko balioarekin ezarrita badago, aldaketak detektatu aurretik atzerapen txiki bat dago. Horrek idazten amaitzeko denbora ematen dizu. Atzerapenak ondo funtzionatzen du TextInput.OnChange propietatearekin. Aldaketei lotutako ekintzak badituzu, ez dituzu nahi eremuan idazten amaitu arte abiaraztea.

Delegazioa eta zerbitzariaren aldeko prozesamendua

Ordezkaritza

Delegazioa aplikazioak eragiketa batzuk azpiko datu-iturrira deskargatzeko duen gaitasunari egiten dio erreferentzia, eragiketak bere baitan prozesatu beharrean. Power Apps Power Apps Ordezkaritza erabiliz Power Apps, garatzaileek aplikazio eraginkorragoak eta eskalagarriagoak sor ditzakete, datu-multzo handiak dituzten eszenatokietan ere ondo funtzionatzen dutenak. Garrantzitsua da datu-iturri eta eragiketa espezifikoetarako delegazio-mugak ezagutzea, eta aplikazioak horren arabera diseinatzea errendimendu optimoa lortzeko.

![OHARRA] Ez dira funtzio guztiak eskuordetu daitezkeenak. Mesedez, jo hona: Ordezkaritza ulertzea delegazioari buruz gehiago ikasteko.

Delegazioak hainbat abantaila ditu, hala nola kontsulten optimizazioa eta datu-multzo handientzako laguntza gehitzen du. Gainera, iturburu-datuak maiz aldatzen badira, ordezkaritzak datuak eguneratuta mantentzen laguntzen du.

Murriztu datu-iturbururako API deiak

Batzuetan, komenigarria dirudi mihise-aplikazioan loturak eginez bildumak sortzea. Hona hemen adibide bat:

Adibide honetan, bi taula daude: Gidariak eta Kamioiak. Kodeak gidarien eta kamioien xehetasunen bilduma bat sortzen du, eta kamioi bakoitzerako, kamioiaren jabea den gidaria deitzen du.

// Bad code
ClearCollect(vartruckdata, AddColumns('Truck Details',
    "CITY",LookUp(Drivers, 'Truck Details'\[@'Dummy ID'\] = Drivers\[@'Truck Details'\],City),
        "FIRSTNAME",LookUp(Drivers, 'Truck Details'\[@'Dummy ID'\] = Drivers\[@'Truck Details'\],'Driver First Name'),
    "LASTNAME",LookUp(Drivers, 'Truck Details'\[@'Dummy ID'\] = Drivers\[@'Truck Details'\],'Driver Last Name'),
        "STATE",LookUp(Drivers, 'Truck Details'\[@'Dummy ID'\] = Drivers\[@'Truck Details'\],State)));

Horrelako loturak mihise-aplikazioan egiteak datu-iturburura dei asko sor ditzake, eta horrek kargatzeko denbora moteldu egiten du.

Ikuspegi hobea hau da:

// Good code
Set(
    varTruckData,
    LookUp(
        Drivers,
        'Dummy ID' = ThisRecord.'Dummy ID',
        'Driver First Name'
    ) & LookUp(
        Drivers,
        'Dummy ID' = ThisRecord.'Dummy ID',
        'Driver Last Name'
        )
);

Set(
    varTruckData,
    With(
        {
            vDriver: LookUp(
                Drivers,
                'Dummy ID' = ThisRecord.'Dummy ID'
            )
        },
        vDriver.'Driver First Name' & vDriver.'Driver Last Name'
    )
)

Denbora errealeko eszenatokian, kargatzeko denborak bost minututik 10 segundo baino gutxiagora murriztu ditzakezu datuak iturburuan konponduz.

Zerbitzariaren aldeko prozesamendua

Datu-iturri desberdinak, hala nola SQL eta Dataverse, datu-prozesamendua, hala nola iragazkiak eta bilaketak, datu-iturburuari delegatzeko aukera ematen dizute. SQL Server-en, kontsulta batek definitutako bistak sor ditzakezu. Barruan Dataverse, kode gutxiko pluginak sor ditzakezu zerbitzarian datuak prozesatzeko eta azken emaitzak soilik zure mihise aplikaziora itzultzeko.

Datuen prozesamendua zerbitzariari delegatzeak errendimendua hobetu, bezero aldeko kodea murriztu eta aplikazioa mantentzea erraztu dezake.

Lortu informazio gehiago honi buruz pluginak Dataverse.

Kontsulta-datuen ereduak optimizatu

Erabili zutabe-hautaketa esplizitua

Zutabeen hautaketa esplizitua (ECS) funtzioa lehenespenez aktibatuta dago aplikazio berri guztietan. Zure aplikaziorako piztuta ez badago, piztu ezazu. ECS-k automatikoki murrizten du berreskuratutako zutabeen kopurua aplikazioan erabilitakoetara soilik. ECS aktibatuta ez badago, behar baino datu gehiago jaso ditzakezu, eta horrek errendimenduan eragina izan dezake. Batzuetan, aplikazio batek datuak bildumen bidez lortzen dituenean, zutabe baten jatorrizko iturria gal daiteke. ECS-k zutabeak ezabatzen ditu erabiltzen direla jakin ezin badu. ECSri falta den zutabe bat gordetzera behartzeko, erabili PowerFx adierazpena bilduma erreferentzia baten ondoren edo kontrol batean. ShowColumns

Saihestu bilduma bat betetzeko Power Automate deitzea

Ohiko praktika bat da Power Automate erabiltzea bildumak eskuratu eta betetzeko Power Apps. Ikuspegi hau baliozkoa den arren, badira egoerak non ez den aukerarik eraginkorrena izaten. Deitzeak sareko latentziaren gainkarga dakar eta 0,6 segundoko errendimendu-kostua gehitzen du fluxua instantziatzeko. Power Automate Power Automate

Fluxuen gehiegizko erabilerak exekuzio mugak eta moteltzea ere ekar ditzake. Power Automate Beraz, beti ebaluatu sarearen latentziaren eta errendimendu-kostuaren arteko oreka.

Ezabatu N+1 arazoa

N+1 arazoa datu-baseen kontsultetan ohikoa da, non, beharrezko datu guztiak kontsulta bakar batean lortu beharrean, hainbat kontsulta gehigarri egiten diren erlazionatutako datuak berreskuratzeko. Honek errendimendu arazoak sor ditzake, kontsulta gehigarri bakoitzak gainkarga dakarrelako.

Bilduma bat kargatzeko dei soil batek N+1 dei sor ditzake datu-iturburura.

ClearCollect(MyCollection, OrdersList,
    {
        LookUp(CustomersList,CustomerID = OrdersList[@CustomerID])
    }
)

Mihise aplikazioen eta galerien testuinguruan, N+1 arazoa sor daiteke erlazionatutako erregistroak erakusten dituzten datu-iturriekin eta galeriekin lan egitean. Arazoa normalean galerian bistaratutako elementu bakoitzerako kontsulta gehiago egiten direnean gertatzen da, eta horrek errendimendu-oztopo bat sortzen du.

Erabili View objektuak SQL Server-en N+1 kontsulten arazoa saihesteko, edo aldatu erabiltzaile-interfazea N+1 eszenatokia abiaraztea saihesteko.

Dataverse automatikoki lortzen ditu erlazionatutako taulen beharrezko datuak eta erlazionatutako tauletako zutabeak hauta ditzakezu.

ThisItem.Account.'Account Name'

`e` tamaina txikia bada (500 erregistro), bilduma batean gorde dezakezu cachean eta bilduma hori erabil dezakezu Bilaketa (N+1) kontsulta eszenatokia gidatzeko. RelatedDataSourc<

Paketearen tamaina mugatzea.

Aplikazioen kargatzea optimizatzeko asko laguntzen duen arren Power Apps , neurriak har ditzakezu aplikazioen aztarna murrizteko. Aztarna murriztua bereziki garrantzitsua da gailu zaharragoak dituzten erabiltzaileentzat edo latentzia handiagoa edo banda-zabalera txikiagoa duten kokapenetan bizi diren erabiltzaileentzat.

  • Ebaluatu zure aplikazioan txertatuta dauden multimedia edukiak. Zerbait erabiltzen ez bada, ezabatu ezazu.

  • Txertatutako irudiak handiegiak izan daitezke. PNG fitxategien ordez, ikusi SVG irudiak erabil ditzakezun. Hala ere, kontuz ibili SVG irudietan testua erabiltzean, erabilitako letra-tipoa bezeroan instalatuta egon beharko baita. Testua erakutsi behar duzunean irtenbide bikaina testu-etiketa bat irudi baten gainean gainjartzea da.

  • Ebaluatu bereizmena formatu-faktorearentzat egokia den ala ez. Mugikorretarako aplikazio baten bereizmena ez da zertan mahaigaineko aplikazio baten bereizmena bezain handia izan behar. Esperimentatu irudiaren kalitatearen eta tamainaren arteko oreka egokia lortzeko.

  • Erabili gabeko pantailak badituzu, ezabatu itzazu. Kontuz ibili aplikazioen egileak edo administratzaileek soilik erabiltzen dituzten pantaila ezkutuak ezabatzeko.

  • Ebaluatu aplikazio bakar batean lan-fluxu gehiegi sartzen saiatzen ari zaren ala ez. Adibidez, administrazio-pantailak eta bezero-pantailak dituzu aplikazio berean? Hala bada, kontuan hartu banakako aplikazioetan banatzea. Ikuspegi honek errazagoa egingo du pertsona anitzek aplikazioetan aldi berean lan egitea, eta "leherketa-erradioa" (proba kopurua) mugatzen du aplikazioen aldaketek proba osoa behar dutenean.

Optimizatu Guztientzat

ForAll funtzioa Power Apps erregistro-taula batean zehar iterazio bidez mugitzeko eta formula bat edo formula multzo bat erregistro bakoitzari aplikatzeko erabiltzen da. Funtzioa bera moldakorra den arren, ForAll funtzioaren erabilera okerrak zure aplikazioaren errendimendua gutxitu dezake.

ForAll funtzioa funtzio sekuentzial singularra da, funtzio konkurrentearen ordez. Beraz, aldi berean erregistro bakarra aztertzen du, emaitza lortzen du eta hurrengora jarraitzen du bere esparruko erregistro guztiak aztertu arte.

Saihestu Nesting ForAll kostu guztian. Honek iterazio esponentzialak ekar ditzake eta errendimenduan eragin handia izan dezake.

ClearCollect(FollowUpMeetingAttendees.ForAll(ForAll(Distinct(AttendeesList.EmailAddress.Address).Lookup(Attendees))))

Datu-baserako eguneraketa multzoak

ForAll + Patch datu-basea batch eguneratzeko modu bat izan daiteke. Hala ere, kontuz ibili For All eta Patch ordena erabiltzean.

Hurrengo funtzioa:

Patch(SampleFoodSalesData, ForAll(colSampleFoodSales,
    {
        demoName:"fromCanvas2"
    })
);

Hobeto funtzionatzen du:

ForAll(colSampleFoodSales, Patch(SampleFoodSalesData,
    {
        demoName:"test"
    })
);

Hurrengo urratsa