Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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.
Oihalezko aplikazioak konplexuagoak diren heinean, datuak berreskuratzeko, formularen konplexutasunarekin eta errendatze abiadurarekin arazoak izan ditzakezu. Funtzionalitate sendoa erabiltzaile interfaze sentikorrarekin orekatzeko, erabili kodearen optimizaziorako ikuspegi sistematikoa.
Power Fx formula optimizazioa
Atal honetan Power Fx formulak optimizatzeko praktika onak eskaintzen dira.
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 testuingurua edo aldagai globalak baino hobea da, autonomoa delako, ulertzeko erraza delako eta edozein formula testuingurutan funtzionatzen duelako. Informazio gehiago With funtzioari buruz.
Funtzio paraleloa
Funtzioak Concurrent propietate bereko formula anitz ebaluatzeko aukera ematen du aldi berean, konektorea edo Dataverse deiak badituzte. 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. Konkurtsotasun honek esan nahi du erabiltzaileek denbora gutxiago itxaroten dutela emaitzak lortzeko. 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. Informazio gehiago Aldi berean funtzioari buruz.
Concurrent(
ClearCollect(colAccounts1, Accounts),
ClearCollect(colUsers1, Users),
ClearCollect(colEnvDef1, 'Environment Variable Definitions'),
ClearCollect(colEnvVal1, 'Environment Variable Values')
);
Bateratze 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. Informazio gehiago Coalesce funtzioari buruz.
Adibide value1value2 honek bi aldiz ebaluatu behar du:
If(Not IsBlank(value1), value1, Not IsBlank(value2), value2)
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 Informazio gehiago IsMatch funtzioari buruz.
Adibidez, formula hau bat dator United States Social Security zenbakiarekin:
IsMatch(TextInput1.Text, "\d{3}-\d{2}-\d{4}")
Adierazpen erregularraren azalpena:
\\dEdozein 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
Oihalezko OnStart aplikazioen propietateak funtsezko zeregina betetzen du aplikazioa abiaraztean gertatzen diren ekintzak definitzeko. Propietate honek aplikazioen garatzaileei hasieratze-zeregin orokorrak exekutatzeko, aldagaiak konfiguratzeko eta aplikazioaren abiarazte-prozesuan behin bakarrik gertatu beharko liratekeen ekintzak egiteko aukera ematen die. Propietatea ulertu eta modu eraginkorrean erabili OnStart mihise-aplikazio sentikorrak eta eraginkorrak sortzeko.
Arrazionalizatu funtzioa App.OnStart aldagaien konfigurazioak izendatutako formuletara migratuz. Izendatutako formulak, batez ere aplikazioaren bizi-zikloaren hasieran konfiguratutakoak, abantailatsuak dira. Formula hauek datu-deien arabera aldagaien hasieraketa kudeatzen dute, zure kodearentzako egitura garbiagoa eta antolatuagoa eskainiz. Informazio gehiago Eraiki mihise-aplikazio handi eta konplexuak.
Oharra
Jabetza ezinbestekoa OnStart da. Lehenengo pantaila agertu aurretik egin beharreko lanen zerrenda ordenatua da. Egin beharrekoa ez ezik, lan hori ordenaren arabera egin behar denean ere oso zehatza delako, bestela egin litezkeen optimizazioak berrantolatzea eta atzeratzea mugatzen du.
Abiarazi pantaila
App.OnStart Funtzio-dei bat Navigate badauka, funtzio batean If badago eta gutxitan deitzen bada ere, aplikazioak exekuzioa App.OnStart amaitu behar du aplikazioaren lehen pantaila erakutsi aurretik.
App.StartScreen Lehenengo pantaila erakutsi behar den adierazteko modu deklaratiboa da, eta ez ditu optimizazioak blokeatzen.
StartScreen propietatea ezartzeak lehen pantaila erakusten du App.OnStart amaitu baino lehen.
App.StartScreen Pantaila-objektua zein pantaila-objektu erakutsi behar den lehenengo, aurreprozesatu beharrik 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)
Informazio gehiago: App.StartScreen: App.OnStart-en nabigatzeko alternatiba deklaratiboa.
Abisua
Saihestu StartScreen eta arteko mendekotasunak OnStart. Aldagai global bati erreferentzia egiten dion izendatutako formula bati erreferentzia egiteak behar bezala aplikatzen ez den lasterketa-baldintza StartScreen bat eragin dezake.
Ez sortu dependentziarik eta StartScreenarteanOnStart. Aplikazioak aldagai StartScreenglobalak erreferentzia blokeatzen dituen bitartean , izendatutako formula bati erreferentzia egin diezaiokezu, aldi berean aldagai global bati erreferentzia egiten diona. Planteamendu honek lasterketa-baldintza bat eragin dezake, non ez StartScreen den behar bezala aplikatzen.
Izendun formulak
Izendatutako formulak estatikoak edo konstanteak App.Formulasdira. Behin deklaratuta App.Formulas, aplikazioko edozein lekutan erabil daitezke eta haien balioak beti eguneratuta daude. Power Apps-eko izendatutako formulek plataformak automatikoki kudeatzen eta eguneratzen dituen balioak edo balio multzoak definitzeko aukera ematen dizute. Funtzionalitate honek balioaren kalkulu eta mantentze erantzukizuna garatzailearengandik Power Apps-era transferitzen du, garapen prozesua arrazionalizatuz. Power Apps-en izendatutako formulak aplikazioen errendimendua eta mantentze-gaitasuna nabarmen hobetu ditzakeen ezaugarri indartsua dira.
Izendatutako formulek aplikazioen gaiak deklaratzean ere laguntzen dute. Enpresa aplikazioak eraikitzen dituzunean, askotan aplikazioak itxura eta erabiltzaile esperientzia koherentea eskaintzen duten gai komunak izatea nahi duzu. Gai bat sortzeko, hamarnaka edo ehunka aldagai App.OnStartdeklaratu behar dituzu . Adierazpen honek kodearen luzera eta aplikazioaren hasierako denbora handitzen ditu.
Kontrol modernoek ere asko lagun dezakete gaiak ezartzen eta bezeroak idatzitako logika murrizten lagun dezakete gaiak kudeatzeko. Kontrol modernoak aurrebistan daude oraingoz.
Adibidez, honako kodea App.OnStartApp.Formulaseraman dezakezu , aldagai orokorren deklarazioen abiarazte-denbora murriztuz.
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 honela eraman dezakezu:
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 ezarpena Lookupsda. Hemen, aldaketa bat behar da Lookup formula batean erabiltzailearen informazioa Office 365 Dataverse-tik lortzeko. Aldaketa leku bakarrean egin behar da, kodea leku guztietan 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 sakabanatuta dauden formulak aldatu beharrik gabe.
Beste ikuspegi bat countRows optimizatzea da.
varListItems = CountRows(SampleList)
Funtzioarekin Set , aldagaia varListItems hasierako errenkaden zerrendako hasierako kopuruarekin hasieratu behar duzu, eta zerrendako elementuak gehitu edo kendu ondoren berriro ezarri behar duzu. Izendatutako formulekin, datuak aldatzen diren heinean, aldagaia varListItems automatikoki eguneratzen da.
Propietatearen App.Formulas izendatutako formulek aplikazio osoan zehar balioak eta kalkuluak kudeatzeko ikuspegi malguagoa eta deklaratiboagoa eskaintzen dute. Abantailak eskaintzen dituzte denboraren independentziari dagokionez, eguneratze automatikoei, mantentze-gaitasunari eta definizio aldaezinari dagokionez, soilik oinarritzearekin App.OnStartalderatuta.
| Alderdia | Izendatutako formulak (App.Formulas) | Aplikazioa.Hasieran |
|---|---|---|
| Independentzia ordutegi | Formulak berehala eskuragarri daude eta edozein ordenatan kalkula daitezke. | Aldagaiek erabilgarritasunean eragiten duten denbora-mendekotasunak sor ditzakete. |
| Eguneratze automatikoak | Formulak automatikoki eguneratzen dira mendekotasunak aldatzen direnean. | Aldagaiak behin ezartzen dira abiaraztean; Eskuzko eguneratzeak beharrezkoak izan daitezke. |
| Mantentzeko erabilerraztasuna | Leku bakarrean dauden formula zentralizatuek mantentze-lanak hobetzen dituzte. | Aldagai sakabanatuek hainbat lekutan aurkitu eta eguneratu behar dute. |
| Definizio aldaezinak | Formulen definizioak App.Formulas aldaezinak dira. |
Aldagaien balioak ustekabeko aldaketak jasateko arriskutsuak izan daitezke. |
Erabiltzaileak definitutako funtzioak
Erabiltzaileak definitutako funtzioak Power Apps Studio zure funtzio pertsonalizatuak sortzeko aukera ematen dizute.
Definitu formula bat honela App.Formulas pean:
FunctionName(Parameter1:DataType1, Parameter2:DataType2):OutputDataType = Formula
Kodeak honela funtzionatzen du:
FunctionNameFuntzioa deitzen du.Parametersarreraren izena da. Sarrera bat edo gehiago sar ditzakezu.DataTypefuntzioari pasatutako argumentuak bat etorri behar duen datu mota da. Eskuragarri dauden datu motak Boolean, Kolorea, Data, Data-ordua, Dinamikoa, GUID, Hiperesteka, Testua eta Ordua dira.OutputDataTypeFuntzioaren irteeraren datu mota da.FormulaFuntzioaren irteera da.
Erabili IfError definitutako funtzioaren barruan erroreen kudeaketa inplementatzeko:
// Function to calculate the area of a circle based on the radius
calcAreaOfCircle(radius: Number): Number =
IfError(Pi() * radius * radius, 0);
Deitu definitutako funtzioa testu edo etiketa kontrol batetik.
calcAreaOfCircle(Int(*TextInput1*.Text))
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. Mantendu zure Power App garbi eta antolatuta, errendimendu hobea eta garapen errazagoa lortzeko.
Bildumak optimizatu
Bildumak Power Apps aplikazio batean datuak gordetzeko eta manipulatzeko erabiltzen dituzun aldi baterako datuen storage egiturak dira. Hala ere, bildumek errendimendu-gainkostuak eragin ditzakete. 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()).
Kontuan hartu ikuspegi hau bildumekin lan egitean:
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
ShowColumnsfuntzioa zutabe zehatzak bakarrik lortzeko. GehituFilterfuntzioa datu garrantzitsuak bakarrik lortzeko.Ondorengo adibide-funtzioak datu-multzo osoa itzultzen du:
ClearCollect(colDemoAccount, Accounts);Konparatu funtzio hau honako kodearekin, erregistro eta zutabe zehatzak soilik itzultzen dituena:
ClearCollect(colAcc, ShowColumns( Filter(Accounts, !IsBlank('Address 1: City')), "name","address1_city"))Adibide honek datu-multzo hau itzultzen du:
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 eta Power Apps-en egitura taularrarekin bat datozenez, datuekin modu eraginkorrean elkarreragiteko aukera ematen dute, baita 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 nabarmenik ez duten arren, garrantzitsua da zure aplikazioa garbitzea erabili gabeko euskarriak 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
Power Apps-en pantailak eta kontrolak optimizatzeko, kontuan hartu praktika egoki hauek.
Saihestu kontrolen erreferentzia gurutzatuak
Beste pantailetako kontrolei erreferentzia egiten dieten kontrolek aplikazioen kargatzea eta nabigazioa moteldu dezakete. Ikuspegi honek aplikazioa beste pantailak kargatzera behartu dezake, erabiltzailea pantaila horretara joan arte itxaron beharrean. Arazo hau konpontzeko, erabili aldagaiak, bildumak eta nabigazio-testuingurua pantailen artean egoera partekatzeko.
Power Apps Studio-ko aplikazioen egiaztatzaileak erreferentzia gurutzatuak dituzten kontrolak erakusten ditu. Berrikusi aplikazioen egiaztatzailea aldizka arazo hau konpontzeko.
Hurrengo irudian, 1. galeria kontrola 2. pantailan, 2. etiketa kontrolean gurutzatu egiten da.
Bigarren pantailako aplikazioaren lehen pantailako kontrol bati erreferentzia egiten badiozu, ez da errendimendu-kolperik izango, lehenengo pantaila dagoeneko kargatuta dagoelako. Portaera hau benetan onuragarria da, aplikazioa aldagaiak erabili beharrean deklaratiboa delako.
Oraindik kargatu ez diren kontrolak erreferentzia egiten badituzu, adibidez, 3. pantailatik izendatutako Label 3 kontrol bati erreferentzia egiten dion lehen pantaila, aplikazioak pantaila hori memorian kargatzen du.
Gaitu DelayOutput testu-kontroletarako
DelayOutput ezarpenak, egia ezartzen denean, erabiltzailearen sarrera erregistratzen du segundo erdiko atzerapenaren ondoren. Atzerapen hau erabilgarria da erabiltzaileak testua sartu arte eragiketa garestiak atzeratzeko, adibidez, beste formula batzuetan sarrera erabiltzen denean iragazteko.
Adibidez, demagun galeria bat, zeinaren Elementuak iragazten baitira erabiltzaileak TextInput kontrolean sartzen duenaren arabera:
AtzerapenaIrteera faltsuarekin ezartzen baduzu, hau da, lehenetsia, galeriak testua idatzi bezain laster iragazi egingo du. Elementu asko dituen galeria bat baduzu, galeria berehala aldaketekin birkargatzeak errendimendua moteltzen du. Hobe da itxarotea. Portaera hau praktikoa da bilaketa-kate bat edo funtzioa
TextInputerabiltzenStartsWithari zarenean.AtzerapenaIrteera egia gisa ezartzen baduzu, atzerapen txiki bat egongo da aldaketak detektatzeko. Atzerapen honek idazten amaitzeko denbora ematen du. Atzerapenak ondo funtzionatzen du jabetza
TextInput.OnChange. Aldaketekin lotutako ekintzak badituzu, ez duzu nahi aktibatzea eremuan idazten amaitu arte.
Delegazioa eta zerbitzariaren aldeko prozesamendua
Delegazioa eta zerbitzariaren aldeko prozesamendua erabiltzeak zure aplikazioak datu multzo handiak modu eraginkorrean kudeatzeko aukera ematen du, eragiketak datu-iturrira deskargatuz.
Ordezkaritza
Power Apps-en delegazioak aplikazioak eragiketa jakin batzuk azpiko datu-iturrira deskargatzeko duen gaitasunari egiten dio erreferentzia, Power Apps-en beraren barruan eragiketak prozesatu beharrean. Power Apps-en delegazioa erabiliz, aplikazio eraginkorragoak eta eskalagarriagoak sor ditzakezu, datu multzo handiak dituzten eszenatokietan ere ondo funtzionatzen dutenak. Kontuan izan datu-iturri eta eragiketa espezifikoetarako delegazio-mugak eta diseinatu zure aplikazioa horren arabera errendimendu optimoa lortzeko.
Oharra
Funtzio guztiak ez dira delegagarriak. Informazio gehiago delegazioari buruz Kontsulta-mugak: Delegazioa eta kontsulta-mugak.
Delegazioak hainbat abantaila ditu, hala nola kontsulten optimizazioa eta datu multzo handietarako laguntza. 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. Begiratu arretaz hurrengo adibidea. 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 segundora murriztu ditzakezu datuak iturrian finkatuz.
Zerbitzariaren 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 baten bidez definitutako ikuspegiak 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
Zure aplikazioak datuak kontsultatzeko modua optimizatzeak karga-denborak nabarmen murriztu eta erantzukizun orokorra hobetu dezake.
Erabili zutabe-hautaketa esplizitua
Zutabeen hautaketa esplizitua (ECS) funtzioa lehenespenez aktibatuta dago aplikazio berri guztietan. Zure aplikazioan aktibatuta ez badago, aktibatu. 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. ECSk zutabeak kentzen ditu erabiltzen direla zehaztu ezin badu. ECS falta den zutabe bat gordetzera behartzeko, erabili Power Fx adierazpena ShowColumns bildumaren erreferentzia baten ondoren edo kontrol batean.
Saihestu Power Automate deitzea bilduma bat betetzeko
Ohiko praktika da Power Automate erabiltzea Power Apps-en bildumak eskuratzeko eta betetzeko. Ikuspegi hau baliozkoa den arren, badira egoerak non ez den aukerarik eraginkorrena izaten. Power Automate deitzeak sarearen latentzia eta 0,6 segundoko errendimendu-kostua gehitzen ditu Power Automate-ren fluxua instantziatzeko.
Power Automate-ren fluxuen gehiegizko erabilerak exekuzio mugak eta murrizketa ere ekar ditzake. Ebaluatu beti sarearen latentziaren eta errendimendu-kostuaren arteko konpromisoak.
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. Arazo honek errendimendu arazoak sor ditzake, kontsulta gehigarri bakoitzak gainkostuak eragiten baitituzte.
Bilduma bat kargatzeko horrelako dei sinple 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 bistaratzen 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 kontsulta arazoa saihesteko, edo aldatu erabiltzailearen interfazea N+1 agertokia ez aktibatzeko.
Dataverse automatikoki lortzen ditu erlazionatutako taulen beharrezko datuak eta erlazionatutako tauletako zutabeak hauta ditzakezu.
ThisItem.Account.'Account Name'
Tamaina txikia bada RelatedDataSource (500 erregistro baino gutxiago), cachean cache bilduma batean eta erabili bilduma Bilaketa (N+1) kontsulta agertokia gidatzeko.
Mugatu paketearen tamaina
Power Apps-ek aplikazioen karga optimizatzen duen arren, zure aplikazioen aztarna murrizteko neurriak har ditzakezu. Aztarna murriztua bereziki garrantzitsua da gailu zaharragoen erabiltzaileentzat edo latentzia handiagoa edo banda zabalera murriztua duten tokietako erabiltzaileentzat.
Ebaluatu zure aplikazioan txertatutako euskarriak. Zerbait erabiltzen ez bada, ezabatu ezazu.
Adibidez, irudi txertatuak handiegiak izan daitezke. PNG fitxategien ordez, ikusi SVG irudiak erabil ditzakezun. Kontuz ibili SVG irudietan testua erabiltzerakoan, letra-tipoa bezeroan instalatu behar delako. Testua erakutsi behar duzunean 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 ere errazten du hainbat pertsonak aplikazioetan aldi berean lan egitea, eta "leherketa erradioa" (proba kopurua) mugatzen du aplikazioaren aldaketek proba osoa gainditzea eskatzen dutenean.
Optimizatu Guztientzat
ForAll funtzioa Power Apps erregistroen taula batean zehar iteratzeko eta erregistro bakoitzari formula edo formula multzo bat aplikatzeko erabiltzen da. Funtzioa bera polifazetikoa den arren, funtzioaren ForAll erabilera desegokia zure aplikazioa errendimendu gutxiago bihur dezake.
Funtzio ForAll sekuentzial bakarra da, funtzio aldi berean baten ordez. Beraz, erregistro bakarra aztertzen du aldi berean, emaitza lortzen du eta, ondoren, hurrengo erregistrora jarraitzen du bere esparruko erregistro guztiak zeharkatu arte.
Saihestu habiak egitea.ForAll Praktika honek iterazio esponentzialak eragin ditzake eta errendimenduan eragin handia izan dezake.
ClearCollect(FollowUpMeetingAttendees.ForAll(ForAll(Distinct(AttendeesList.EmailAddress.Address).Lookup(Attendees))))
Batch eguneratu datu-basea
Datu-basea batch eguneratzeko erabil ForAll dezakezu.Patch Hala ere, kontuz ibili ordena erabiltzen ForAll duzunean eta Patch.
Ondorengo funtzioa da planteamendu hobea, adibidez:
Patch(SampleFoodSalesData, ForAll(colSampleFoodSales,
{
demoName:"fromCanvas2"
})
);
Ondorengo planteamendua ez da hain eraginkorra:
ForAll(colSampleFoodSales, Patch(SampleFoodSalesData,
{
demoName:"test"
})
);