Funktionerna Sort och SortByColumns

Gäller: Arbetsyteappar Datorflöden Modellbaserade appar Power Platform CLI

Sorterar en tabell.

Kommentar

PAC CLI pac power-fx kommandona stöder inte SortByColumns-funktionen.

Beskrivning

Funktionen Sort sorterar en tabell utifrån en formel.

Formeln utvärderas för varje post i tabellen, och resultaten används för att sortera tabellen. Formeln måste resultera i ett tal, en sträng eller ett booleskt värde. Den kan inte resultera i en tabell eller en post.

Fälten för den post som bearbetas för närvarande är tillgängliga i formeln. Använd ThisRecord-operatorn eller referera bara till fälten med namn på samma sätt som med andra värden. As-operatorn kan också användas för att namnge posten som bearbetas, vilket kan göra att formeln blir lättare att förstå och göra kapslade poster tillgängliga. Mer information finns i exemplen nedan och i arbeta med postomfattning.

Om du vill sortera efter en viss kolumn först och sedan efter en annan, bäddar du in en Sort-formler i varandra. Du kan t.ex. använda den här formeln för att sortera en Contacts-tabell, först efter kolumnen LastName och sedan efter kolumnen FirstName: Sort (Sort (Contacts, LastName), FirstName)

Du kan även använda funktionen SortByColumns om du vill sortera en tabell utifrån en eller flera kolumner.

Parameterlistan för SortByColumns innehåller namnen på de kolumner som du vill sortera efter och sorteringsordningen per kolumn. Sorteringen genomförs i den ordning som parametrarna ligger (först efter den första kolumnen, sedan efter den andra osv). Kolumnnamnen anges som strängar, och kräver dubbla citattecken om ed inkluderas direkt i parameterlistan. Exempel: SortByColumns (CustomerTable, "LastName").

Du kan kombinera SortByColumns med en nedrullningsbar Drop down eller vanlig List box så att användarna kan välja vilken kolumn de ska sortera efter.

Förutom att sortera i stigande eller fallande ordning kan SortByColumns sortera efter en enkolumnstabell med värden. Du kan t.ex. göra en postbaserad sortering efter veckodagarnas namn genom att ange ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] som sorteringsordning. Alla poster som innehåller Monday kommer först, därefter Tuesday osv. Poster som inte förekommer i sorteringstabellen placeras i slutet av listan.

Tables är ett värde i Power Apps, precis som en sträng eller ett tal. De kan skickas till och returneras från funktioner. Sort och SortByColumn ändrar inte en tabell, utan använder istället tabellen som ett argument och returnerar en ny tabell som har sorterats. Mer information finns i Arbeta med tabeller.

Delegering

När det är möjligt delegerar Power Apps filtrerings- och sorteringsåtgärder till datakällan och bläddrar igenom resultatet på begäran. Om du till exempel startar ett program som visar en Galleri-kontroll fylld med data kommer bara den första uppsättningen med poster att flyttas till enheten till att börja med. När användaren bläddrar flyttas ytterligare data ned från datakällan. Resultatet blir en snabbare starttid för programmet och åtkomst till mycket stora datauppsättningar.

Delegering är dock inte alltid möjlig. Datakällor stöder olika funktioner och operatorer med delegering. Om en fullständig delegering av en formel inte är möjligt flaggar redigeringsmiljön den del som inte kan delegeras med en varning. När det är möjligt bör du överväga att ändra formeln för att undvika funktioner och operatorer som inte kan delegeras. I delegeringslistan anges vilka datakällor och åtgärder som kan delegeras.

Om delegering inte är möjligt hämtar Power Apps bara en liten uppsättning med poster att arbeta med lokalt. Filtrerings- och sorteringsfunktionerna används på en reducerad uppsättning med poster. Det som är tillgängligt i Galleri kanske inte är en fullständig överblick, vilket kan vara förvirrande för användarna.

Mer information finns i översikt över delegering.

Syntax

Sort( Table, Formula [, SortOrder ] )

  • Table – krävs. Tabell som ska sorteras.
  • Formula – obligatoriskt. Formeln utvärderas för varje post i tabellen, och resultaten används för att sortera tabellen. Du kan referera till kolumner i tabellen.
  • SortOrder – valfritt. Ange SortOrder.Descending om du vill sortera tabellen i fallande ordning. SortOrder.Ascending är standard.

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Table – krävs. Tabell som ska sorteras.

  • ColumnName(s) – obligatoriskt. De kolumnnamn som sorteringen ska baseras på, som strängar.

  • SortOrder(s) – valfritt. SortOrder.Ascending eller SortOrder.Descending. SortOrder.Ascending är standard. Om flera ColumnNames tillhandahålls måste alla kolumner utom den sista inkludera SortOrder.

    Kommentar

    För SharePoint och Excel-datakällor som innehåller kolumnnamn med blanksteg, anges varje utrymme som "_x0020_". Ange till exempel "Kolumnens namn" som "Kolumnens_x0020_namn".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table – krävs. Tabell som ska sorteras.

  • ColumnName – obligatoriskt. Det kolumnnamn som sorteringen ska baseras på, som strängar.

  • SortOrderTable – obligatoriskt. Enkolumnstabell med värden att sortera efter.

    Kommentar

    För SharePoint och Excel-datakällor som innehåller kolumnnamn med blanksteg, anges varje utrymme som "_x0020_". Ange till exempel "Kolumnens namn" som "Kolumnens_x0020_namn".

