Einführung
Sie können eine DAX-Formel (Data Analysis Expressions) schreiben, um Ihrem Modell eine berechnete Tabelle hinzuzufügen. Mit der Formel können vorhandene Modelldaten dupliziert oder transformiert werden, um eine neue Tabelle zu erstellen.
Hinweis
Eine berechnete Tabelle kann keine Verbindung mit externen Daten herstellen. Zum Ausführen dieser Aufgabe müssen Sie Power Query verwenden.
Eine Formel für eine berechnete Tabelle muss ein Tabellenobjekt zurückgeben. Die einfachste Formel kann eine vorhandene Modelltabelle duplizieren.
Berechnete Tabellen haben jedoch auch Nachteile: Sie erhöhen die Größe des Modellspeichers und können zu einer längeren Datenaktualisierungszeit führen. Der Grund hierfür ist, dass berechnete Tabellen neu berechnet werden, wenn sie Formelabhängigkeiten zu aktualisierten Tabellen enthalten.
Duplizieren einer Tabelle
Im folgenden Abschnitt wird ein häufiges Problem beim Entwurf beschrieben, das durch das Erstellen einer berechneten Tabelle gelöst werden kann. Laden Sie zuerst die Datei Adventure Works DW 2020 M03.pbix herunter, und öffnen Sie sie. Wechseln Sie dann zum Modelldiagramm.
Beachten Sie, dass die Tabelle Sales im Modelldiagramm drei Beziehungen zur Tabelle Date aufweist.
Im Modelldiagramm werden drei Beziehungen angezeigt, da in der Tabelle „Sales“ Umsatzdaten nach Bestelldatum, Versanddatum und Fälligkeitsdatum gespeichert werden. Wenn Sie die Spalten OrderDateKey, ShipDateKey und DueDateKey untersuchen, beachten Sie, dass eine Beziehung durch eine durchgehende Linie dargestellt wird, die die aktive Beziehung widerspiegelt. Die anderen Beziehungen, die durch gestrichelte Linien dargestellt werden, sind inaktive Beziehungen.
Hinweis
Zwischen zwei Modelltabellen kann nur eine aktive Beziehung bestehen.
Zeigen Sie im Diagramm mit der Maus auf die aktive Beziehung, um die zugehörigen Spalten hervorzuheben. Auf diese Weise interagieren Sie mit dem Modelldiagramm, um weitere Informationen zu verwandten Spalten zu erhalten. In diesem Fall filtert die aktive Beziehung die Spalte OrderDateKey in der Tabelle Sales. Filter, die auf die Tabelle Date angewandt werden, führen somit in der Tabelle Sales zu einer Filterung nach Bestelldatum, nie nach Versanddatum oder Fälligkeitsdatum.
Der nächste Schritt besteht im Löschen der beiden inaktiven Beziehungen zwischen der Tabelle Date und der Tabelle Sales. Um eine Beziehung zu löschen, klicken Sie mit der rechten Maustaste darauf, und wählen Sie im Kontextmenü Löschen aus. Stellen Sie sicher, dass Sie beide inaktiven Beziehungen löschen.
Fügen Sie als Nächstes eine neue Tabelle hinzu, über die die Berichtsbenutzer Verkäufe nach dem Lieferdatum filtern können. Wechseln Sie zur Berichtsansicht, und wählen Sie dann auf der Registerkarte des Menübands Modellierung in der Gruppe Berechnungen die Option Neue Tabelle aus.
Geben Sie im Feld „Formel“ (unterhalb des Menübands) die folgende Definition einer berechneten Tabelle ein, und drücken Sie dann die Enter-Taste.
Ship Date = 'Date'
In der Definition der berechneten Tabelle werden die Daten aus der Tabelle Date dupliziert, sodass eine neue Tabelle mit dem Namen Ship Date entsteht. Die Tabelle Ship Date weist die gleichen Spalten und Zeilen wie die Tabelle Date auf. Wenn die Daten der Tabelle Date aktualisiert werden, wird die Tabelle Ship Date neu berechnet, sodass sie immer synchron ist.
Wechseln Sie zum Modelldiagramm, und beachten Sie, dass die Tabelle Ship Date hinzugefügt wurde.
Erstellen Sie als Nächstes eine Beziehung zwischen der Spalte DateKey in der Tabelle Ship Date und der Spalte ShipDateKey in der Tabelle Sales. Sie können die Beziehung erstellen, indem Sie die Spalte DateKey in der Tabelle Ship Date auf die Spalte ShipDateKey in der Tabelle Sales ziehen.
Eine berechnete Tabelle dupliziert nur Daten; sie dupliziert keine Modelleigenschaften oder Objekte wie Spaltensichtbarkeit oder Hierarchien. Bei Bedarf müssen Sie diese für die neue Tabelle konfigurieren.
Tipp
Die Spalten einer berechneten Tabelle können umbenannt werden. In diesem Beispiel empfiehlt es sich, die Spalten so umzubenennen, dass ihr Zweck besser beschrieben wird. Beispielsweise kann die Spalte Fiscal Year in der Tabelle Ship Date in Ship Fiscal Year umbenannt werden. Wenn Felder aus der Tabelle Ship Date in Visuals verwendet werden, werden ihre Namen dementsprechend automatisch in Beschriftungen wie den visuellen Titel oder die Achsenbezeichnungen eingeschlossen.
Um den Entwurf der Tabelle Ship Date abzuschließen, können Sie folgende Aktionen ausführen:
- Benennen Sie die folgenden Spalten um:
- Date in Ship Date
- Fiscal Year in Ship Fiscal Year
- Fiscal Quarter in Ship Fiscal Quarter
- Month in Ship Month
- Full Date in Ship Full Date
- Sortieren Sie die Spalte Ship Full Date nach der Spalte Ship Date.
- Sortieren Sie die Spalte Ship Month nach der Spalte MonthKey.
- Blenden Sie die Spalte MonthKey aus.
- Erstellen Sie eine Hierarchie mit dem Namen Fiscal und den folgenden Ebenen:
- Ship Fiscal Year
- Ship Fiscal Quarter
- Ship Month
- Ship Full Date
- Markieren Sie die Tabelle „Ship Date“ über die Spalte Ship Date als Datumstabelle.
Berechnete Tabellen sind nützlich in Szenarien mit mehreren Beziehungen zwischen zwei Tabellen, wie zuvor beschrieben. Sie können auch verwendet werden, um Ihrem Modell eine Datumstabelle hinzuzufügen. Datumstabellen sind erforderlich, um besondere Zeitfilter anzuwenden, die als Zeitintelligenz bezeichnet werden.
Erstellen einer Datumstabelle
Im nächsten Beispiel wird eine zweite berechnete Tabelle erstellt, diesmal mithilfe der DAX-Funktion CALENDARAUTO
.
Erstellen Sie mithilfe der folgenden Definition die berechnete Tabelle Due Date.
Due Date = CALENDARAUTO(6)
Die CALENDARAUTO
DAX-Funktion nimmt ein einzelnes optionales Argument entgegen, nämlich die letzte Monatsnummer des Jahres, und gibt eine einspaltige Tabelle zurück. Wenn Sie keine Monatsnummer übergeben, wird sie als 12 (für Dezember) angenommen. Bei Adventure Works endet das Geschäftsjahr beispielsweise am 30. Juni jedes Jahres, sodass der Wert 6 (für Juni) übergeben wird.
Die-Funktion durchläuft alle Datums- und Datums-/Uhrzeit-Spalten in Ihrem Modell, um die frühesten und spätesten gespeicherten Datumswerte zu ermitteln. Anschließend wird ein vollständiger Satz von Datumsangaben erzeugt, der alle Datumsangaben in Ihrem Modell umfasst, sodass sichergestellt wird, dass Datumsangaben für vollständige Jahre geladen werden. Wenn beispielsweise das früheste in Ihrem Modell gespeicherte Datum der 15. Oktober 2021 ist, lautet das erste von der CALENDARAUTO
-Funktion zurückgegebene Datum 1. Juli 2021. Wenn das späteste in Ihrem Modell gespeicherte Datum der 15. Juni 2022 ist, lautet das letzte von der CALENDARAUTO
-Funktion zurückgegebene Datum 30. Juni 2022.
Gleichzeitig gewährleistet die CALENDARAUTO
-Funktion, dass die folgenden Anforderungen zum Markieren einer Datumstabelle erfüllt sind:
- Die Tabelle muss eine Spalte vom Datentyp Date enthalten.
- Die Spalte muss vollständige Jahre enthalten.
- In der Spalte dürfen keine Datumsangaben fehlen.
Tipp
Sie können auch eine Datumstabelle erstellen, indem Sie die CALENDAR
-DAX-Funktion erstellen und zwei Datumswerte übergeben, die den Datumsbereich darstellen. Die Funktion generiert eine Zeile für jedes Datum innerhalb des Bereichs. Sie können statische Datumswerte übergeben oder Ausdrücke, die die frühesten/spätesten Datumsangaben aus bestimmten Spalten in Ihrem Modell abrufen.
Wechseln Sie als Nächstes zur Datenansicht, und wählen Sie dann im Bereich Felder die Tabelle Due Date aus. Überprüfen Sie nun die Spalte mit den Datumsangaben. Sie können sie sortieren, sodass das früheste Datum in der ersten Zeile angezeigt wird, indem Sie den Pfeil im Spaltenheader Date auswählen und dann in aufsteigender Reihenfolge sortieren.
Hinweis
Durch das Sortieren oder Filtern von Spalten wird die Speicherung der Werte nicht geändert. Diese Funktionen helfen Ihnen dabei, die Daten zu untersuchen und zu verstehen.
Nachdem Sie nun die Spalte Date ausgewählt haben, überprüfen Sie die Meldung auf der Statusleiste (in der linken unteren Ecke). Sie beschreibt, wie viele Zeilen in der Tabelle gespeichert sind und wie viele unterschiedliche Werte in der ausgewählten Spalte zu finden sind.
Wenn die Anzahl der Tabellenzeilen und die der verschiedenen Werte übereinstimmen, enthält die Spalte nur eindeutige Werte. Diese Tatsache ist aus zwei Gründen wichtig: Durch sie sind die Anforderungen zum Markieren einer Datumstabelle erfüllt, und es ist möglich, diese Spalte in einer Modellbeziehung als 1-Seite zu verwenden.
Die berechnete Tabelle Due Date wird jedes Mal neu berechnet, wenn eine Tabelle mit einer Datumsspalte aktualisiert wird. Wenn eine Zeile in die Tabelle Sales mit dem Bestelldatum 1. Juli 2022 geladen wird, bedeutet dies, dass die Tabelle Due Date automatisch um Datumsangaben bis zum Ende des nächsten Jahres erweitert wird: 30. Juni 2023.
Die Tabelle Due Date erfordert zusätzliche Spalten zur Unterstützung der bekannten Filter- und Gruppierungsanforderungen, insbesondere nach Jahr, Quartal und Monat.