ORDERBY, funkcja ER

Funkcja ORDERBY zwraca określoną listę jako wartość typu Lista rekordów po jej posortowaniu zgodnie z określonymi argumentami. Te argumenty można zdefiniować jako wyrażenia.

Składnia 1

ORDERBY (list, expression 1[, expression 2, …, expression N])

Składnia 2

ORDERBY (location, list, expression 1[, expression 2, …, expression N])

Banknot

Ta składnia jest obsługiwana przez Microsoft Dynamics 365 Finance w wersji 10.0.25 i nowszych.

Argumenty

location: Ciąg

Lokalizacja, w której ma być uruchamiane sortowanie. Poprawne są następujące opcje:

  • "Query"
  • "InMemory"

list: Lista rekordów

Prawidłowa ścieżka elementu źródła danych o typie danych Lista rekordów.

expression 1: Pole

Prawidłowa ścieżka pola źródła danych, do której odwołuje się argument list wywoływanej funkcji. Przywoływane pole musi być polem typu danych pierwotnych. Ten argument jest wymagany.

expression N: Pole

Prawidłowa ścieżka pola źródła danych, do której odwołuje się argument list wywoływanej funkcji. Przywoływane pole musi być polem typu danych pierwotnych. Te dodatkowe argumenty są opcjonalne.

Wartości zwracane

Lista rekordów

Wynikowa lista rekordów.

Uwagi dotyczące użytkowania

Składnia 1

Sortowanie danych jest zawsze wykonywane w pamięci serwera aplikacji. Aby uzyskać więcej szczegółów, zobacz przykład 1.

Składnia 2

Sortowanie w pamięci

Jeśli argument location jest określony jako InMemory, sortowanie danych jest wykonywane w pamięci serwera aplikacji. Aby uzyskać więcej szczegółów, zobacz przykład 2.

Sortowanie w bazie danych

Jeśli argument location zostanie określony jako Zapytanie, sortowanie danych jest wykonywane na poziomie bazy danych. W tym przypadku argument list musi wskazać jedno z następujących źródeł danych raportowania elektronicznego (ER), które określa źródło aplikacji, dla których może zostać utworzone bezpośrednie zapytanie bazy danych:

  • Źródło danych typu Rekordy tabeli
  • Relacja źródła danych typu Rekordy tabeli
  • Typ źródła danych typu Pole obliczeniowe

Argumenty expression 1 i expression N muszą wskazywać na pola źródła danych ER, które określają odpowiednie pola źródła aplikacji, dla których można również utworzyć bezpośrednie zapytanie do bazy danych.

Jeśli nie można utworzyć bezpośredniego zapytania do bazy danych, w projektancie odwzorowania modelu ER pojawia się błąd walidacji. Odebrany komunikat stwierdza, że wyrażenie ER zawierające funkcję ORDERBY nie może zostać uruchomione w czasie wykonywania.

Dla lepszej wydajności zalecamy użycie opcji Query, gdy sortowanie jest skonfigurowane dla źródeł danych aplikacji, które mogą zawierać dużą liczbę rekordów (na przykład dla tabel aplikacji transakcyjnych).

Banknot

Sama funkcja ORDEBY nie może być przetłumaczona na bezpośrednie zapytanie do bazy danych. Dlatego źródło danych ER, które zawiera tę funkcję, nie może być przedmiotem zapytań. Nie może być również użyty w zakresie funkcji ER takich jak FILTER i ALLITEMSQUERY, gdzie mogą być użyte tylko źródła danych, które można odpytywać.

Aby uzyskać więcej informacji, zobacz przykład 3 i przykład 4.

Porównywalność

Ponieważ silnik bazy danych SQL i serwer aplikacji Finanse mogą używać różnych wartości rankingu dla pojedynczego znaku, wynik sortowania tej samej listy rekordów może się różnić, gdy do sortowania używane jest pole String. Aby uzyskać więcej szczegółów, zobacz przykład 5.

Przykład 1: Domyślne wykonywanie w pamięci

Jeśli wprowadzisz źródło danych DS typu Pole obliczeniowe i zawiera ono wyrażenie SPLIT ("C|B|A", "|"), wyrażenie FIRST( ORDERBY( DS, DS. Value)).Value zwraca wartość tekstową "A".

Przykład 2: Wyraźne wykonywanie w pamięci