Exempel

I följande exempel använder vi IceCream datakällan, vilken innehåller de data som visas i den här tabellen:

IceCream-exempel.

Formel Beskrivning Resultat
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
Sorterar IceCream efter kolumnen Smak. Kolumnen Smak innehåller strängar, så tabellen sorteras alfabetiskt. Sorteringsordningen är stigande som standard. Alfabetiskt sorterad.
Sort (IceCream, Quantity)

SortByColumns (IceCream, "Kvantitet")
Sorterar IceCream efter kolumnen Kvantitet. Kolumnen Kvantitet innehåller tal, så tabellen sorteras numeriskt. Sorteringsordningen är stigande som standard. Sorterat numeriskt.
Sort (IceCream, Kvantitet, SortOrder.Descending)

SortByColumns (IceCream, "Kvantitet", SortOrder.Descending)
Sorterar IceCream efter kolumnen Kvantitet. Kolumnen Kvantitet innehåller tal, så sorteringen är numerisk. Sorteringsordningen har angetts som fallande. Sorterat numeriskt och fallande.
Sort (IceCream, Kvantitet + OnOrder) Sorterar IceCream efter summan i kolumnerna Quantity och OnOrder för varje enskild post. Summan är ett tal, så tabellen sorteras numeriskt. Sorteringsordningen är stigande som standard. Eftersom vi sorterar efter en formel och inte kolumnernas rådata så finns det ingen motsvarighet till SortByColumns. Sorterat numeriskt och stigande.
Sort (Sort (IceCream, OnOrder), Kvantitet)

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending )
Sorterar först IceCream efter kolumnen OnOrder och sedan efter kolumnen Kvantitet. Observera att "Pistaschmandel" hamnade före "Vanilj" i den första sorteringen, som utgick från OnOrder, varefter de fick sin slutliga plats utifrån Kvantitet. Sorterad med pistage ovanför vanilj.
SortByColumns( IceCream , "Flavor", [ "Pistachio", "Strawberry" ] ) Sorterar IceCream efter kolumnen Smak baserat på den enkolumnstabell som innehåller "Pistaschmandel" och "Jordgubb". Poster där Smak har värdet "Pistaschmandel" visas först i resultatet, följt av poster som innehåller "Jordgubb". När det gäller värden i kolumnen Smak som saknar matchning, t.ex. "Vanilj", så visas de efter de objekt som kunde matchas. Sorterad med Pistachio ovanför Strawberry.

Steg-för-steg

Om du vill köra dessa exempel själv skapar du datakällan IceCream som en samling:

  1. Lägg till en knapp och ge dess egenskap OnSelect följande formel:
    ClearCollect( IceCream , { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 10 } )
  2. Förhandsgranska programmet, välj knappen och återgå sedan till standardarbetsytan genom att trycka på Esc.
  3. Om du vill visa den samling som du just har skapat väljer du SamlingarArkiv-menyn och återgår sedan till standardarbetsytan genom att trycka på Esc.

Sort

  1. Lägg till en knapp och ge dess OnSelect-egenskap följande formel:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    Den föregående formeln skapar en andra samling, med namnet SortByFlavor, som innehåller samma data som Ice Cream. Den nya samlingen innehåller dock data som sorterats alfabetiskt i stigande ordning efter kolumnen Smak.

  2. Tryck på F5, välj den nya knappen och tryck på Esc.

  3. Om du vill visa båda samlingarna väljer du SamlingarArkiv-menyn och återgår sedan till standardarbetsytan genom att trycka på Esc.

  4. Upprepa de senaste tre stegen, men ändra namnet på den samling som du vill skapa och ersätt formeln Sort formel med en annan formel från tabellen med exempel tidigare i det här avsnittet där Sort används.

SortByColumns

  1. Lägg till en knapp och ge dess OnSelect-egenskap följande formel:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )

    Den föregående formeln skapar en tredje samling, med namnet SortByQuantity, som innehåller samma data som Ice Cream. Den nya samlingen innehåller dock data som sorterats numeriskt i stigande ordning efter kolumnen Kvantitet och sedan i fallande ordning efter kolumnen Smak.

  2. Tryck på F5, välj den nya knappen och tryck på Esc.

  3. Om du vill visa alla tre samlingarna väljer du SamlingarArkiv-menyn och återgår sedan till standardarbetsytan genom att trycka på Esc.

  4. Upprepa de senaste tre stegen, men ändra namnet på den samling som du vill skapa och ersätt formeln SortByColumns formel med en annan formel från tabellen med exempel tidigare i det här avsnittet där SortByColumns används.