Używanie funkcji filtrów zamiast funkcji ciągów czasowych

W tym temacie opisano różnice między funkcjami ciągów czasowych a funkcjami filtrów, a także wyjaśniono, jak implementować funkcje filtrów. Te informacje dotyczą zarówno skoroszytów, jak i klasycznych pulpitów informacyjnych.

Funkcje ciągów czasowych a funkcje filtrów

Funkcje ciągów czasowych Ago i Todate oferują prosty sposób tworzenia miar służących do obliczania wartości takich jak year-ago, year-to-date itp. Ta metoda dobrze sprawdza się w raportach dla użytkowników biznesowych, jednak funkcje te generują złożone zapytania, które znacząco obniżają wydajność. Ponadto za każdym razem, gdy jedna z tych funkcji jest używana w raporcie, jest generowane dodatkowe zapytanie podrzędne, które zużywa jeszcze więcej zasobów w bazie danych.

W klasycznych pulpitach informacyjnych zazwyczaj można uzyskać wyniki odpowiadające wynikom użycia funkcji ciągów czasowych, używając miar podstawowych z funkcją Filter w celu wykonania filtrowania w odpowiednim okresie. Ta metoda może być zbyt złożona, aby używać jej w raportach dla użytkowników biznesowych, ale dobrze sprawdza się w przypadku pulpitów informacyjnych predefiniowanych przez zespół IT. Gdy jest używana ta metoda, generowany fizyczny kod SQL jest znacznie prostszy i bardziej efektywny, a ponadto nie jest wymagane dodatkowe zapytanie podrzędne. Oznacza to, że zapytanie SQL działa szybciej i zużywa mniej zasobów w bazie danych, co spowoduje zmniejszenie ogólnego użycia CPU bazy danych oraz liczby wywołań we-wy.

Na poniższym rysunku pokazano przykład fizycznego zapytania wygenerowanego, gdy w tym samym raporcie jest używana zarówno miara podstawowa, jak i miara Ago miesiąca. Generowane są dwa zapytania.

Opis "GUID-37245A7E-00E9-4071-9627-1A5BAED91311-default.jpg" znajduje się poniżej
.jpg"

Na poniższym rysunku znajduje się kod SQL wygenerowany dla pojedynczego zapytania w przypadku, gdy zamiast tego zostanie użyta funkcja Filter.

Opis "GUID-F1D33998-F8D4-40BF-B630-6EDCEF1DCEFC-default.jpg" znajduje się poniżej
.jpg"

Implementacja funkcji filtrów w pulpicie informacyjnym przy użyciu filtrów monitujących

W większości implementacji pulpit informacyjny zawiera już filtr monitujący, dzięki czemu użytkownicy mogą wybrać miesiąc, którego szukają. W pierwszym kroku należy na podstawie opcji wybranych przez użytkownika zidentyfikować okresy, dla których ma odbywać się filtrowanie.

W tym przykładzie wymiar kalendarza zawiera kolumnę Julian Period Number, co ułatwi obliczenia. Można to też zrobić bez kolumny Julian Period Number, ale wymagałoby to użycia bardziej złożonych formuł w celu obliczenia wybranych okresów.

  1. Zmodyfikować filtr monitujący Month, aby dodać zmienną prezentacyjną (MonthSelected).

    Opis "GUID-DEEBC7D1-806C-48E9-965C-6131745A65CE-default.png" znajduje się poniżej
    .png"

  2. Utworzyć osobny filtr monitujący pulpitu informacyjnego, aby pobrać odpowiednią wartość Julian Period Number i umieścić ją w innej zmiennej (PeriodNumberSelected). Ten drugi filtr monitujący nie jest pokazywany użytkownikowi końcowemu, ale jest ukryty na pulpicie informacyjnym, a wartość jest obliczana automatycznie na podstawie zmiennej MonthSelected.

    Opis "GUID-D41AE43F-CD62-498D-B041-9700D586BF77-default.png" znajduje się poniżej
    .png"

  3. Edytować właściwości pulpitu informacyjnego i kliknąć Filtry i zmienne.
  4. Dodać ścieżkę filtra monitującego Julian Period.

    Opis "GUID-E46E926E-F0A3-4934-9D10-F0119B9109DF-default.jpg" znajduje się poniżej
    .jpg"

  5. W obszarze analizy usunąć filtr globalny z kolumny Month i użyć funkcji filtra formuł kolumny na podstawie wymaganej wartości Julian Period Number. Poniżej przedstawiono kilka przykładów:

    Current Month: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800})

    Month Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-1)

    Year Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-12)

    Year to date: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"<=@{PeriodNumberSelected}{80800} and “Time”.”Year”=@{YearSelected}{2019})

Implementacja funkcji filtrów w skoroszycie przy użyciu parametrów

Tę samą zasadę można stosować w skoroszycie. Filtry monitujące i zmienne prezentacyjne są zastępowane przez filtr i parametry pulpitu informacyjnego.

Należy utworzyć trzy parametry: MonthSelected, PeriodNumberSelected i YearSelected. Na kanwie w filtrze pulpitu informacyjnego jest wyświetlany tylko parametr "MonthSelected".

Możliwe wartości parametru "MonthSelected" są definiowane na podstawie logicznego zapytania SQL wybierającego wszystkie miesiące.

W przypadku parametrów "PeriodNumberSelected" i "YearSelected" możliwe wartości nie są wypełniane.Opis "GUID-B0D153C1-7DDF-445F-BF09-7E21EBECB88B-default.jpg" znajduje się poniżej
.jpg"

Tylko wartość początkowa jest wypełniana za pomocą zapytania logicznego filtrowanego na podstawie wartości parametru MonthSelected.Opis "GUID-C21AC2BA-E3B8-43BC-A812-517A074DBFA2-default.jpg" znajduje się poniżej
.jpg"