PowerApps innehåller en kraftfull uppsättning funktioner för filtrering, sortering och utformning av datatabeller: Filter, Sort och AddColumns är några av dessa. Med dessa funktioner kan du ge användarna fokuserad åtkomst till den information som krävs. För personer som har använt databaser tidigare påminner dessa funktioner om att skriva en databasfråga.

Nyckeln till att skapa effektiva appar är att minska mängden data som behöver skickas till din enhet. Det är möjligt att endast en handfull poster av flera miljoner eller ett enda samlat värde kan representera tusentals poster. Eller det kanske bara är den första uppsättningen poster som kan hämtas och resten kan hämtas om användaren begär det. Ökat fokus kan minska din apps behov av processorkraft, minne och bandbredd, vilket ger snabbare svarstid för användarna, även om de använder telefoner som är anslutna via mobilnät.

Med Delegering uppfyller PowerApps formler behovet av minimera mängden data som flyttas i nätverket. Kort sagt innebär det att PowerApps delegerar bearbetningen av data till datakällan i stället för bearbeta dem lokalt i appen.

Där detta blir komplicerad, och det är därför den här artikeln finns, beror det på att allt som kan uttryckas i en PowerApps-formel inte kan delegeras till varje datakälla. PowerApps språk imiterar Excels formelspråk, med fullständig och omedelbar åtkomst till en fullständig arbetsbok i minnet och en mängd olika funktioner för bearbetning av text och siffror. Därför är PowerApps språket mycket rikare än de flesta datakällor kan stödja, inklusive kraftfulla databasprogram som SQL Server.

Arbete med stora datamängder kräver datakällor och formler som kan delegeras. Det är det enda sättet att säkerställa att din app fungerar bra och se till att användare kan komma åt den information de behöver. Var uppmärksam på förslag med blå punkt som markerar platser där delegering inte är möjligt. Om du arbetar med små datauppsättningar (färre än 500 poster) kan du använda valfri datakälla och formel eftersom bearbetning kan ska lokalt om formeln inte kan delegeras.

Delegerbara datakällor

Se delegeringslista för den fullständiga listan med de datakällor som stöder delegering och i vilken utsträckning.

Vi fortsätter att lägga till stöd för delegering för befintliga datakällor och vi lägger kontinuerligt till fler datakällor.

Importerade Excel-arbetsböcker (med datakällan "Lägg till statiska data till din app"), samlingar och tabeller som lagras i kontextvariabler kräver inte delegering. Alla dessa data används redan i minnet och det fullständiga PowerApps-språket kan användas.

Funktioner som kan delegeras

Nästa steg är att endast använda de formler som kan delegeras. Här ingår formelelement som kan delegeras. Alla datakällor är dock olika och alla har inte stöd för samtliga element. Kontrollera att inga element i din formel markeras med blå punkt i listan.

Dessa listor ändras med tiden. Vi arbetar för att stödja fler funktioner och operander med delegering.

Filtrera funktioner

Filter, Search och LookUp kan delegeras.

I funktionerna Filter och LookUp kan följande användas med kolumner i tabellen för att välja lämpliga poster:

Delar av din formel som utvärderas till ett konstant värde för alla poster kan också användas. Till exempel, Left (Language() 2) är inte beroende av några kolumner i posten och därför returneras samma värde för alla poster. Alltså är den en konstant. Användning av kontextvariabler, samlingar och signaler är kanske inte konstant och därför kan Filter och LookUp förhindras från att delegerats.

Vissa viktiga saker saknas i ovanstående lista:

Sorteringsfunktioner

Sort och SortByColumns kan delegeras.

I Sort kan formeln endast vara namnet på en kolumn och får inte innehålla andra operander eller funktioner.

Mängdfunktioner

Sum, Average, Min och Max kan delegeras. Endast ett begränsat antal datakällor stöder den här delegeringen just nu. Mer information finns i delegeringslistan.

Beräkningsfunktioner som CountRows, CountA och Count kan inte delegeras.

Andra aggregatfunktioner som StdevP och VarP kan inte delegeras.

Övriga funktioner

Alla andra funktioner stöder inte delegering, däribland dessa viktiga funktioner:

Ett gemensamt mönster är att använda AddColumns och LookUp för att samköra information från en tabell till en annan, vilket med fackspråk kallas att Koppla. Exempel:

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

Även om Produkter och Leverantörer är datakällor som kan delegeras och LookUp är en funktion som kan delegeras kan funktionen AddColumns inte delegeras. Resultatet av hela formeln begränsas till den första delen av datakällan Produkter.

