2.1 Tabellen mithilfe von DAX-Funktionen erstellen
2.1.1 Erstellen eines eigenen Datum-Measures
Wozu wird solch ein Datum-Measure überhaupt benötigt? Die Antwort ist einfach. Werden die Daten aus den zugrundeliegenden Datenquellen aktualisiert, dann sollte dies auch irgendwo dokumentiert werden. Hierzu dient das Datum-Measure. Eingefügt auf den entsprechenden Seiten wird so die Aktualität der Daten ersichtlich.
DAX steht für Data Analysis Expressions, dieselbe Formelsprache, die auch in Power Pivot verwendet wird.
Um das Datum-Measure anzulegen, geht man folgendermaßen vor: Registerkarte "Start" | Daten abrufen | Mehr | Sonstige | Leere Abfrage | "Verbinden" klicken
Es öffnet sich der Abfrage-Editor:
- Hier wird dieser Abfrage ein neuer Name gegeben: Aktualisierung. Dies geschieht bei den Abfrageeinstellungen bei Eigenschaften | Name.
- Nun kommt wieder eine DAX-Funktion zum Einsatz, mit der das aktuelle Systemdatum und die aktuelle Systemzeit abgerufen werden können.
- Sollte die Eingabeleiste, in die die Funktion eingegeben wird, nicht zu sehen sein, wechseln Sie in die Registerkarte "Ansicht" und aktivieren das Kontrollkästchen bei "Bearbeitungsleiste".
- Klicken Sie in die Bearbeitungsleiste und geben die folgende Formel ein. Achten Sie dabei auf die Groß-/Kleinschreibung: = DateTime.ToText(DateTime.FixedLocalNow(),"ddd, dd.MM.yyyy, HH:mm:ss \U\h\r", "de-DE")
Was besagt diese Funktion, bzw. wie ist diese Funktion aufgebaut?
"DateTime.FixedLocalNow()" gibt die momentane Zeit zurück: 2018-09-17T12:36:33.0212123.
Diese Funktion wird mit der Funktion "DateTime.ToText()" in einen Text umgewandelt, was wiederum die Möglichkeit eröffnet, das Datum mit Uhrzeit entsprechend zu formatieren.
ddd = Anzeige des Tages mit 3 Zeichen
dd = Anzeige des Tages in Ziffern mit führender Null
MM = Anzeige des Monats in Ziffern mit führender Null
yyyy = Anzeige des 4-stelligen Jahresdatums
HH = Anzeige der Stunden mit führender Null
mm = Anzeige der Minuten mit führender Null
ss = Anzeige der Sekunden mit führender Null
\U\h\r = Anzeige des Textes "Uhr"
de-DE = Lokalisierung des Datums
Wird die Funktion bestätigt, wird die kontextsensitive Registerkarte "Texttools" angezeigt.
- Klicken Sie bei "Konvertieren" auf "Zu Tabelle" und das Datum wird in eine Tabelle konvertiert.
Abb. 9: Datum in Tabelle konvertieren
- Benennen Sie dann die Beschriftung "Column1" in "Datum" um.
Nun muss dieses Datum auch hier in der Tabelle in einen Text umgeformt werden.
- Klicken Sie auf das Icon "ABC123" und ändern Sie den Datentyp auf "Text".
- Schließen und übernehmen Sie jetzt diese Tabelle.
Zu einem späteren Zeitpunkt wird auf diese Funktion noch zurückgegriffen werden.
2.1.2 Erstellen einer dynamischen Kalendertabelle
Die dynamische Kalendertabelle wird benötigt, um die Aufträge nach Datum darstellen zu können. Wieso dynamisch? Die Besonderheit besteht darin, dass sich der Datumsbereich am kleinsten und am größten Auftragsdatum orientiert und so immer den optimalen Zeitraum zur Verfügung stellt.
Erstellen Sie hierzu eine neue Tabelle, die den Namen "DAX-Kalender" tragen soll. Basis für den Bereich des verwendeten Datums ist die Tabelle "faktAuftrag". Um den DAX-Kalender dynamisch halten zu können, wird der Beginn durch das kleinste Datum und das Ende durch das größte Datum bestimmt. Hierzu werden die DAX-Funktionen DATE, YEAR und MIN bzw. MAX verwendet. Beim Eingeben der Funktion werden Sie durch Dropdown-Listen unterstützt. Die fertige Funktion sieht dann folgendermaßen aus:
DAX-Kalender = CALENDAR(DATE(YEAR(MIN(faktAuftrag[Auftragsdatum]));1;1);DATUM(YEAR(MAX(faktAuftrag[Auftragsdatum]));12;31)) |
Die Spalte DAX-Kalender bildet die Zeitbasis für die anderen Spalten wie Jahr, Halbjahr, Monatsnamen und Quartal/Jahr, die Sie wie folgt einfügen können:
- Fügen Sie eine neue Spalte ein und geben Sie die folgende DAX-Funktion ein: Jahr = YEAR('DAX-Kalender'[Datum])
- Fügen Sie eine weitere Spalte ein, die das Halbjahr aufnehmen soll. HJ/Jahr = IF(MONTH('DAX-Kalender'[Datum])<=6;1;2) & ".HJ/" & 'DAX-Kalender'[Jahr]
- Die nächste neue Spalte soll die Monatsnamen anzeigen: Monatsname = FORMAT('DAX-Kalender'[Datum];"MMM")
- Eine weitere Spalte soll Quartal und Jahr anzeigen: Quartal/Jahr = FORMAT('DAX-Kalender'[Datum].[Quartal];"") & "/"& 'DAX-Kalender'[Jahr]
- Monatsanzahl = MONTH('DAX-Kalender'[Datum].[MonthNo])
Bei den erstellten Spalten handelt es sich um berechnete Spalten, mit Ausnahme der Spalte Datum. Dies ist auch schön an dem entsprechenden Symbol vor dem Spaltennamen erkennbar.
Abb. 10: Dynamische Kalendertabelle erstellen
2.2 Erstellen einer Währungstabelle
Da die Firma Workshop AG international agiert, orientiert sie sich bei der Abgabe von Angeboten an den aktuellen Devisenkursen. Um diese Kurse nicht manuell eingeben zu müssen, wird auf die Wechselkurse zurückgegriffen, die im Internet frei verfügbar abgerufen werden können. Hierzu wird eine dynamische Währungstabelle benötigt, deren Erstellung nachstehend beschrieben wird. Diese Erstellung erfolgt mithilfe des Abfrageeditors.