Obs!
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Forstå delegering
Power Apps fungerer best med en serverdeldatakilde når en Power Fx-spørring oversettes fullstendig til en tilsvarende spørring som kjører på datakilden. Power Apps sender en spørring som datakilden forstår, datakilden kjører spørringen og Power Apps får resultatene. Datakilden filtrerer for eksempel dataene og returnerer bare radene som oppfyller filtervilkårene. Når dette fungerer, delegeres spørringen til datakilden.
Men Power Fx-spørringer kan ikke alltid oversettes til tilsvarende spørringer for hver datakilde. Dataverse støtter for eksempel flere spørringsfunksjoner enn Excel. Dataverse støtter spørringsoperatoren «in» (medlemskap), men ikke Excel. En spørring kan ikke delegeres hvis den bruker en funksjon som datakilden ikke støtter. Hvis en del av et spørringsuttrykk ikke kan delegeres, delegerer ikke Power Apps noen del av spørringen.
Når en spørring ikke kan delegeres, henter Power Apps de første 500 oppføringene fra datakilden og kjører deretter handlingene i spørringen. Du kan øke denne grensen til 2 000 oppføringer. Hvis du endrer grensen, begrenser Power Apps resultatstørrelsen til 500 oppføringer for å opprettholde appytelsen. Større resultatsett kan føre til ytelsesproblemer for appen og Power Apps.
Denne begrensningen kan imidlertid være et problem fordi spørringen kan returnere feil resultater hvis datakilden har flere enn 500 eller 2000 oppføringer. Hvis datakilden for eksempel har 10 millioner oppføringer og spørringen må fungere på den siste delen av dataene, for eksempel slektsnavn som begynner på Å, og spørringen bruker en operator som ikke kan delegeres, for eksempel distinct, får du bare de første 500 eller 2000 oppføringene. Dette betyr at du får feil resultater.
Opprett Power Fx-spørringene ved hjelp av de delegerbare tabellene for datakilde. Bruk bare spørringsfunksjoner som kan delegeres. Dette er den eneste måten å sikre at appen fungerer bra på, og at brukere kan få all informasjonen de trenger.
Legg merke til delegeringsadvarsler som viser hvor delegering ikke er mulig. Hvis du arbeider med små datasett (færre enn 500 oppføringer), kan du bruke alle datakilder og formler siden appen behandler data lokalt hvis formelen ikke kan delegeres.
Notat
Delegeringsadvarsler hjelper deg å behandle appen slik at den returnerer riktige resultater. Hvis dataene i datakilden overskrider 500 oppføringer og en funksjon ikke kan delegeres, merker Power Fx formelen med en blå understreking.
Datakilder som kan delegeres
Delegering fungerer bare med bestemte tabelldatakilder. Hvis en datakilde støtter delegering, forklarer dens koblingsdokumentasjon denne støtten. Disse populære tabelldatakildene støtter for eksempel delegering:
- Power Apps-funksjoner og -operasjoner for Microsoft Dataverse som kan delegeres
- Power Apps-funksjoner og -operasjoner for SharePoint som kan delegeres
- Power Apps-funksjoner og -operasjoner for SQL Server som kan delegeres
- Power Apps-funksjoner og -operasjoner for Salesforce som kan delegeres
Importerte Excel-arbeidsbøker (som bruker datakilden Legg til statiske data i appen), samlinger og tabeller som er lagret i kontekstvariabler, trenger ikke delegering. Alle disse dataene ligger allerede i minnet, slik at du kan bruke det fullstendige Power Apps-språket.
Funksjoner som kan delegeres
Bruk bare formler som kan delegeres. Denne artikkelen viser formelelementer som kan delegeres. Hver datakilde er imidlertid forskjellig, og ikke alle støtter alle disse elementene. Se etter delegeringsadvarsler i formelen.
Filterfunksjoner
Filter, Search, First og LookUp kan delegeres.
Bruk disse med kolonner i tabellen til å velge riktige oppføringer i funksjonene Filter og LookUp:
- And (inkludert &&), Or (inkludert ||), Not (inkludert !)
-
In> [!Obs!]
In delegeres bare for kolonner på basis datakilde. Hvis datakilden for eksempel er Forretningsforbindelser-tabellen, delegerer
Filter(Accounts, Name in ["name1", "name2"])
deretter til datakilden for evaluering. MenFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
delegeres ikke, siden Fullt navn-kolonnen er i en annen tabell (PrimaryContact) enn Forretningsforbindelser. Uttrykket evalueres lokalt. - =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- StartsWith, EndsWith
- Konstante verdier som er de samme i alle oppføringene, for eksempel kontrollegenskaper og globale variabler og kontekstvariabler.
Du kan også bruke deler av formelen som evalueres som en konstant verdi for alle oppføringer. Left( Language(), 2 ), Date( 2019, 3, 31 ) og Today() avhenger for eksempel ikke av andre kolonner i oppføringen, så de returnerer samme verdi for alle oppføringer. Disse verdiene sendes til datakilden som en konstant og blokkerer ikke delegering.
Den forrige listen inkluderer ikke disse viktige elementene.
- If
- *, /, Mod
- Kolonnekonverteringsoperasjoner Text, Value
- Concatenate (inkludert &)
- ExactIn
- Funksjoner for strengmanipulering: Lower, Upper, Left, Mid, Len,...
- Signaler: Plassering, Akselerasjon, Kompass, ...
- Flyktige: Rand, ...
- Samlinger
Delegasjon og samlinger
Når du bruker With
, UpdateContext
eller Set
, oppretter de samlinger internt. Samlinger er en statisk liste over oppføringer i minnet og deltar ikke i delegering. Du ser ingen delegeringsadvarsel.
Spørringsbegrensninger
Slå opp og utvid nivåer
Power Apps lar deg bruke opptil to oppslagsnivåer. Et Power Fx-spørringsuttrykk kan omfatte maksimalt to oppslagsfunksjoner for å opprettholde ytelsen. Når et spørringsuttrykk omfatter et oppslag, spør Power Apps først basistabellen og kjører deretter en ny spørring for å utvide den første tabellen med oppslagsinformasjonen. Ett ekstra nivå utover dette støttes som maksimum. I frakoblede scenarier støttes imidlertid bare ett oppslagsutvidelsesnivå.
Utvid eller slå sammen opptil 20 enheter i én enkelt spørring. Hvis du må føye sammen mer enn 20 tabeller i én spørring, kan du prøve å opprette en visning på dataserveren hvis det er mulig.
Uttrykksevaluering - egenskapen til enheten må være på venstre side 'LHS' av likhetsoperatøren
Sett egenskapen til en enhet som skal sammenlignes på venstre side (LHS) av en ligning. I følgende uttrykk er for eksempel enhetsegenskapen 'Business unit ID'.Name til venstre og uttrykket fungerer:
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
Men dette uttrykket fungerer ikke:
Filter(
Budgets,
LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name = 'Business unit ID'.Name,
'Date Range String'=DataCardValue37.Selected.'Date Range String'
)
Sorteringsfunksjoner
Sort og SortByColumns kan delegeres.
I Sort kan formelen bare inneholde navnet til en enkeltkolonne og inneholder ikke andre operatorer eller funksjoner.
Mengdefunksjoner
Noen mengdefunksjoner kan delegeres basert på støtte for serverdel. Funksjoner som Sum, Average, Min og Max kan delegeres. Tellingsfunksjoner, for eksempel CountRows og Count, kan også delegeres. Men RemoveIf og UpdateIf har delegeringsbegrensninger. Bare et begrenset antall datakilder støtter delegering for disse funksjonene. Hvis du vil ha mer informasjon, kan du se delegeringslisten.
Funksjoner som ikke kan delegeres
Ingen andre funksjoner støtter delegering, herunder disse viktige funksjonene:
Grenser for ikke-delegering
Formler som ikke kan delegeres, behandles lokalt. Med lokal behandling kan du bruke hele Power Apps-formelspråket. Dette har likevel sin pris: Alle dataene må sendes til enheten først, som kan bety henting av en stor mengde data over nettverket. Denne prosessen kan ta tid og få appen til å virke treg eller ikke reagerer.
For å unngå dette begrenser Power Apps mengden data som kan behandles lokalt, til 500 oppføringer. Med denne grensen kan du bruke små datasett fullstendig og begrense bruken av store datasett ved å se delvise resultater.
Vær forsiktig når du bruker denne funksjonen fordi den kan forvirre brukere. Hvis du for eksempel bruker Filter-funksjonen med en utvalgsformel som ikke kan delegeres, i stedet for en datakilde med en million oppføringer, skannes bare de første 500 oppføringene. Hvis ønsket oppføring er oppføring 501 eller 500 001, tar ikke Filter hensyn til den eller returnerer den.
Mengdefunksjoner kan også være forvirrende. Hvis du for eksempel bruker Average over en kolonne i den samme datakilden med en million oppføringer, kan ikke Average delegeres fordi uttrykket ikke er delegert (se det tidligere notatet). Bare de første 500 oppføringene blir gjennomsnittsberegnet. Hvis du ikke er forsiktig, kan en bruker tro at et delvis svar er fullført.
Å endre grensen
500 er standard antall oppføringer, men du kan endre dette tallet i hele appen:
- Velg Innstillinger.
- Endre innstillingen for Dataradgrense fra 1 til 2 000 under Generelt.
I enkelte tilfeller er 2000 (eller 1000 eller 1500) oppføringer nok i scenarioet ditt. Du kan øke dette tallet etter behov, men hvis du gjør dette, kan det hende at appytelsen reduseres, særlig for brede tabeller med mange kolonner. Det er fortsatt best å delegere så mye som mulig.
Hvis du vil sikre at appen kan skalere til store datasett, setter du denne verdien til 1. Alt som ikke kan delegeres, returnerer én oppføring, som er enkelt å oppdage når du tester appen. Dette bidrar til at du slipper overraskelser når du overfører appkonseptbeviset til produksjon.
Delegeringsadvarsler
Power Apps viser en advarsel (gul trekant) når du oppretter en formel som ikke kan delegeres. Dette gjør det enklere å vite hva som er og ikke er delegert.
Delegeringsadvarsler vises bare i formler som bruker datakilder som kan delegeres. Hvis ikke du ser en advarsel, men tror formelen ikke er delegert, sammenligner du datakildetypen med listen over datakilder som kan delegeres, tidligere i denne artikkelen.
Eksempler
I dette eksemplet skal du automatisk generere en app med tre skjermer basert på en SQL Server-tabell kalt [dbo].[Fruit]. For å lære hvordan du genererer en app, kan du ta i bruk lignende prinsipper fra artikkelen om Dataverse til SQL Server.
Egenskapen Elementer for galleriet bruker en formel med funksjonene SortByColumns og Search, og begge kan delegeres.
Skriv inn «Apple» i søkeboksen.
Bevegelige prikker vises et øyeblikk nær toppen av skjermen mens appen kommuniserer med SQL Server for å behandle søkeforespørselen. Alle oppføringene som samsvarer med søkekriteriene, vises, selv om datakilden har flere millioner oppføringer.
Søkeresultatene inkluderer Epler og Ananas fordi Søk-funksjonen søker over alt i en tekstkolonne. Hvis du vil finne oppføringer som bare inneholder søkeordet i starten av navnet på frukten, bruker du en annen funksjon som kan delegeres, Filter, med et mer bestemt søkeord. Fjern for enkelhets skyld SortByColumns-oppkallet.
De nye resultatene inneholder nå Epler, men ikke Ananas. En gul trekant vises ved siden av galleriet og i miniatyrbildet av skjermen hvis det venstre navigasjonsfeltet viser miniatyrbilder. En blå, bølget linje vises under en del av formelen. Hver av disse elementene angir en advarsel. Når du holder musepekeren over den gule trekanten ved siden av galleriet, vises denne meldingen:
SQL Server er en datakilde som kan delegeres, og Filter er en funksjon som kan delegeres. Mid og Len kan imidlertid ikke delegeres til en datakilde.
Men det fungerer, ikke sant? På en måte. Dette er grunnen til at dette er en advarsel og ikke en rød, bølgete krusedull.
- Hvis tabellen har færre enn 500 oppføringer, fungerer formelen perfekt. Alle oppføringer sendes til enheten, og Filter brukes lokalt.
- Hvis tabellen har flere enn 500 oppføringer, returnerer ikke formelen 501 eller høyere, selv om den samsvarer med vilkårene.