Zum Inhalt springen

Query und QueryPrecalc System

Das Query- und QueryPrecalc-System ermöglicht die Ausführung von SQL-Abfragen mit Parametern, die Vorberechnung langsamer Abfragen für bessere Performance und den Export von Ergebnissen nach Excel. Das System unterstützt sowohl Echtzeit-Abfragen als auch vorberechnete Daten über ein Blue-Green-Deployment-Muster.

Eine Query definiert eine SQL-Abfrage mit Parametern, die von Benutzern eingegeben werden können.

  1. Navigieren Sie zum Query-Objekt in der Objektstruktur
  2. Erstellen Sie ein neues Query-Objekt
  3. Konfigurieren Sie:
    • Name: Anzeigename der Abfrage
    • Query: SQL-Abfrage mit benannten Parametern (z.B. @PeriodeFrom, @PeriodeTo)
    • Query Type: Typ der Abfrage (z.B. ‘SQL’)
    • Query Precalc: Optional - Verknüpfung zu einer QueryPrecalc für vorberechnete Daten

Parameter werden in der Query-Detailansicht unter “Parameter” definiert:

  • Name: Muss mit dem SQL-Parameter übereinstimmen (ohne @)
  • Typ: Art des Parameters (siehe unten)
  • Reihenfolge: Bestimmt die Reihenfolge der Parameter
  • Erforderlich: Ob der Parameter zwingend ausgefüllt werden muss
  • Number: Numerische Werte
  • String: Textwerte
  • Date: Datumswerte
  • DateTime: Datum und Uhrzeit
  • Boolean: Wahr/Falsch-Werte
  • UID: Objekt-Referenzen (mit Objekt-Picker)
  • NumberRange: Zahlenbereich (min/max)
  • DateRange: Datumsbereich
  • SingleSelect: Einzelauswahl aus vordefinierten Optionen
  • MultiSelect: Mehrfachauswahl aus vordefinierten Optionen

Für SingleSelect und MultiSelect können vordefinierte Optionen konfiguriert werden:

[
{ "value": "1", "label": "Komplett innerhalb Periode" },
{ "value": "2", "label": "Touchiert Periode" },
{ "value": "3", "label": "Kursbeginn innerhalb Periode" },
{ "value": "4", "label": "Kursende innerhalb Periode" }
]

Wichtig:

  • Der value wird an die SQL-Abfrage übergeben
  • Der label wird in der Benutzeroberfläche angezeigt
  • Für numerische Optionen wird automatisch eine Konvertierung durchgeführt

Wenn Sie SQL-Funktionen für Queries mit SingleSelect/MultiSelect-Parametern erstellen:

  1. Die Funktion erhält den value (z.B. “1”, “2”, “3”, “4”)
  2. Verwenden Sie CASE-Statements, um Labels im Ergebnis zurückzugeben:
CAST((CASE @PeriodeType
WHEN 1 THEN 'Komplett innerhalb Periode'
WHEN 2 THEN 'Touchiert Periode'
WHEN 3 THEN 'Kursbeginn innerhalb Periode'
WHEN 4 THEN 'Kursende innerhalb Periode'
ELSE 'Unbekannt, Fehler'
END) AS VARCHAR(50)) AS PeriodeFilterTyp

Die Labels müssen exakt mit den in den QueryParam-Optionen definierten Labels übereinstimmen.

QueryPrecalc verwaltet vorberechnete Abfragedaten mit einem Blue-Green-Deployment-Muster für Updates ohne Ausfallzeiten.

  1. Navigieren Sie zum QueryPrecalc-Objekt in der Objektstruktur
  2. Erstellen Sie ein neues QueryPrecalc-Objekt
  3. Konfigurieren Sie:
    • Name: Anzeigename
    • View Name: Name der VIEW, die zwischen Blue/Green-Tabellen wechselt
    • Table Name Blue: Name der Blue-Tabelle
    • Table Name Green: Name der Green-Tabelle
    • Stored Procedure Name: Stored Procedure zur Berechnung
    • Cron Schedule: Cron-Ausdruck für automatische Updates (z.B. ‘0 2 * * *’ für täglich um 2 Uhr)

