Funksjonene Sort og SortByColumns

Gjelder: Lerretsapper Skrivebordsflyt Modelldrevne apper Power Platform CLI

Sorterer en tabell.

Obs!

PAC CLI pac power-fx-kommandoer støtter ikke SortByColumns-funksjonen.

Description

Sort-funksjonen sorterer en tabell basert på en formel.

Formelen evalueres for hver post i tabellen, og resultatene brukes til å sortere tabellen. Formelen må resultere i et tall, en streng eller en boolsk verdi. Den kan ikke resultere i en tabell eller oppføring.

Feltene for oppføringen som blir behandlet er tilgjengelige i formelen. Bruk ThisRecord-operatoren eller bare referer til felt etter navn, på samme måte som andre verdier. As-operatoren kan også brukes til å gi navn til oppføringen som blir behandlet, noe som kan gjøre det enklere å forstå og ta i bruk nestede oppføringer. Hvis du vil ha mer informasjon, kan du se eksemplene nedenfor og arbeide med oppføringsomfang.

Hvis du vil sortere først etter én kolonne og deretter etter en annen, bygger du inn en Sort-formel i en annen. Du kan for eksempel bruke denne formelen til å sortere en Kontakter-tabell først etter en Etternavn-kolonne og deretter etter en Fornavn-kolonne: Sort( Sort( Contacts, LastName ), FirstName )

SortByColumns-funksjonen kan også brukes til å sortere en tabell basert på én eller flere kolonner.

Parameterlisten for SortByColumns inneholder navnene på kolonnene du vil sortere etter, og sorteringsretningen per kolonne. Sorteringen utføres i samme rekkefølge som parameterne (sortert etter den første kolonnen, og deretter den andre og så videre). Kolonnenavn er angitt som strenger, som krever doble anførselstegn hvis de er direkte inkludert i parameterlisten. For eksempel: SortByColumns( CustomerTable, "LastName" ).

Du kan kombinere SortByColumns med en Drop down- eller List box-kontroll, slik at brukerne kan velge hvilken kolonne de vil sortere etter.

I tillegg til stigende eller synkende sortering kan SortByColumns sortere basert på en enkeltkolonnetabell med verdier. Du kan for eksempel sortere poster basert på navnet på en ukedag ved å oppgi [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] som sorteringsrekkefølge. Alle poster som inneholder Monday kommer først, etterfulgt av Tuesday og så videre. Poster som ble funnet, som ikke vises i sorteringstabellen, plasseres på slutten av listen.

Tabeller er en verdi i Power Apps, akkurat som en streng eller et tall. De kan sendes til og returneres fra funksjoner. Sort og SortByColumn endrer ikke tabeller. De bruker i stedet en tabell som et argument og returnerer en ny tabell som er sortert. Hvis du vil ha mer informasjon, kan du se arbeide med tabeller.

Delegering

Når det er mulig, vil Power Apps delegere filtrerings- og sorteringoperasjoner til datakilden og siden gjennom resultatene ved behov. Når du for eksempel starter en app som viser en Galleri-kontroll fylt med data, blir bare det første settet med oppføringer overført til enheten til å begynne med. Når brukeren ruller, hentes flere data fra datakilden. Resultatet er raskere oppstartstid for appen og tilgang til et svært store datasett.

Det er imidlertid ikke alltid mulig å delegere. Datakilder varierer avhengig av hvilke funksjoner og operatorer de støtter med delegering. Hvis fullstendig delegering av en formel ikke er mulig, vil redigeringsmiljøet vise en advarsel for delen som ikke kan delegeres. Vurder å endre formelen når det er mulig, for å unngå funksjoner og operatorer som ikke kan delegeres. Delegeringslisten inneholder informasjon om hvilke datakilder og som kan delegeres.

Hvis det ikke er mulig å delegere, vil Power Apps bare hente et lite sett med oppføringer for å arbeide lokalt. Filtrerings- og sorteringsfunksjoner fungerer på et mindre sett med oppføringer. Det som er tilgjengelig i Galleri er kanskje ikke den fullstendige historikken, og dette kan være forvirrende for brukere.

Hvis du vil ha mer informasjon, kan du se delegeringsoversikten.

Syntaks

Sort( Table, Formula [, SortOrder ] )

  • Table - obligatorisk. Tabell som skal sorteres.
  • Formula – obligatorisk. Denne formelen evalueres for hver post i tabellen, og resultatene brukes til å sortere tabellen. Du kan referere til kolonner i tabellen.
  • SortOrder - valgfritt. Angi SortOrder.Descending for å sortere tabellen i synkende rekkefølge. SortOrder.Ascending er standardverdien.

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

  • Table - obligatorisk. Tabell som skal sorteres.

  • ColumnName(s) - obligatorisk. Kolonnenavnene som skal sorteres etter, som strenger.

  • SortOrder(s) - valgfritt. SortOrder.Ascending eller SortOrder.Descending. SortOrder.Ascending er standard. Hvis flere ColumnNames leveres, må alle unntatt den siste kolonnen inneholde en SortOrder.

    Obs!

    Du må spesifisere hvert mellomrom med "_x0020_" for SharePoint- og Excel-datakilder som inneholder kolonnenavn med mellomrom. Du kan for eksempel angi "ColumnName" som "Column_x0020_Name".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - obligatorisk. Tabell som skal sorteres.

  • ColumnName - obligatorisk. Kolonnenavnet som skal sorteres etter, som strenger.

  • SortOrderTable - obligatorisk. Enkeltkolonnetabell av verdiene som skal sorteres etter.

    Obs!

    Du må spesifisere hvert mellomrom med "_x0020_" for SharePoint- og Excel-datakilder som inneholder kolonnenavn med mellomrom. Du kan for eksempel angi "ColumnName" som "Column_x0020_Name".

