Editor für Datenquellenabfragen (Suchabfrage)

Erstellen Sie Datenquellenabfragen für Tabellen- und Diagramm-Widgets, um bestimmte Daten aus einer Datenbank auszuwählen. Abfragen werden in der Form eines Datenbankfelds aufgebaut, gefolgt vom Zeichen „=“ und einem Operator, einer Zahl oder einer Zeichenfolge:

database_string=my string
database_number=1234
database_number=BETWEEN(3, 6)

Die Abfragen können durch spezifischen JavaScript-Code erweitert werden:

  • Zeit- und Datumsberechnungen mit momentjs

Operators

Operator

Beschreibung

BETWEEN()

Bereich vom Start- bis zum Endwert. Start- und Endwerte sind durch Kommas getrennt

IN()

Durch Kommas getrennte Liste von Zahlen oder Zeichenfolgen, mit denen verglichen werden soll

GT()

Größer als der Wert

GE()

Größer als oder gleich Wert

LT()

Wert kleiner als

LE()

Wert kleiner oder gleich

NOT()

Negation eines Ausdrucks

AND()

Liste kommagetrennter Ausdrücke. Alle müssen erfüllt sein

OR()

Liste von durch Kommas getrennten Ausdrücken. Mindestens einer muss erfüllt sein

NULL()

Prüft, ob ein Wert NULL ist

Beispiele

Wähle alle Datensätze mit einem Gehalt von mehr als 40000 aus:

salary=GT(40000)

Wähle alle Datensätze aus, deren Namen nicht James, John oder Joe lauten:

name=NOT(IN(James%2CJohn%2CJoe))

Wähle alle Datensätze mit einer nicht-NULL-Kunden-ID aus:

customerId=NOT(NULL())

Kommas in Argumenten sollten mit einem Escape-Zeichen versehen werden:

, -> %2C

Dies ist erforderlich, wenn verschachtelte Operatoren wie im obigen Beispiel verwendet werden.

Beispiele mit Moment.js

In den folgenden Beispielen wird `params.interval` über ein Datumsauswahl-Widget festgelegt

Wähle nur Datensätze mit einem Datum aus, das zwischen dem Start- und Enddatum/-zeitpunkt liegt, die von einem Datumsauswahl-Widget bereitgestellt werden. „begin“, „end“ und „format()“ werden aus der momentjs-Bibliothek verwendet:

date=BETWEEN(${interval(params.interval).begin.format()}, ${interval(params.interval).end.format()})

Wählen Sie Datensätze aus dem Vorjahr aus:

year=${interval(params.interval).begin.subtract(1, 'years').format('YYYY')}

Abfrage des gleichen Monats ein Jahr zuvor, wobei der Monat ohne führende Nullen formatiert wird:

month=${interval(params.interval).begin.subtract(params.sub, 'years').format('M')}

Abfrage des Wochentags (0–6):

weekday=${interval(params.interval).begin.day()}

Parameterabhängige Abfrage

Soll eine Abfrage nur dann angewendet werden, wenn ein bestimmter Parameter gesetzt ist (z. B. eine Filter-Matrix-Abfrage), können sowohl die Spalte als auch die Abfragezeichenfolge in if-Anweisungen eingeschlossen werden:

${filterMatrix.device_name ? 'device_name' : 'none'}=${filterMatrix.device_name ? filterMatrix.device_name : ''}

Wenn der Parameter „filterMatrix.device_name“ definiert ist, wird die Spalte auf „device_name“ und die Abfragezeichenfolge auf „filterMatrix.device_name“ gesetzt:

device_name=filterMatrix.device_name

Ist derselbe Parameter nicht definiert, wird die resultierende Abfrage für die wahrscheinlich nicht vorhandene Spalte „none“ konfiguriert:

 none=''

Verwendung einer Suchabfrage mit Datumsauswahl

Das Datumsauswahl-Widget ermöglicht es Benutzern, ein Datum oder einen Datumsbereich auszuwählen, der als URL-Parameter übergeben wird.

Diese Parameter können in Suchabfragen verwendet werden, wie im folgenden Beispiel gezeigt:

  • Angenommen, Mitarbeiterdatensätze verfügen über die Felder „hire_date“ und „exit_date“. Ist „exit_date“ NULL, ist das Arbeitsverhältnis weiterhin aktiv und es liegt kein geplantes Beendigungsdatum vor.

  • Durch die Auswahl eines Datumsbereichs in der Auswahl (z. B. Februar 2022 bis Dezember 2026) werden die folgenden URL-Parameter gesetzt:

    • interval=BETWEEN(2022-02,2026-12)

    • intervalBucket=month

    • intervalType=month

image-20261012-114613.png
  • Um die Tabelle „Employees“ nach Datensätzen zu filtern, die sich mit dem ausgewählten Zeitraum überschneiden, verwenden Sie die folgende Suchabfrage:

hire_date=LE(${interval(params.interval).end.format()})
exit_date=OR(NULL(), GE(${interval(params.interval).begin.format()}))

Jede Zeile stellt eine eigenständige Regel dar; mehrere Regeln werden mit einer impliziten UND-Bedingung ausgewertet.

Erläuterung der Abfrage:

  • „hire_date“ ist kleiner oder gleich dem Ende des Zeitraums (am oder vor Dez. 2026)

  • UND

  • exit_date ist entweder NULL oder größer oder gleich dem Beginn des Intervalls (am oder nach dem 2. Februar 2022)