Eftersom LookUp och dess datakälla kan delegeras går det att hitta en matchning för Leverantörer någonstans i datakällan, även om den är stor. En potentiell nackdel är att LookUp kommer göra separata anrop till datakällan för var och en av de första posterna i Produkter, vilket orsakar mycket aktivitet på nätverket. Om Leverantörer är tillräckligt liten och inte ändras ofta kan du cachelagra datakällan i din app med anropet samla in när appen startar (med OnVisible på startskärmen) och utföra LookUp på den i stället.

Gränser som inte kan delegeras

Formler som inte kan delegeras bearbetas lokalt. Detta låter formelspråket i PowerApps utnyttjas till fullo. Men till ett pris: alla data måste skickas till enheten först, vilket kan medföra att stora mängder data skickas över nätverket. Detta kan ta tid, ge intryck av att dina appar är långsamma eller har låst sig.

För att undvika detta inför PowerApps en begränsning på mängden data som kan bearbetas lokalt: 500 poster. Vi har valt den här siffran så att du fortfarande kan ha fullständig åtkomst till mindre datauppsättningar och förfina din användning av stora datamängder genom att visa delar av resultat.

Naturligtvis måste du vara noggrann när du använder denna funktion som det kan vara förvirrande för användaren. Beakta till exempel en Filter-funktion med en formel som inte kan delegeras över en datakälla med en miljon poster. Eftersom filtrering ska ske lokalt, genomsöks endast de första 500 posterna av en miljon. Om den önskade posten är 501 eller 500,001 uppmärksammas eller returneras den inte av funktionen Filter.

En annan plats där det kan vara förvirrande är mängdfunktioner. Till exempel, funktionen Average över en kolumn i samma datakälla med en miljon poster. Eftersom Average ännu kan delegeras beräknas endast de första 500 posterna. Var försiktig så att ett ofullständigt svar inte presenteras som ett fullständigt svar av en av dina appanvändare.

Förslag med blå punkt

Om du vill göra det lättare att känna till vad som delegeras och vad som inte delegeras kan du hålla ögonen öppna för en blå punkt i gränssnittet som visar när en formel innehåller element som inte kan delegeras.

Blå punkter visas endast på formler som fungerar på kan datakällor som kan delegeras. Om du inte ser en blå punkt och du tror att formeln inte har delegerats korrekt och ska du kontrollera datakällans typ mot listan över datakällor som kan delegeras ovan.

Exempel

I det här exemplet kommer vi att använda en SQL Server-tabell som innehåller produkter, i synnerhet frukter, namn [dbo]. [ Produkter]. I det nya fönstret kan PowerApps skapa en grundläggande app med tre skärmar som är anslutna till den här datakällan:

Anteckna formeln för galleriegenskapen Objekt. Den använder funktionerna SortByColumns och Search, som båda kan delegeras.

Låt oss skriva "Äpple" i sökrutan. Om vi är uppmärksamma kan vi se vandrande punkter överst på skärmen medan den nya sökningen bearbetas. Punkterna anger att vi kommunicerar med SQL Server:

Eftersom allt detta kan delegeras, även om tabellen [dbo]. [ Produkter] innehåller miljontals poster, kan användaren hitta alla poster och bläddra bland dem i galleriet.

Du ser att vi ser en matchning för både "Äpple" och "Ananas". Funktionen Sök hittar en sökterm någonstans i en textkolumn. Anta istället att vi bara ville hitta söktermen i början av den fruktens namn. Vi kan använda en annan funktion som kan delegeras, Filter, med en mer komplicerad sökterm (för enkelhetens skull tar vi bort anropet SortByColumns):

Det verkar fungera, endast "Äpplen" visas nu och inte "Ananas". Men en blå punkt visas bredvid galleriet och det finns en blå våglinje under en del av formeln. Det finns till och med en blå punkt i skärmminiatyren. Om vi håller musen över den blå punkten bredvid galleriet ser vi:

Även om vi använder Filter, som är en funktion som kan delegeras, med SQL Server, som är en datakälla som kan delegeras, kan formeln som används i Filter inte delegeras. Mid och Len kan inte delegeras till någon datakälla.

Men det fungerade, eller hur? Nåja, på sätt och vis. Och är därför det är blå punkt i stället för en gul varningsikon och röd våglinje. Om tabellen [dbo]. [ Produkter] innehåller färre än 500 poster fungerade det perfekt. Alla poster har skickats till enheten och Filter tillämpades lokalt.

Om den här tabellen innehåller mer än 500 poster är det endast frukt som börjar med "Äpple" i de första 500 posterna i tabellen som visas i galleriet. Om "Apple, Fuji" visas som ett namn i post 501 eller 500,001 kommer posten inte att hittas.