Funktionerne Sort og SortByColumns

Gælder for: Lærredsapps Skrivebordsflows Modeldrevne apps Power Platform CLI

Sorterer en tabel.

Bemærk

PAC CLI pac power-fx-kommandoer understøtter ikke funktionen SortByColumns.

Beskrivelse

Funktionen Sort sorterer en tabel på basis af en formel.

Formlen evalueres for hver post i tabellen, og resultaterne bruges til at sortere tabellen. Formlen skal resultere i et tal, en streng eller en boolesk værdi. Den kan ikke resultere i en tabel eller en post.

Felter i den post, der behandles i øjeblikket, er tilgængelige i formlen. Brug ThisRecord-operatoren, eller referer blot til feltet med navn, som du ville gøre med en vilkårlig anden værdi. As-operatoren kan også bruges til at navngive den post, der behandles, hvilket kan hjælpe med at gøre din formel mere forståelig og gøre indlejrede poster tilgængelige. Du kan få flere oplysninger i eksemplerne nedenfor og arbejdet med posternes omfang.

Hvis du først vil sortere efter én kolonne og derefter efter en anden, skal du integrere en Sort-formel i en anden. Du kan f.eks. bruge denne formel til at sortere en tabel med Kontakter, først efter kolonnen LastName og derefter efter kolonnen FirstName: Sort( Sort( Contacts, LastName ), FirstName )

Funktionen SortByColumns kan også bruges til at sortere en tabel på basis af en eller flere kolonner.

Parameterlisten for SortByColumns indeholder navnene på de kolonner, der skal sorteres efter, og sorteringsretningen for hver kolonne. Sorteringen udføres i parameterrækkefølgen (sorteres først efter den første kolonne, derefter den anden osv.). Kolonnenavne er angivet som strenge, der kræver dobbelte anførselstegn, hvis de medtages direkte på parameterlisten. Eksempel SortByColumns( CustomerTable, "LastName" ).

Du kan kombinere SortByColumns med et Drop down-kontrolelement eller et List box-kontrolelement for at gøre det muligt for brugerne at vælge, hvilken kolonne der skal sorteres efter.

Ud over at sortere i stigende eller faldende rækkefølge kan SortByColumns sortere på basis af en enkelt kolonnetabel med værdier. Du kan f.eks. sortere poster på basis af navnet på en ugedag ved at angive ["mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag", "søndag"] som sorteringsrækkefølgen. Alle poster, der har mandag " kommer først, efterfulgt af tirsdag osv. Fundne poster, der ikke vises i sorteringstabellen, placeres i slutningen af listen.

Tables er en værdi i Power Apps, ligesom en streng eller et tal. De kan overføres til og returneres fra funktioner. Sort og SortByColumn ændrer ikke en tabel, i stedet tager de en tabel som et argument og returnerer en ny tabel, der er sorteret. Se Arbejde med tabeller for at få flere oplysninger.

Delegering

Hvis det er muligt, uddelegerer Power Apps filtrerings- og sorteringshandlinger til datakilden og -siden via resultaterne efter behov. Når du f.eks. starter en app, som viser et Galleri-kontrolelement fyldt med data, hentes indledningsvist kun første sæt af poster til enheden. Når brugeren ruller, hentes yderligere data fra datakilden. Resultatet er en hurtigere opstartstid for appen og adgang til meget store datasæt.

Det er dog ikke altid muligt at foretage uddelegering. Datakilder varierer med hensyn til de funktioner og operatorer, de understøtter med uddelegering. Hvis en komplet uddelegering af en formel ikke er mulig, vil oprettelsesmiljøet markere den del, som ikke kan uddelegeres, med en advarsel. Hvis det er muligt, kan du overveje at ændre formlen for at undgå funktioner og operatorer, som ikke kan uddelegeres. Uddelegeringslisten viser, hvilke datakilder og handlinger som ikke kan uddelegeres.

Hvis uddelegering ikke er mulig, henter Power Apps kun et lille sæt af poster for at arbejde med dem lokalt. Filtrerings- og sorteringsfunktioner fungerer på et reduceret antal poster. Det, der er tilgængeligt i galleriet, er muligvis ikke hele historien, hvilket kan være forvirrende for brugerne.

Se uddelegeringsoversigten for at få flere oplysninger.

Syntaks

