Wenn Tabellen nicht eindeutig verknüpft werden können oder Merkmale in verschiedenen Tabellen unterschiedlich benannt sind, können berechnete Filter Abhilfe schaffen. Im Dashboard gibt es zwei Arten von Filtern: Wertefilter und Bereichsfilter. Ein Wertefilter gibt explizit einen oder mehrere Werte zum Filtern an, z. B. eine Auftragsnummer. Ein Bereichsfilter hingegen gibt einen Bereich zum Filtern an, zum Beispiel einen Datumsbereich.
Folgende Anwendungsfälle sind unter Anderem mit berechneten Filtern abbildbar:
Bei den Berechnungen im Dashboard kann ein Filter als Eingabe gewählt werden. Dieser kann über console.log() ausgegeben werden. Im JSON-Dokument werden der Tabellenname, das zu filternde Meta-Attribut, der Typ (values für Wertefilter bzw. range für Bereichsfilter) und die Werte bzw. der Wertebereich angegeben. Bei einem Bereichsfilter wird anstelle eines Wertes der minimale und der maximale Wert des Bereichs zurückgegeben. Um einen Filter zu erstellen, stehen die vordefinierten Methoden DashboardAPI.NewValueFilter() und DashboardAPI.NewRangeFilter() zur Verfügung. Mit der Funktion DashboardAPI.GetMetadata werden die entsprechenden internen Tabellen- und Spalten-IDs ermittelt. Im Code ist die Verwendung von Klarnamen möglich.
// Aufbau Filterobjekt Wertefilter
[
{
"table": "Tabelle A",
"column": "Auftragsnummer",
"type": "values",
"values": [
12345
]
}
]
// Funktion zum Erstellen eines Wertefilters; Annahme: values ist keine Liste
let value_filter = DashboardAPI.NewValueFilter(
DashboardAPI.GetMetadata("Tabellennamme", "Spaltenname"),
[values])
// Aufbau Filterobjekt Rangefilter
[
{
"table": "Tabelle A",
"column": "Datum",
"type": "range",
"min": "2024-05-10T12:00:36.844Z",
"max": "2024-05-13T14:00:36.844Z",
}
]
// Funktion zum Erstellen eines Rangefilters von "min" bis "max"
let range_filter = DashboardAPI.NewRangeFilter(
DashboardAPI.GetMetadata("Tabellennamme", "Spaltenname"),
min,max);
In diesem Szenario existiert auf einem Dashboard eine Zeitfilterkomponente für Tabelle A, die über einen berechneten Filter auf Tabelle B übertragen werden soll.
Schritt 01: Konfiguration der Filterkomponente
Zum Beispiel eine Metadatenauswahlliste oder einen Zeitfilter
Schritt 02: Erstellung einer Berechnung
Der Name wird später als Filter gewählt, am besten so aussagekräftig wie möglich.
Schritt 03: Filterkomponente als Input in der Berechnung auswählen
Als Input Typ die Option Filter auswählen.
Wählen Sie als Wert den Filter über das Linkssymbol aus.
Schritt 04: Filter als Output definieren
Als Outputtyp die Option Filter auswählen.
Schritt 05: Java-Script Code in der Berechnung anpassen
Empfehlung: Codebeispiele auf dieser Seite als Template verwenden.
Den Input-Filter über inputs.filter auswählen.
function main(inputs) {
//Filtere auf Tabelle Labordaten und Spalte Datum
let filter_range = DashboardAPI.NewRangeFilter(
DashboardAPI.GetMetadata("Labordaten", "Datum"),
inputs.filter_input[0].min,inputs.filter_input[0].max);
//console.log(filter_range);
return {
zeitfilter_Mischerdaten: filter_range
};
}
Schritt 05: Komponente für Tabelle B mit Filter kombinieren
Komponente bearbeiten und unter Filter mit dem Linksymbol mit dem berechneten Filter verknüpfen. Dabei im ersten Dropdown den Berechnungsnamen auswählen und im zweiten Dropdown den Namen des gewählten Outputs.
In diesem Szenario soll ein statischer Filter für Tabelle A für ein Dashboard erstellt werden. Dazu sind folgende Schritte erforderlich:
Schritt 01: Erstellung einer Berechnung
Der Name wird später als Filter ausgewählt, am Besten möglichst sprechend gestalten.
Schritt 02: Filter als Output definieren
Als Outputtyp die Option Filter auswählen.
Schritt 03: Java-Script Code in der Berechnung anpassen
Empfehlung: Codebeispiele auf dieser Seite als Template verwenden.
Filter im Code erstellen und mit dem Output verbinden.
function main(inputs) {
//Filtere auf Tabelle Labordaten und Spalte Datum
let filter_range = DashboardAPI.NewRangeFilter(
DashboardAPI.GetMetadata("Labordaten", "Datum"),
"2024-05-15T08:00.000Z","2024-05-15T12:00.000Z");
return {
zeitfilter_Mischerdaten: filter_range
};
}
Schritt 04: Komponente für zu filternde Tabelle mit Filter kombinieren
Komponente bearbeiten und unter Filter mit dem Linksymbol mit dem berechneten Filter verknüpfen. Dabei im ersten Dropdown den Berechnungsnamen auswählen und im zweiten Dropdown den Namen des gewählten Outputs.
In diesem Codebeispiel wird in Tabelle A nach Zeile 1 bzw. Zeile 2 einer Metadaten-Auswahlliste gefiltert. Abhängig von der ausgewählten Zeile soll in Tabelle B nach Maschine 1 oder Maschine 2 gefiltert werden. Dazu wird die Auswahlliste als Eingabe mit dem Typ Filter ausgewählt. Der ausgewählte Wert wird abgefragt und je nach Fall wird die Variable "Maschine" mit der entsprechenden Maschinennummer konfiguriert. Als Rückgabewert wird die Funktion DashboardAPI.NewValueFilter() verwendet, die das entsprechende JSON-Objekt erzeugt.
function main(inputs) {
let maschine= "";
if (inputs.filter_linie[0].values[0]=="Linie 1"){
maschine = "Maschine 1";
}
if (inputs.filter_linie[0].values[0]=="Linie 2"){
maschine = "Maschine 2";
}
// Filter in Tabelle "Produktdetails" auf Spalte Maschinennummer
return {
filter_bestuecker: DashboardAPI.NewValueFilter(
DashboardAPI.GetMetadata("Produktdetails", "Maschinennummer"),
[maschine] )
};
}
In diesem Codebeispiel wird ein Zeitfilter auf Tabelle A verwendet, um denselben Zeitbereich auf Tabelle "Mixer Data" anzuwenden. Dazu wird ein Wertebereichsfilterobjekt "filter_range" mit der Funktion DashboardAPI.NewRangeFilter() erstellt und als Ausgabe in der Berechnung zur Verfügung gestellt.
function main(inputs) {
//Filtere auf Tabelle Mischerdaten und Spalte StartzeitMischer
let filter_range = DashboardAPI.NewRangeFilter(
DashboardAPI.GetMetadata("Mischerdaten", "StartzeitMischer"),
inputs.filter_input[0].min,inputs.filter_input[0].max);
console.log(filter_range);
return {
zeitfilter_Mischerdaten: filter_range
};
}