Jeśli opcja Vendor jest skonfigurowana jako źródło danych raportowania elektronicznego (ER) typu Rekordy tabeli, odwołujące się do tabeli VendTable, zarówno wyrażenie ORDERBY (Vendor, Vendor.'name()'), jak i ORDERBY ("InMemory", Vendor, Vendor.'name()') zwracają listę dostawców posortowaną według nazw w porządku rosnącym.

Kiedy konfigurujesz wyrażenie ORDERBY ("Query", Vendor, Vendor.'name()') w projektancie odwzorowania modelu ER, pojawia się błąd walidacji w czasie projektowania, ponieważ ścieżka Vendor.'name()' odnosi się do metody aplikacji, która posiada logikę, która nie może być przetłumaczona na bezpośrednie zapytanie do bazy danych.

Przykład 3: Kwerenda bazy danych

Jeśli TaxTransaction jest skonfigurowane jako źródło danych ER typu Rekordy tabeli, które odwołuje się do tabeli TaxTrans, wyrażenie ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode) rekordy na poziomie aplikacji bazy danych i zwraca listę transakcji podatkowych posortowanych rosnąco według kodu podatkowego.

Przykład 4: Źródła danych, które można przeszukiwać

Jeśli TaxTransaction jest skonfigurowane jako źródło danych ER typu Rekordy tabeli, które odwołuje się do tabeli TaxTrans, źródło danych ER TaxTransactionFiltered może być skonfigurowane tak, aby zawierało wyrażenie FILTER(TaxTransaction, TaxCode="VAT19"), które będzie pobierać transakcje dla określonego kodu podatkowego. Ponieważ skonfigurowane źródło danych TaxTransactionFiltered ER jest możliwe do przeszukania, wyrażenie ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate) może być skonfigurowane tak, aby zwrócić listę przefiltrowanych transakcji podatkowych posortowanych według daty transakcji w porządku rosnącym.

Jeśli skonfigurujesz TaxTransactionOrdered jako źródło danych ER typu Pole kalkulowane zawierające wyrażenie ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate) oraz źródło danych ER typu Pole kalkulowane zawierające wyrażenie FILTER(TaxTransactionOrdered, TaxCode="VAT19"), pojawia się błąd błąd w czasie projektowania w projektancie odwzorowania modelu ER. Ten błąd pojawia się, ponieważ pierwszy argument funkcji FILTER musi odwoływać się do źródła danych ER, ale źródło danych TaxTransactionOrdered, które zawiera funkcję ORDERBY, nie jest dostępne dla zapytań.

Przykład 5: Porównywaność

Wymagania wstępne

  1. Wprowadź źródło danych DS1 typu Pole obliczeniowe, które zawiera wyrażenie SPLIT ("D1|_D2|D3", "|").
  2. Otwórz stronę Wartości wymiaru finansowego i wybierz wymiar CostCenter.
  3. Wprowadź następujące wartości rozmiaru: D1, _D2 i D3.

Sortowanie w pamięci

  1. Skonfiguruj źródło danych DS2 o typie Pole kalkulowane, które zawiera wyrażenie ORDERBY("InMemory", DS1, DS1.Value).
  2. Zauważmy, że wyrażenie FIRST(DS2).Value zwraca wartość tekstową "D1", wyrażenie INDEX(DS2, COUNT(DS2)).Value zwraca wartość tekstową "_D2", a wyrażenie STRINGJOIN(DS2, DS2.Value, "|") zwraca wartość tekstową "D1D3D2".

Sortowanie w bazie danych

  1. Podaj źródło danych DS3 typu Rekordy tabeli, które odnosi się do encji FinancialDimensionValueEntity.
  2. Skonfiguruj źródło danych DS4 o typie Pole kalkulowane, które zawiera wyrażenie FILTER(DS3, DS3.FinancialDimension="CostCenter").
  3. Skonfiguruj źródło danych DS5 o typie Pole kalkulowane, które zawiera wyrażenie ORDERBY(DS4, DS4.DimensionValue).
  4. Zauważmy, że wyrażenie FIRST(DS5).Value zwraca wartość tekstową "_D2", wyrażenie INDEX(DS5, COUNT(DS5)).Value zwraca wartość tekstową "D3", a wyrażenie STRINGJOIN(DS5, DS5.Value, "|") zwraca wartość tekstową "_D2D1D3".

Dodatkowe zasoby

Lista funkcji