ORDERBY EB-Funktion
Die Funktion ORDERBY
gibt die angegebene Liste mit dem Wert Datensatzliste zurück, nachdem sie nach den angegebenen Argumenten sortiert wurde. Diese Argumente können als Ausdrücke definiert werden.
Syntax 1
ORDERBY (list, expression 1[, expression 2, …, expression N])
Syntax 2
ORDERBY (location, list, expression 1[, expression 2, …, expression N])
Notiz
Diese Syntax wird für Microsoft Dynamics 365 Finance Version 10.0.25 und höher unterstützt.
Argumente
location
: Zeichenfolge
Der Ort, an dem die Sortierung ausgeführt werden soll. Die folgenden Optionen sind gültig:
- "Query"
- "InMemory"
list
: Datensatzliste
Der gültige Pfad einer Datenquelle des Datentyps Datensatzliste.
expression 1
: Feld
Der gültige Pfad eines Feldes der Datenquelle, die durch das Argument list
der aufgerufenen Funktion referenziert wird. Das referenzierte Feld muss ein Feld des primitiven Datentyps sein. Dieses Argument ist erforderlich.
expression N
: Feld
Der gültige Pfad eines Feldes der Datenquelle, die durch das Argument list
der aufgerufenen Funktion referenziert wird. Das referenzierte Feld muss ein Feld des primitiven Datentyps sein. Diese zusätzlichen Argumente sind optional.
Rückgabewerte
Datensatzliste
Die resultierende Liste der Datensätze.
Anwendungshinweise
Syntax 1
Die Datensortierung wird immer im Speicher des Anwendungsservers durchgeführt. Weitere Einzelheiten finden Sie unter Beispiel 1.
Syntax 2
Sortieren im Speicher
Wenn das Argument location
als InMemory angegeben wird, erfolgt die Datensortierung im Speicher eines Anwendungsservers. Weitere Einzelheiten finden Sie unter Beispiel 2.
Sortieren in der Datenbank
Wenn das Argument location
als Abfrage angegeben wird, erfolgt die Sortierung der Daten auf Datenbankebene. In diesem Fall muss das Argument list
auf eine der folgenden Electronic reporting (ER) Datenquellen zeigen, die die Anwendungsquelle angibt, für die eine direkte Datenbankabfrage eingerichtet werden kann:
- Data source vom Typ Tabellendatensätze
- Relation einer Datenquelle vom Typ Tabellendatensätze
- Datenquelle vom Typ Berechnungsfeld
Die Argumente expression 1
und expression N
müssen auf Felder einer ER-Datenquelle zeigen, die die entsprechenden Felder der Anwendungsquelle angibt, für die auch eine direkte Datenbankabfrage eingerichtet werden kann.
Wenn eine direkte Datenbankabfrage nicht möglich ist, wird im Designer für die Zuordnung von ER-Modellen ein Fehler angezeigt. Die Nachricht, die Sie erhalten, besagt, dass der EB-Ausdruck, der die ORDERBY
-Funktion enthält, nicht zur Laufzeit ausgeführt werden kann.
Um eine bessere Leistung zu erzielen, empfehlen wir Ihnen, die Option Abfrage zu verwenden, wenn die Sortierung für Anwendungsdatenquellen konfiguriert ist, die eine große Anzahl von Datensätzen enthalten können (z.B. für transaktionale Anwendungstabellen).
Notiz
Die Funktion ORDEBY
selbst kann nicht in eine direkte Datenbankabfrage übersetzt werden. Daher ist eine ER-Datenquelle, die diese Funktion enthält, nicht abfragbar. Es kann auch nicht im Rahmen von ER-Funktionen wie FILTER und ALLITEMSQUERY verwendet werden, wo nur abfragbare Datenquellen verwendet werden können.
Weitere Einzelheiten finden Sie unter Beispiel 3 und Beispiel 4.
Vergleichbarkeit
Da die SQL-Datenbank-Engine und der Finance-Anwendungsserver einen unterschiedlichen Ranking-Wert für ein einzelnes Zeichen verwenden können, kann das Sortierergebnis derselben Liste von Datensätzen unterschiedlich ausfallen, wenn ein String-Feld für die Sortierung verwendet wird. Weitere Details finden Sie unter Beispiel 5.
Beispiel 1: In-Memory-Standardausführung
Wenn Sie die Datenquelle DS des Typs Berechnetes Feld eingeben, und sie den Ausdruck SPLIT ("C|B|A", "|")
enthält, gibt der Ausdruck FIRST( ORDERBY( DS, DS. Value)).Value
den Textwert "A" zurück.
Beispiel 2: Explizite speicherinterne Ausführung
Wenn Kreditor als ER-Datenquelle vom Typ Tabellendatensätze konfiguriert ist, die auf die Tabelle VendTable verweist, geben sowohl der Ausdruck ORDERBY (Vendor, Vendor.'name()')
als auch der Ausdruck ORDERBY ("InMemory", Vendor, Vendor.'name()')
eine Liste von Kreditoren zurück, die in aufsteigender Reihenfolge nach Namen sortiert ist.
Wenn Sie den Ausdruck ORDERBY ("Query", Vendor, Vendor.'name()')
im Designer für die Zuordnung von ER-Modellen konfigurieren, kommt es zur Entwurfszeit zu einem Validierungsfehler Fehler, weil der Pfad Vendor.'name()'
auf eine Anwendungsmethode verweist, deren Logik nicht in eine direkte Datenbankabfrage übersetzt werden kann.
Beispiel 3: Datenbankabfrage
Wenn TaxTransaction als ER-Datenquelle vom Typ Tabellendatensätze konfiguriert ist, die auf die Tabelle TaxTrans verweist, sortiert der Ausdruck ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode)
Datensätze auf der Ebene der Anwendungsdatenbank und gibt eine Liste von Steuertransaktionen zurück, die in aufsteigender Reihenfolge nach Steuercode sortiert ist.
Beispiel 4: Abfragbare Datenquellen
Wenn TaxTransaction als ER-Datenquelle vom Typ Tabellendatensätze konfiguriert ist, die sich auf die Tabelle TaxTrans bezieht, kann die ER-Datenquelle TaxTransactionFiltered so konfiguriert werden, dass sie den Ausdruck FILTER(TaxTransaction, TaxCode="VAT19")
enthält, der Transaktionen für einen bestimmten Steuercode abruft. Da die konfigurierte TaxTransactionFiltered ER Datenquelle abfragbar ist, kann der Ausdruck ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate)
so konfiguriert werden, dass er die Liste der gefilterten Steuertransaktionen zurückgibt, die nach Transaktionsdatum in aufsteigender Reihenfolge sortiert ist.
Wenn Sie TaxTransactionOrdered als ER-Datenquelle vom Typ Berechnetes Feld konfigurieren, die den Ausdruck ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate)
enthält, und eine ER-Datenquelle vom Typ Berechnetes Feld, die den Ausdruck FILTER(TaxTransactionOrdered, TaxCode="VAT19")
enthält, tritt zur Entwurfszeit im Designer für die Zuordnung von ER-Modellen ein Validierungsfehler auf. Dieser Fehler tritt auf, weil das erste Argument der Funktion FILTER auf eine abfragbare ER-Datenquelle verweisen muss, aber die Datenquelle TaxTransactionOrdered, die die Funktion ORDERBY
enthält, ist nicht abfragbar.
Beispiel 5: Vergleichbarkeit
Voraussetzungen
- Geben Sie eine Datenquelle DS1 vom Typ Berechnetes Feld ein, die den Ausdruck
SPLIT ("D1|_D2|D3", "|")
enthält. - Öffnen Sie die Seite Finanzielle Dimensionswerte, und wählen Sie die Dimension CostCenter.
- Geben Sie die folgenden Werte für die Dimensionen ein: D1, _D2, und D3.
Sortieren im Speicher
- Konfigurieren Sie die Datenquelle DS2 vom Typ Berechnetes Feld, die den Ausdruck
ORDERBY("InMemory", DS1, DS1.Value)
enthält. - Beachten Sie, dass der Ausdruck
FIRST(DS2).Value
den Textwert „D1“ zurückgibt, der AusdruckINDEX(DS2, COUNT(DS2)).Value
den Textwert „D2“ und der AusdruckSTRINGJOIN(DS2, DS2.Value, "|")
den Textwert „D1|D3|_D2“ zurückgibt.
Sortieren in der Datenbank
- Geben Sie die Datenquelle DS3 vom Typ Tabellensätze ein, die auf die Entität FinancialDimensionValueEntity verweist.
- Konfigurieren Sie die Datenquelle DS4 des Typs Berechnetes Feld, die den Ausdruck
FILTER(DS3, DS3.FinancialDimension="CostCenter")
enthält. - Konfigurieren Sie die Datenquelle DS5 vom Typ Berechnetes Feld, die den Ausdruck
ORDERBY(DS4, DS4.DimensionValue)
enthält. - Beachten Sie, dass der Ausdruck
FIRST(DS5).Value
den Textwert „D2“, der AusdruckINDEX(DS5, COUNT(DS5)).Value
den Textwert „D3“ und der AusdruckSTRINGJOIN(DS5, DS5.Value, "|")
den Textwert „_D2|D1|D3“ zurückgibt.