Berechnete Filter

Lesedauer: 5min Veröffentlicht am: Mai 14, 2024. Der Autor des Beitrages ist Maximilian Backenstos.
Inhalte auf dieser Seite
Primary Item (H2)Sub Item 1 (H3)

Funktionsweise der berechneten Filter

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:

  • Zeitfilter zwischen zwei nicht verknüpften Tabellen austauschen
  • Änderung des Metafilters durch einen berechneten Filter (z.B. für Mischung A1234 wird automatisch Mischung B1234 gefiltert)

Filterobjekt

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
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);

Vorgehen bei Erstellung einer neuen Berechnung

Szenario: Interaktiver Filter für Tabelle A auf Tabelle B übertragen

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.

Szenario: Statischer Filter für Tabelle A erstellen

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.

    Beispielcode für einen Wertefilter

    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] )
                   };
    }
    

    Beispielcode für einen Bereichsfilter

    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
                  };
    }
    
    
    Sie benötigen weitere Hilfe?
    Gerne unterstützen wir Sie bei weiteren Fragen zum Thema. Kontaktieren Sie uns hier.