Mit Hilfe von berechneten Spalten können neue Spalten im Data Warehouse erstellt und gefüllt werden. Dabei werden sie für jede neu hinzugefügte Zeile einer Tabelle neu berechnet. Eine Funktionsänderung führt dazu, dass alle Zeilen einer Tabelle mit der neuen Berechnungsvorschrift aktualisiert werden. Wie man eine neue berechnete Spalte hinzufügt, wird in diesem Dokument beschrieben.
Im Data Warehouse sind drei verschiedene Datentypen definiert: Zahlen, Text und Datum. Mit diesen können verschiedene Rechenoperationen durchgeführt werden.
Typ | Beispiel |
---|---|
Zahl | -123.45 |
Text | "Text" |
Datum | YYYY-MM-DD HH:MM:SS |
Für verschiedene Rechenoperationen werden Referenzen auf andere Datentabellenwerte verwendet. Dabei wird auf die gleiche Zeile in einer anderen Spalte verwiesen.
Referenz | Beispiel |
---|---|
Ein Wertverweis liest einen Wert aus der aktuellen Zeile in der angegebenen Spalte und wird für direkte Berechnungen verwendet. | $2 (Wert in gleicher Zeile inSpalte 2) |
Die folgende Tabelle enthält alle verfügbaren Rechenoperationen mit Beispielen:
Funktion | Beschreibung | Beispiel |
---|---|---|
Addition | sum(a Zahl,...) Summiert eine beliebige Anzahl Werte in einer Zeile.sum(date Datum, seconds Zahl) Addiert/Subtrahiert die angegebene Anzahl Sekunden zu einem Datum. | sum($0,$5,10) Summiert Spalten 0, 5 und 10 auf. sum($0, -60) Zieht 60 Sekunden eines Datums ab. |
Differenz | diff(a Zahl, b Zahl) Berechnet die Differenz zweier Werte. diff(a Datum, b Datum) Berechnet die Differenz zwischen zwei Zeitstempeln in Sekunden. | diff($0, 50) Zieht den Wert 50 von Spalte 0 ab. diff($1,$2) Gibt die Differenz zwischen zwei Zeitstempeln zurück. |
Multiplikation | mul(a Zahl,b Zahl) Multipliziert zwei Werte miteinander. | mul($0, 10) Multipliziert Spalte 0 mit 10. |
Division | div(a Zahl, b Zahl) Dividiert zwei Werte miteinander. | div($0, 10) Dividiert Spalte 0 durch die Zahl 10. |
Mittelwert | avg(a Zahl, ...) Berechnet den Mittelwert einer beliebigen Anzahl von Werten. | avg($0, $5, 10) Berechnet Mittelwert aus Spalte 0,5 und 10. |
Minimum | min(a Zahl, ...) Berechnet das Minimum einer beliebigen Anzahl von Werten. | min($0, $5, $10) Berechnet Minimum aus Spalte 0, 5 und 10. |
Maximum | max(a Zahl, ...) Berechnet das Maximum einer beliebigen Anzahl von Werten. | max($0, $5, $10) Berechnet Maximum aus Spalte 0, 5 und 10. |
Absolutwert | abs(a Zahl) Berechnet den Absolutwert einer Zahl. | abs(-1) Gibt den Wert 1 zurück. |
Runden | round(col Spalte) Gibt eine gerundete Zahl zurück. | |
Wurzel | sqrt(a Zahl) Berechnet die Wurzelfunktion einer Zahl | sqrt($0) Wurzel des Wertes in Spalte 0. |
Alle Berechnungsfunktionen mit Bezug auf ein Datum sind in der folgenden Tabelle aufgelistet:
Funktion | Beschreibung | Beispiel |
---|---|---|
Stunden/Minuten aus Datum | time(col Spalte) Rückgabe der Stunden und Minuten eines Datums (Datum und Uhrzeit). | time ($2) Die Funktion gibt die Zahl 830 zurück, wenn in Spalte 2 derselben Zeile die Zeit "08:30" steht. |
Datumsteil aus Datum | date(col Spalte) Rückgabe des Kalendertags, Monat und Jahr ohne Uhrzeit. | date($2) Die Funktion gibt die Datumsangabe zurück, zum Beispiel "18.06.2024 00:00:00". |
Wochentag | weekday(col Spalte) 1 bei Wochenende, sonst 0Gibt zurück, ob ein Datum auf ein Wochenende fällt. | weekday($2) Wenn in Spalte 2 der gleichen Zeile ein Datum steht, das ein Montag ist, liefert die Funktion 1. |
Wochenende | weekend(col Spalte) Gibt den Tag der Woche zurück0 für Montag, 6 für Sonntag Rückgabe eines numerischen Wertes für den Tag der Woche. | weekend($2) Wenn in Spalte 2 der gleichen Zeile ein Datum steht, das ein Sonntag oder ein Samstag ist, liefert die Funktion 1. |
Zeitangabe runden | round(col Spalte) Rückgabe der gerundeten Zeit (in Stunden, Minuten, Sekunden). | round($2) Die Funktion gibt die gerundeten Minuten aus, wenn in Spalte 2 der gleichen Zeile ein Datum steht. |
In der folgenden Tabelle sind alle Funktionen mit Bezug zu logischen Operationen gelistet.
Funktion | Beschreibung | Beispiel |
---|---|---|
Werte zuweisen | match(col Spalte, wenn1, dann1,wenn2, dann2, ...,[,default]) Prüft, ob eine Spalte mehrere Kriterien erfüllt. Der Standardwert wird verwendet, wenn kein Kriterium zutrifft. | match($2, 0, "Nachtschicht", 1, "Tagschicht", 2, "Spätschicht") Bei einem Eintrag mit dem Wert 0 in der dritten Spalte wird in der neuen Spalte der Text ”Nachtschicht” eingetragen - bei einem Eintrag mit dem Wert 1 wird “Tagschicht” eingetragen |
Wertebereich zuweisen | matchrange(col Spalte, von1, bis1, dann1, von2, bis2, dann2,...[, default]) Prüft, ob ein Wert in einem bestimmten Bereich liegt und weist gegebenenfalls eine Klassifizierung zu. Der Standardwert wird verwendet, wenn kein Kriterium zutrifft. Kann auf Zahlenbereiche und Datumsbereiche angewandt werden. | matchrange(time($0), 600, 1400, "Früh", 1400, 2200, "Spät", "Nacht") Aus der Spalte mit dem Datum/Zeitstempel (hier Spalte 0) wird eine neue Spalte berechnet, die zwischen Früh-, Spät- und Nachtschicht unterscheidet. matchrange($1,#2024-01-01 00:00:00#,#2024-01-14 23:59:00#,"Version 1","Version 0") Für alle Zeitwerte in Spalte 1 zwischen dem 01.01. und dem 14.01. wird das Meta-Attribut Version 1 zurückgegeben. Ansonsten Version 0. |
Text extrahieren | mid(a, Position, Anzahl) Extrahiert eine gewünschte Anzahl von Zeichen aus der Quelle (a) an der ausgewählten Position und speichert sie als Text. | mid($0, 2, 1) Der Inhalt der Spalte $0 ist der Name des Labels „AB73365“. Die Berechnung exportiert ein Zeichen an Position 2 (Indizierung beginnt bei 0): Das Ergebnis ist also „7“. |