Eksempler

Vi bruker IceCream-datakilden, som inneholder dataene i denne tabellen, for eksemplene nedenfor:

Eksempel med IceCream.

Formel Beskrivelse Resultat
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
Sorterer IceCream etter Flavor-kolonnen. Flavor-kolonnen inneholder strenger, så tabellen er sortert alfabetisk. Sorteringsrekkefølgen er stigende som standard. Alfabetisk sortert.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Sorterer IceCream etter Quantity-kolonnen. Quantity-kolonnen inneholder tall, så tabellen er sortert numerisk. Sorteringsrekkefølgen er stigende som standard. Sortert numerisk.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Sorterer IceCream etter Quantity-kolonnen. Quantity-kolonnen inneholder tall, så sorteringen er numerisk. Sorteringsrekkefølgen er angitt som synkende. Sortert numerisk og synkende.
Sort( IceCream, Quantity + OnOrder ) Sorterer IceCream med summen av Quantity- og OnOrder-kolonnene enkeltvis for hver post. Summen er et tall, så tabellen er sortert numerisk. Sorteringsrekkefølgen er stigende som standard. Fordi vi sorterer ved hjelp av en formel og ikke etter rå kolonneverdier, finnes det ingen tilsvarende med bruk av SortByColumns. Sortert numerisk og stigende.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending )
Sorterer IceCream først etter OnOrder-kolonnen og deretter etter Quantity-kolonnen. Vær oppmerksom på at "Pistachio" var plassert over "Vanilla" i den første sorteringen, basert på OnOrder, og deretter ble de flyttet sammen til sine riktige plasseringer basert på Quantity. Sortert med Pistachio over Vanilla.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Sorterer IceCream etter Flavor-kolonnen basert på enkeltkolonnetabellen som inneholder Pistachio og Strawberry. Poster som har "Pistachio" for Flavor, vises først i resultatet, etterfulgt av poster som inneholder "Strawberry". Verdier i Flavor-kolonnen som ikke er et treff, for eksempel "Vanilla", vises etter elementene som samsvarte. Sortert med Pistachio over Strawberry.

Trinnvis

Hvis du vil kjøre disse eksemplene selv, kan du opprette datakilden IceCream som en samling:

  1. Legg til en knapp, og sett knappens OnSelect-egenskap til denne formelen:
    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. Forhåndsvis appen, velg knappen og trykk deretter på ESC for å gå tilbake til standard arbeidsområde.
  3. Velg SamlingerFil-menyen for å vise samlingen som du nettopp opprettet, og trykk deretter på ESC for å gå tilbake til standard arbeidsområde.

Sort

  1. Legg til en ny knapp, og angi OnSelect-egenskapen til denne formelen:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    Formelen over oppretter en annen samling, kalt SortByFlavor, som inneholder de samme dataene som Ice Cream. Den nye samlingen inneholder imidlertid dataene sortert alfabetisk etter Flavor-kolonnen i stigende rekkefølge.

  2. Trykk på F5, velg den nye knappen, og trykk deretter på ESC.

  3. Velg SamlingerFil-menyen for å vise begge samlingene, og trykk deretter på ESC for å gå tilbake til standard arbeidsområde.

  4. Gjenta de forrige tre trinnene, men endre navnet på samlingen du vil opprette, og erstatt Sort-formelen med en annen formel fra en tabell med eksemplene tidligere i denne delen som bruker Sort.

SortByColumns

  1. Legg til en ny knapp, og angi OnSelect-egenskapen til denne formelen:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )

    Formelen over oppretter en tredje samling, kalt SortByQuantity, som inneholder de samme dataene som Ice Cream. Den nye samlingen inneholder imidlertid dataene sortert numerisk etter Quantity-kolonnen i stigende rekkefølge, og deretter etter Flavor-kolonnen i synkende rekkefølge.

  2. Trykk på F5, velg den nye knappen, og trykk deretter på ESC.

  3. Velg SamlingerFil-menyen for å vise de tre samlingene, og trykk deretter på ESC for å gå tilbake til standard arbeidsområde.

  4. Gjenta de forrige tre trinnene, men endre navnet på samlingen du vil opprette, og erstatt SortByColumns-formelen med en annen formel fra en tabell med eksemplene tidligere i denne delen som bruker SortByColumns.