Wprowadzenie

Ukończone

Możesz napisać formułę języka DAX (Data Analysis Expressions), aby dodać tabelę obliczeniową do modelu. Formuła może duplikować lub przekształcać istniejące dane modelu w celu wygenerowania nowej tabeli.

Uwaga

Tabela obliczeniowa nie może łączyć się z danymi zewnętrznymi. W tym celu należy użyć dodatku Power Query.

Formuła tabeli obliczeniowej musi zwracać obiekt tabeli. Najprostsza formuła może duplikować istniejącą tabelę modelu.

Tabele obliczeniowe mają koszt: Zwiększają one rozmiar magazynu modelu i mogą wydłużyć czas odświeżania danych. Przyczyną jest to, że tabele obliczeniowe są ponownie obliczane, gdy mają zależności formuły w odświeżanych tabelach.

Duplikowanie tabeli

W poniższej sekcji opisano typowe wyzwania projektowe, które można rozwiązać przez utworzenie tabeli obliczeniowej. Najpierw należy pobrać i otworzyć plik Adventure Works DW 2020 M03.pbix, a następnie przełączyć się na diagram modelu.

Na diagramie modelu zwróć uwagę, że tabela Sales (Sprzedaż ) ma trzy relacje z tabelą Date (Data ).

Diagram modelu przedstawia trzy relacje, ponieważ w tabeli Sales (Sprzedaż) dane sprzedaży są przechowywane według daty zamówienia, daty wysyłki i daty ukończenia. Analizując kolumny OrderDateKey (Klucz daty zamówienia), ShipDateKey (Klucz daty wysyłki) i DueDateKey (Klucz terminu) można zauważyć, że jedna relacja jest reprezentowana przez linię ciągłą, która oznacza aktywną relację. Pozostałe relacje, które są reprezentowane przez linie przerywane, są nieaktywnymi relacjami.

Uwaga

Między dowolnymi dwiema tabelami modelu może istnieć tylko jedna aktywna relacja.

Na diagramie umieść kursor na aktywnej relacji, aby wyróżnić powiązane kolumny, co umożliwia interakcję z diagramem modelu w celu uzyskania dodatkowych informacji o powiązanych kolumnach. W takim przypadku aktywna relacja filtruje kolumnę OrderDateKey w tabeli Sales . W związku z tym filtry stosowane do tabeli Date będą propagowane do tabeli Sales w celu filtrowania według daty zamówienia; nigdy nie będą filtrować według daty wysyłki lub daty ukończenia.

Następnym krokiem jest usunięcie dwóch nieaktywnych relacji między tabelą Date i tabelą Sales . Aby usunąć relację, kliknij ją prawym przyciskiem myszy i wybierz polecenie Usuń z menu kontekstowego. Upewnij się, że obie nieaktywne relacje zostały usunięte.

Następnie dodaj nową tabelę, aby umożliwić użytkownikom raportów filtrowanie sprzedaży według daty wysyłki. Przejdź do widoku Raport, a następnie na karcie wstążki Modelowanie w grupie Obliczenia wybierz pozycję Nowa tabela.

Na pasku formuły (znajdującym się pod wstążką) wprowadź następującą definicję tabeli obliczeniowej, a następnie naciśnij klawisz Enter.

Ship Date = 'Date'

Definicja tabeli obliczeniowej duplikuje dane tabeli Date (Data) w celu utworzenia nowej tabeli o nazwie Ship Date (Data wysyłki). Tabela Ship Date (Data wysyłki) zawiera dokładnie te same kolumny i wiersze co tabela Date (Data). Po odświeżeniu danych tabeli Date (Data wysyłki) tabela Ship Date (Data wysyłki ) zostanie ponownie obliczona, aby zawsze były zsynchronizowane.

Przejdź do diagramu modelu, a następnie zwróć uwagę na dodanie tabeli Ship Date (Data wysyłki ).

Następnie utwórz relację między kolumną DateKey w tabeli Ship Date (Data wysyłki ) i kolumną ShipDateKey (Klucz wysyłki ) w tabeli Sales (Sprzedaż ). Relację można utworzyć, przeciągając kolumnę DateKey w tabeli Ship Date (Data wysyłki ) do kolumny ShipDateKey w tabeli Sales (Sprzedaż ).

Tabela obliczeniowa duplikuje tylko dane; nie duplikuje żadnych właściwości ani obiektów modelu, takich jak widoczność kolumny lub hierarchie. W razie potrzeby należy je skonfigurować dla nowej tabeli.

Porada

Istnieje możliwość zmiany nazwy kolumn tabeli obliczeniowej. W tym przykładzie zmiana nazw kolumn jest dobrym pomysłem, aby lepiej opisać ich przeznaczenie. Na przykład kolumna Fiscal Year (Rok obrachunkowy ) w tabeli Ship Date (Data wysyłki ) może zostać zmieniona na Ship Fiscal Year (Rok obrachunkowy wysyłki). W związku z tym, gdy pola z tabeli Ship Date są używane w wizualizacjach, ich nazwy są automatycznie uwzględniane w podpisach, takich jak tytuł wizualizacji lub etykiety osi.