Das System verwendet zwei Tabellen (Blue und Green):

  • Eine VIEW zeigt auf die aktive Tabelle
  • Bei Updates wird die inaktive Tabelle befüllt
  • Die VIEW wird auf die neue Tabelle umgeschaltet
  • Die alte Tabelle kann optional gelöscht werden

Eine Query kann mit einer QueryPrecalc verknüpft werden:

  • Setzen Sie das Feld “Query Precalc” in der Query
  • Die SQL-Abfrage sollte auf die QueryPrecalc VIEW verweisen
  • QueryPrecalc-Informationen werden in der Query-Übersicht angezeigt
  1. Öffnen Sie die Query-Übersicht
  2. Geben Sie die erforderlichen Parameter ein
  3. Klicken Sie auf “Abfrage laden”
  4. Die Ergebnisse werden im Grid angezeigt

Zwei Export-Optionen stehen zur Verfügung:

  1. “Aktuelle Ansicht als Excel”: Exportiert die aktuell angezeigten Daten (mit Filtern/Pagination)
  2. “Alle Daten als Excel”: Exportiert alle Daten, die den aktuellen Filtern entsprechen

Die Excel-Datei wird automatisch formatiert:

  • Zahlen werden korrekt formatiert
  • Datumswerte werden im Format dd.mm.yyyy angezeigt
  • Währungen werden mit 2 Dezimalstellen angezeigt
  • Spalten werden automatisch angepasst

In der Query-Übersicht werden folgende Informationen angezeigt:

  • Name: Name der QueryPrecalc
  • Status: Aktueller Status (Erfolgreich, Wird aktualisiert, Fehler)
  • Letzte Aktualisierung: Zeitpunkt der letzten erfolgreichen Aktualisierung
  • Laufzeit: Dauer der letzten Berechnung in Sekunden
  1. Klicken Sie auf “Vorberechnung neu laden” in der Query-Übersicht
  2. Die QueryPrecalc wird manuell aktualisiert
  3. Der Status wird während der Aktualisierung angezeigt

QueryPrecalc kann automatisch aktualisiert werden:

  • Konfigurieren Sie den “Cron Schedule” für regelmäßige Updates
  • Das System führt die Berechnung automatisch durch
  • Updates erfolgen ohne Ausfallzeiten durch Blue-Green-Deployment
  • Verwenden Sie benannte Parameter (z.B. @ParameterName)
  • Parameter werden automatisch in Positionsparameter umgewandelt
  • Verwenden Sie CASE-Statements für Labels bei SingleSelect/MultiSelect
  • Verwenden Sie aussagekräftige Parameternamen
  • Setzen Sie die Reihenfolge korrekt (OrderNr)
  • Markieren Sie erforderliche Parameter als “Erforderlich”
  • Für SingleSelect/MultiSelect: Stellen Sie sicher, dass Labels in SQL und Options übereinstimmen
  1. Erstellen Sie Blue- und Green-Tabellen
  2. Erstellen Sie eine VIEW, die auf die aktive Tabelle zeigt
  3. Erstellen Sie eine Stored Procedure für die Datenberechnung
  4. Konfigurieren Sie den Cron-Schedule
  5. Verknüpfen Sie die Query mit der QueryPrecalc
  • Für numerische SingleSelect-Optionen: Stellen Sie sicher, dass der erste Wert numerisch ist
  • Das System erkennt automatisch, ob eine Konvertierung nötig ist
  • Stellen Sie sicher, dass die SQL-Funktion Labels mit CASE-Statements zurückgibt
  • Die Labels müssen exakt mit den Options übereinstimmen
  • Die Daten werden nur geladen, wenn “Abfrage laden” geklickt wird
  • requestsEnabled ist standardmäßig auf false gesetzt
  • Das Grid verwendet automatische Spaltenbreiten
  • Horizontales Scrollen ist aktiviert
  • Header und Inhalt werden automatisch synchronisiert