Freigeben über


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

  1. Geben Sie eine Datenquelle DS1 vom Typ Berechnetes Feld ein, die den Ausdruck SPLIT ("D1|_D2|D3", "|") enthält.
  2. Öffnen Sie die Seite Finanzielle Dimensionswerte, und wählen Sie die Dimension CostCenter.
  3. Geben Sie die folgenden Werte für die Dimensionen ein: D1, _D2, und D3.

Sortieren im Speicher

  1. Konfigurieren Sie die Datenquelle DS2 vom Typ Berechnetes Feld, die den Ausdruck ORDERBY("InMemory", DS1, DS1.Value) enthält.
  2. Beachten Sie, dass der Ausdruck FIRST(DS2).Value den Textwert „D1“ zurückgibt, der Ausdruck INDEX(DS2, COUNT(DS2)).Value den Textwert „D2“ und der Ausdruck STRINGJOIN(DS2, DS2.Value, "|") den Textwert „D1|D3|_D2“ zurückgibt.

Sortieren in der Datenbank

  1. Geben Sie die Datenquelle DS3 vom Typ Tabellensätze ein, die auf die Entität FinancialDimensionValueEntity verweist.
  2. Konfigurieren Sie die Datenquelle DS4 des Typs Berechnetes Feld, die den Ausdruck FILTER(DS3, DS3.FinancialDimension="CostCenter") enthält.
  3. Konfigurieren Sie die Datenquelle DS5 vom Typ Berechnetes Feld, die den Ausdruck ORDERBY(DS4, DS4.DimensionValue) enthält.
  4. Beachten Sie, dass der Ausdruck FIRST(DS5).Value den Textwert „D2“, der Ausdruck INDEX(DS5, COUNT(DS5)).Value den Textwert „D3“ und der Ausdruck STRINGJOIN(DS5, DS5.Value, "|") den Textwert „_D2|D1|D3“ zurückgibt.

Zusätzliche Ressourcen

Listenfunktionen