Aby ukończyć projektowanie tabeli Ship Date (Data wysyłki ), możesz wykonać następujące czynności:

  • Zmienić nazwy następujących kolumn:
    • Date (Data) na Ship Date (Data wysyłki);
    • Fiscal Year (Rok obrachunkowy) jako Ship Fiscal Year (Rok obrachunkowy wysyłki);
    • Fiscal Quarter (Kwartał obrachunkowy) na Ship Fiscal Quarter (Kwartał obrachunkowy wysyłki);
    • Month (Miesiąc) na Ship Month (Miesiąc wysyłki);
    • Full Date (Pełna data) na Ship Full Date (Pełna data wysyłki).
  • Posortuj kolumnę Ship Full Date (Pełna data wysyłki) według kolumny Ship Date (Data wysyłki).
  • Posortuj kolumnę Ship Month (Miesiąc wysyłki) według kolumny MonthKey (Klucz miesiąca).
  • Ukryj kolumnę MonthKey (Klucz miesiąca).
  • Utwórz hierarchię o nazwie Fiscal (Obrachunkowe) z następującymi poziomami:
    • Ship Fiscal Year (Rok obrachunkowy wysyłki)
    • Ship Fiscal Quarter (Kwartał obrachunkowy wysyłki)
    • Ship Month (Miesiąc wysyłki)
    • Ship Full Date (Pełna data wysyłki)
  • Oznacz tabelę Ship Date (Data wysyłki) jako tabelę dat przy użyciu kolumny Ship Date (Data wysyłki).

Tabele obliczeniowe są przydatne w scenariuszach, w których istnieje wiele relacji między tabelami, jak opisano wcześniej. Za ich pomocą można również dodać tabelę dat do modelu. Tabele dat są wymagane do zastosowania specjalnych filtrów czasu, które są znane jako analiza czasowa.

Tworzenie tabeli dat

W następnym przykładzie zostanie utworzona druga tabela obliczeniowa, tym razem przy użyciu CALENDARAUTO funkcji języka DAX.

Twórca tabeli obliczeniowej Due Date (Data ukończenia) przy użyciu poniższej definicji.

Due Date = CALENDARAUTO(6)

Funkcja CALENDARAUTO języka DAX przyjmuje jeden opcjonalny argument, który jest numerem ostatniego miesiąca roku i zwraca tabelę jednokolumna. Jeśli numer miesiąca nie zostanie przekazany, przyjmowany jest numer 12 (dla grudnia). Na przykład w firmie Adventure Works rok finansowy kończy się 30 czerwca każdego roku, dlatego przekazywana jest wartość 6 (dla czerwca).

Funkcja skanuje wszystkie kolumny daty i daty/godziny w modelu, aby określić najwcześniejszą i najpóźniejszą przechowywaną wartość daty. Następnie tworzy pełny zestaw dat, które obejmują wszystkie daty w modelu, zapewniając załadowanie pełnych lat dat. Jeśli na przykład najwcześniejsza data przechowywana w modelu to 15 października 2021 r., pierwsza data zwrócona przez CALENDARAUTO funkcję to 1 lipca 2021 r. Jeśli najnowsza data przechowywana w modelu to 15 czerwca 2022 r., ostatnia data zwrócona przez CALENDARAUTO funkcję to 30 czerwca 2022 r.

Skutecznie funkcja gwarantuje, CALENDARAUTO że spełnione są następujące wymagania dotyczące oznaczania tabeli dat :

  • Tabela musi zawierać kolumnę, której typ danych to Date (Data).
  • Kolumna musi zawierać pełne lata.
  • W kolumnie nie może być brakujących dat.

Porada

Możesz również utworzyć tabelę dat przy użyciu CALENDAR funkcji języka DAX i przekazać dwie wartości daty, które reprezentują zakres dat. Ta funkcja generuje jeden wiersz dla każdej daty w zakresie. Można przekazać statyczne wartości dat lub przekazać wyrażenia, które pobierają najwcześniejszą/najpóźniejszą datę z określonych kolumn w modelu.

Następnie przejdź do widoku danych, a następnie w okienku Pola wybierz tabelę Data ukończenia . Teraz przejrzyj kolumnę dat. Warto uporządkować je, aby najwcześniejsza data była wyświetlana w pierwszym wierszu, wybierając strzałkę w nagłówku kolumny Date (Data) i sortując je w kolejności rosnącej.

Uwaga

Porządkowanie lub filtrowanie kolumn nie zmienia sposobu przechowywania wartości. Te funkcje ułatwiają eksplorowanie i zrozumienie danych.

Teraz, gdy kolumna Date (Data) jest zaznaczona, sprawdź komunikat na pasku stanu (znajdującym się w lewym dolnym rogu). Zawiera on informację o liczbie wierszy przechowywanych w tabeli oraz liczbie unikatowych wartości znajdujących się w wybranej kolumnie.

Gdy liczby wierszy w tabeli i unikatowych wartości są takie same, oznacza to, że kolumna zawiera wartości unikatowe. Ten czynnik jest istotny z dwóch powodów: Spełnia wymagania dotyczące oznaczania jako tabela dat i umożliwia używanie tej kolumny w relacji modelu jako strony jednego elementu.

Tabela obliczeniowa Due Date (Data ukończenia ) będzie ponownie obliczana przy każdym odświeżeniu tabeli zawierającej kolumnę dat. Innymi słowy, gdy wiersz zostanie załadowany do tabeli Sales (Sprzedaż ) z datą zamówienia z 1 lipca 2022 r., tabela Due Date (Data ukończenia ) zostanie automatycznie rozszerzona o daty do końca następnego roku: 30 czerwca 2023 r.

Tabela Due Date (Data ukończenia ) wymaga dodatkowych kolumn do obsługi znanych wymagań dotyczących filtrowania i grupowania, w szczególności według roku, kwartału i miesiąca.