ORDERBY ER-funksjonen
ORDERBY
-funksjonen returnerer den angitte listen som en postliste-verdi etter at den er sortert i henhold til de angitte argumentene. Disse argumentene kan defineres som uttrykk.
Syntaks 1
ORDERBY (list, expression 1[, expression 2, …, expression N])
Syntaks 2
ORDERBY (location, list, expression 1[, expression 2, …, expression N])
Notat
Denne syntaksen støttes for Microsoft Dynamics 365 Finance versjon 10.0.25 og senere.
Argumenter
location
: Streng
Plasseringen der sorteringen skal kjøres. Følgende alternativer er gyldige:
- "Query"
- "InMemory"
list
: Postliste
Den gyldige banen til en datakilde av Postliste-datatypen.
expression 1
: Felt
Den gyldige banen til et felt i datakilden som list
-argumentet for den kalte funksjonen refererer til. Det refererte feltet må være et felt av den primitive datatypen. Dette argumentet er obligatorisk.
expression N
: Felt
Den gyldige banen til et felt i datakilden som list
-argumentet for den kalte funksjonen refererer til. Det refererte feltet må være et felt av den primitive datatypen. Disse tilleggsargumentene er valgfrie.
Returverdier
Postliste
Den resulterende listen over oppføringer.
Bruksnotater
Syntaks 1
Datasortering utføres alltid i minnet til appserveren. Hvis du vil ha mer informasjon, kan du se eksempel 1.
Syntaks 2
Sortere i minne
Når location
-argumentet er angitt som InMemory, utføres datasortering i minnet til en appserver. Hvis du vil ha mer informasjon, kan du se eksempel 2.
Sortere i database
Når location
-argumentetet angitt som Query, utføres datasortering på databasenivå. I dette tilfellet må list
-argumentet peke til en av følgende ER-datakilder (Electronic Reporting) som angir appkilden som det kan opprettes en direkte databasespørring for:
- En datakilde av Tabellposter-typen
- Relasjon av en datakilde av Tabellposter-typen
- En datakilde av typen Beregnet felt
Argumentene expression 1
og expression N
må peke til felter for en ER-datakilde som angir de relevante feltene for appkilden som en direkte databasespøring også kan etableres for.
Hvis en direkte databasespørring ikke kan opprettes, oppstår det en valideringsfeil i ER-modelltilordningsutformingen. Meldingen du mottar, sier at ER-uttrykket som inneholder funksjonen ORDERBY
, ikke kan kjøres under kjøring.
For bedre ytelse anbefaler vi at du bruker Query-alternativet når sorteringen er konfigurert for appdatakilder som kan inneholde et stort antall poster (for eksempel apptabeller for transaksjoner).
Notat
Selve ORDEBY
-funksjonen kan ikke oversettes til en direkte databasespørring. Derfor er det ikke mulig å kjøre spørringer mot en ER-datakilde som inneholder denne funksjonen. Den kan heller ikke brukes når det gjelder ER-funksjoner , for eksempel FILTER og ALLITEMSQUERY, der bare datakilder som kan spørres, kan brukes.
Hvis du vil ha mer informasjon , kan du se eksempel 3 og eksempel 4.
Sammenlignbarhet
Siden SQL Database-motoren og Finance-appserveren kan bruke en annen rangeringsverdi for ett enkelt tegn, kan sorteringsresultatet for den samme listen over poster være forskjellig når et Streng-felt brukes til sortering. Hvis du vil ha mer informasjon, kan du se eksempel 5.
Eksempel 1: Standardkjøring i minnet
Hvis du angir datakilde DS av Beregnet felt-typen, og den inneholder uttrykket SPLIT ("C|B|A", "|")
, genererer uttrykket FIRST( ORDERBY( DS, DS. Value)).Value
tekstverdien "A".
Eksempel 2: Eksplisitt kjøring i minnet
Hvis Leverandør er konfigurert som en ER-datakilde av Tabellposter-typen som refererer til VendTable-tabellen, returnerer både uttrykket ORDERBY (Vendor, Vendor.'name()')
og uttrykket ORDERBY ("InMemory", Vendor, Vendor.'name()')
en liste over leverandører sortert etter navn i stigende rekkefølge.
Når du konfigurerer uttrykket ORDERBY ("Query", Vendor, Vendor.'name()')
i ER-utformingen av modelltilordningen, oppstår det en valideringsfeil ved utformingstidspunktet fordi Vendor.'name()'
-banen refererer til en appmetode som har logikk som ikke kan oversettes til en direkte databasespørring.
Eksempel 3: Databasespørring
Hvis TaxTransaction er konfigurert som en ER-datakilde av Tabellpost-typen som refererer til TaxTrans-tabellen, sorterer uttrykket ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode)
poster på appdatabasenivået og returnerer en liste over avgiftstransaksjoner som er sortert etter avgiftskode i stigende rekkefølge.
Eksempel 4: Datakilder som kan spørres
Hvis TaxTransaction er konfigurert som en ER-datakilde for Tabellposter-typen som refererer til TaxTrans-tabellen, kan ER-datakilden TaxTransactionFiltered konfigureres slik at den inneholder uttrykket FILTER(TaxTransaction, TaxCode="VAT19")
, som vil hente transaksjoner for en angitt avgiftskode. Fordi den konfigurerte ER-datakilden TaxTransactionFiltered kan spørres, kan uttrykket ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate)
konfigureres til å returnere listen over filtrerte avgiftstransaksjoner som er sortert etter transaksjonsdato i stigende rekkefølge.
Hvis du konfigurerer TaxTransactionOrdered som en ER-datakilde av typen Beregnet felt som inneholder uttrykket ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate)
, og en ER-datakilde av typen Beregnet felt som inneholder uttrykket FILTER(TaxTransactionOrdered, TaxCode="VAT19")
, oppstår det en valideringsfeil ved utformingstidspunktet i ER-utformingen av modelltilordningen. Denne feilen oppstår fordi det første argumentet til FILTER-funksjonen må refererer til en ER-datakilde som kan spørres, men TaxTransactionOrdered-datakilden som inneholder ORDERBY
-funksjonen, kan ikke spørres.
Eksempel 5: Sammenlignbarhet
Forutsetninger
- Angi DS1-datakilden av Beregnet felt-typen som inneholder uttrykket
SPLIT ("D1|_D2|D3", "|")
- Åpne siden Finansdimensjonsverdier, og velg CostCenter-dimensjonen.
- Angi følgende dimensjonsverdier: D1, ‑D2 og D3.
Sortere i minne
- Konfigurer DS2-datakilden av Beregnet felt-typen som inneholder uttrykket
ORDERBY("InMemory", DS1, DS1.Value)
- Legg merke til at uttrykket
FIRST(DS2).Value
returnerer tekstverdien "D1", uttrykketINDEX(DS2, COUNT(DS2)).Value
returnerer tekstverdien "_D2", og uttrykketSTRINGJOIN(DS2, DS2.Value, "|")
returnerer tekstverdien "D1|D3|_D2".
Sortere i database
- Angi DS3-datakilden av Tabellposter-typen som refererer til FinancialDimensionValueEntity-enheten.
- Konfigurer DS4-datakilden av Beregnet felt-typen som inneholder uttrykket
FILTER(DS3, DS3.FinancialDimension="CostCenter")
- Konfigurer DS5-datakilden av Beregnet felt-typen som inneholder uttrykket
ORDERBY(DS4, DS4.DimensionValue)
- Legg merke til at uttrykket
FIRST(DS5).Value
returnerer tekstverdien "D2", uttrykketINDEX(DS5, COUNT(DS5)).Value
returnerer tekstverdien "D3", og uttrykketSTRINGJOIN(DS5, DS5.Value, "|")
returnerer tekstverdien "_D2|D1|D3".