Sort( Tabel, Formel [, SortOrder ] )

  • Table – påkrævet. Tabel, der skal sorteres.
  • Formel – påkrævet. Denne formel evalueres for hver post i tabellen, og resultaterne bruges til at sortere tabellen. Du kan referere til kolonner i tabellen.
  • SortOrder – valgfri. Angiv SortOrder.Descending for at sortere tabellen i faldende rækkefølge. SortOrder.Ascending er standardværdien.

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

  • Table – påkrævet. Tabel, der skal sorteres.

  • ColumnName(s) – påkrævet. De kolonnenavne, der skal sorteres efter, som strenge.

  • SortOrder(s) – valgfri. SortOrder.Ascending eller SortOrder.Descending. SortOrder.Ascending er standardværdien. Hvis der angives flere ColumnNames, skal de alle undtagen den sidste kolonne omfatte en SortOrder.

    Bemærk

    For de SharePoint- og Excel-datakilder, der indeholder kolonnenavne med mellemrum, skal du angive hvert mellemrum som "_x0020_". Du skal f.eks. angive "Kolonnens navn" som "Kolonnens_x0020_navn".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table – påkrævet. Tabel, der skal sorteres.

  • ColumnName – påkrævet. Det kolonnenavn, der skal sorteres efter, som strenge.

  • SortOrderTable – påkrævet. Enkelt kolonnetabel med værdier, der skal sorteres efter.

    Bemærk

    For de SharePoint- og Excel-datakilder, der indeholder kolonnenavne med mellemrum, skal du angive hvert mellemrum som "_x0020_". Du skal f.eks. angive "Kolonnens navn" som "Kolonnens_x0020_navn".

Eksempler

I følgende eksempler bruger vi IceCream-datakilden, som indeholder dataene i denne tabel:

Eksempel på IceCream.

Formel Beskrivelse Resultat
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
Sorterer IceCream efter kolonnen Flavor. Kolonnen Flavor indeholder strenge, så tabellen sorteres alfabetisk. Sorteringsrækkefølgen er som standard stigende. Sorteret alfabetisk.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Sorterer IceCream efter kolonnen Quantity. Kolonnen Quantity indeholder tal, så tabellen sorteres numerisk. Sorteringsrækkefølgen er som standard stigende. Sorteret numerisk.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Sorterer IceCream efter kolonnen Quantity. Kolonnen Quantity indeholder tal, så sorteringen udføres numerisk. Sorteringsrækkefølgen er angivet som faldende. Sorteret numerisk og faldende.
Sort( IceCream, Quantity + OnOrder ) Sorterer IceCream efter summen af kolonnerne Quantity og OnOrder enkeltvist for hver post. Summen er et tal, så tabellen sorteres numerisk. Sorteringsrækkefølgen er som standard stigende. Da vi sorterer efter en formel og ikke efter rå kolonneværdier, er der er ingen tilsvarende sortering med SortByColumns. Sorteret numerisk og stigende.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending )
Sorterer først IceCream efter kolonnen OnOrder og derefter efter kolonnen Quantity. Bemærk, at "Pistachio" lå højere end "Vanilla" i den første sortering baseret på OnOrder, og derefter blev begge varianter flyttet til den korrekte placering baseret på Quantity. Sorteret med Pistachio over Vanilla.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Sorterer IceCream efter kolonnen Flavor på basis af tabellen med en enkelt kolonne, der omfatter "Pistachio" og "Strawberry". Poster, der har "Pistachio" som Flavor, vises først i resultatet efterfulgt af poster, der indeholder "Strawberry". Værdier i kolonnen Flavor, der ikke findes resultater for, f.eks. "Vanilla", vises efter de elementer, der blev fundet resultater for. Sorteret med Pistachio over Strawberry.

Trin for trin

Hvis du selv skal køre disse eksempler, skal du oprette datakilden IceCream som en samling:

  1. Tilføj en knap, og angiv dens egenskab OnSelect til denne 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å vist appen, klik på knappen, og tryk derefter på Esc for at vende tilbage til standardarbejdsområdet.
  3. Vælg Samlinger i menuen Filer for at få vist den samling, du lige har oprettet, og tryk derefter på Esc for at vende tilbage til standardarbejdsområdet.

Sort

  1. Tilføj en anden knap, og angiv dens OnSelect-egenskab til denne formel:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    Den tidligere formel opretter en anden samling med navnet SortByFlavor, som indeholder de samme data som IceCream. Den nye samling indeholder imidlertid dataene sorteret alfabetisk efter kolonnen Flavor i stigende rækkefølge.

  2. Tryk på F5, vælg den nye knap, og tryk derefter på Esc.

  3. Vælg Samlinger i menuen Filer for at få vist begge samlinger, og tryk derefter på Esc for at vende tilbage til standardarbejdsområdet.

  4. Gentag de sidste tre trin, men rediger navnet på den samling, du vil oprette, og erstat formlen Sort med en anden formel fra tabellen i eksemplerne tidligere i dette afsnit, der bruger Sort.

SortByColumns

  1. Tilføj en anden knap, og angiv dens OnSelect-egenskab til denne formel:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )

    Den tidligere formel opretter en tredje samling med navnet SortByQuantity, der indeholder de samme data som IceCream. Den nye samling indeholder imidlertid dataene sorteret numerisk efter kolonnen Quantity i stigende rækkefølge og derefter efter kolonnen Flavor i faldende rækkefølge.

  2. Tryk på F5, vælg den nye knap, og tryk derefter på Esc.

  3. Vælg Samlinger i menuen Filer for at få vist alle tre samlinger, og tryk derefter på Esc for at vende tilbage til standardarbejdsområdet.

  4. Gentag de sidste tre trin, men rediger navnet på den samling, du vil oprette, og erstat formlen SortByColumns med en anden formel fra tabellen i eksemplerne tidligere i dette afsnit, der bruger SortByColumns.