Abfragen mit dem Baukasten
Ein Abfrage-Tag liest die erfassten Datensätze und liefert daraus einen Wert — eine Kennzahl, eine Summe, eine Anzahl. Wie dieser Wert zustande kommt, können Sie auf zwei Arten festlegen: im Baukasten beschreiben Sie, was die Zahl sagen soll, und die Abfrage entsteht daraus. Im Modus SQL schreiben Sie die Abfrage selbst.
Sie schalten oben am Abfrage-Tag zwischen beiden um. Ein Tag, das mit dem Baukasten gebaut wurde, öffnet im Baukasten; ein von Hand geschriebenes öffnet in SQL.
Die fünf Fragen
Abschnitt betitelt „Die fünf Fragen“Quelle. Über welche Datensätze gerechnet wird — eine Datensatz-Art, zum Beispiel
ProductionReport. Stammdaten stehen hier nicht zur Wahl: Sie sind die Werte, aus denen ein
Filter auswählt, nicht das, worüber gerechnet wird.
Ergebnis. Entweder eine Kennzahl der Anlage (Verfügbarkeit, Leistung, Qualität, OEE) oder eine einfache Rechnung über ein Feld: Anzahl der Datensätze, Summe, Mittelwert, kleinster oder größter Wert. Eine Kennzahl wird nur angeboten, wenn die gewählte Datensatz-Art wirklich alle Felder hat, die ihre Formel liest. Damit steht in der Liste nie eine Zahl, die nachher nur einen Fehler ergeben kann.
Zeitraum. Ein Feld, das einen Zeitpunkt trägt, etwa ProductionReport.Timestamp. Das Feld
steht qualifiziert da, weil es ein Feld der Datensatz-Art eine Spalte weiter links ist. Aus dem
Zeitraum entstehen die beiden Parameter from und to — was sie füllt, steht unter
Parameter und Bindungen. Ohne Zeitraum gilt die Zahl für alle Datensätze.
Filter. Welche dieser Datensätze zählen. Bedingungen lassen sich zu Gruppen mit Alle oder Eine verschachteln. Hat ein Feld eine geschlossene Werteliste, wählen Sie den Wert aus einer Liste statt ihn zu tippen — das ist die häufigste Ursache für einen Filter, der stillschweigend nichts trifft. Eine Bedingung ohne Wert wird nicht mitgeschrieben: eine halbfertige Bedingung kann das Ergebnis nicht verändern.
Aufgeschlüsselt nach. Ein Feld oder mehrere. Je Kombination entsteht eine Ergebniszeile — das ist die Form, die eine Gruppentabelle oder ein Pareto-Widget braucht. Nichts gewählt heißt eine Zeile.
Was daraus entsteht
Abschnitt betitelt „Was daraus entsteht“Rechts unten steht Die Abfrage, die daraus entsteht. Sie folgt der Beschreibung bei jeder Änderung; es gibt keinen Knopf, der sie erst erzeugt. Wer kein SQL liest, kann sie ignorieren.
Für „Anzahl der Datensätze aus ProductionReport über Timestamp” sieht sie so aus:
WITH src AS ( SELECT 1 AS row_present FROM "ProductionReport" WHERE active AND ($1::timestamptz IS NULL OR "ProductionReport.Timestamp" >= $1::timestamptz) AND ($2::timestamptz IS NULL OR "ProductionReport.Timestamp" < $2::timestamptz))SELECT COUNT(*)::numeric AS "Value"FROM srcMit einer Summe und einer Aufschlüsselung nach Line:
WITH src AS ( SELECT "ProductionReport.Line" AS line, "ProductionReport.GoodParts" AS good_parts FROM "ProductionReport" WHERE active)SELECT line AS "Line", SUM(good_parts::numeric) AS "Value"FROM srcGROUP BY lineORDER BY lineZwei Eigenschaften dieser Form sind Absicht:
WHERE activesteht immer da. Ein zurückgenommener Datensatz zählt in keiner Zahl mit.- Die Ergebnisspalte heißt
Value. Das ist der Name, unter dem ein Widget die Zahl sucht.
Neben der erzeugten Abfrage steht Ausprobieren. Der Probelauf zeigt die Antwort als Tabelle — siehe Der Probelauf.
Die Einbahntür
Abschnitt betitelt „Die Einbahntür“Sobald Sie die Abfrage im Modus SQL von Hand ändern, wird die Beschreibung des Baukastens verworfen. Das ist gewollt: eine stehengebliebene Beschreibung würde später anbieten, eine handgeschriebene Abfrage durch eine grobe Näherung davon zu ersetzen.
Umgekehrt gilt dasselbe. Wechseln Sie an einer von Hand geschriebenen Abfrage in den Baukasten, öffnet er leer. Er errät nicht, was in der Abfrage steht. Gespeichert wird erst, wenn Sie wirklich etwas gebaut haben.