Advanced Query (Datalog)
Wenn eine Filterzeile nicht reicht — Regeln, die verknüpfen, ableiten und verdichten
- Du liest eine Datalog-Regel und benennst :find, :where und den Join. ·· Erfolgskriterium: Du erklärst an einer gegebenen Regel, welche Variable den Join bildet.
- Du schreibst eine Regel, die zwei Kriterien über Blöcke verbindet. ·· Erfolgskriterium: Deine Regel liefert die erwartete Treffermenge aus zwei Bedingungen.
- Du verdichtest eine Treffermenge mit einem Aggregat. ·· Erfolgskriterium: Du gruppierst mit count und erhältst eine Zahl je Gruppe.
Eine Simple Query filtert eine Property und wird zur Sicht. Aber sobald Du zwei Dinge verbinden willst — offene Aufgaben aus den Meetings eines Quartals, gruppiert nach Projekt — endet die Filterzeile. Datalog beginnt genau dort: Du beschreibst die Beziehung als Regel, und mium leitet den Rest ab.
Wo die Filterzeile endet
Eine Filterzeile prüft Blöcke einzeln gegen feste Kriterien. Sie kann nicht über Blöcke hinweg verbinden, nichts ableiten und nichts zusammenrechnen. Multi-Kriterien-Reports klickst Du sonst aus mehreren Sichten von Hand zusammen — und pflegst sie ebenso. Datalog dreht das um: eine Regel, die Beziehungen beschreibt, und eine Engine, die sie auswertet.
Anatomie einer Regel
Eine Datalog-Regel hat zwei Teile: :find sagt, welche Größe Du sehen willst, :where listet die Bedingungen — je Zeile eine. Variablen wie ?task verbinden die Zeilen; taucht dieselbe Variable mehrfach auf, ist das ein Join.
[:find ?task
:where
[?task "type" "task"]
[?task "status" "offen"]
[?task "von-meeting" ?m]
[?m "tag" "q3"]]
;; offene Aufgaben aus Q3-Meetings — ein Join über ?m5 Bausteine für Advanced Query
- Die Regel beschreibt das Ziel (:find), nicht den Suchweg — Du sagst was, nicht wie.
- Jede :where-Zeile ist eine Bedingung; gemeinsame Variablen verbinden sie zum Join.
- Aggregate verdichten: count, sum, max, min, avg über die Treffermenge.
- Eine Regel ist wiederverwendbar — benenne sie, und sie wird zur Sicht für das ganze Team.
- Grenzen setzen: rekursive oder unbeschränkte Joins brauchen ein Limit, sonst wird die Auswertung teuer.
Beispiel: offene Aufgaben je Projekt zählen
[:find ?projekt (count ?task)
:where
[?task "type" "task"]
[?task "status" "offen"]
[?task "projekt" ?projekt]]
;; ein Report: pro Projekt die Zahl offener AufgabenVorher/Nachher — Simple Query vs. Datalog
| Fähigkeit | Simple Query | Datalog |
|---|---|---|
| Kriterien | eine Property | beliebig viele |
| Über Blöcke verbinden | nein | ja (Join über Variablen) |
| Ableiten / aggregieren | nein | count··sum··group |
| Wiederverwendbar | als Sicht | als benannte Regel |
| Lernkurve | Minuten | steiler, dafür mächtiger |
Ehrliche Frage
Wie viele Deiner Reports baust Du jede Woche neu, weil sie mehrere Kriterien verbinden, die keine Filterzeile fassen kann? Die Antwort entscheidet, ob sich die steilere Lernkurve von Datalog für Dich auszahlt — oder ob eine Simple Query schon reicht.
- Nimm Dir einen Report vor, den Du heute aus mehreren Sichten von Hand zusammenklickst. Schreib in Worten auf, welche Größe Du am Ende sehen willst und welche Bedingungen dafür wahr sein müssen — je Bedingung eine Zeile. Übersetze das anschließend in eine Datalog-Regel mit :find und :where und benenne die Variable, die den Join bildet.⏱ 5 min
💡 Beginne mit der gesuchten Größe hinter :find und schreibe erst danach die :where-Zeilen. Die Variable, die in zwei Zeilen steht, ist Dein Join — markiere sie zuerst.
Musterlösung: Hinter :find steht die Größe, die Du sehen willst, etwa die Aufgabe oder das Projekt. Darunter führst Du je Bedingung eine :where-Zeile: Typ ist Aufgabe, Status ist offen, und über die Meeting-Variable hängt die Aufgabe an einem Quartals-Meeting. Dieselbe Meeting-Variable in zwei Zeilen ist der Join. Für eine Zählung setzt Du count um die Aufgaben-Variable und gruppierst über das Projekt — eine Zahl je Projekt, ohne Export.
Was kann Datalog, das eine Simple Query nicht kann?
Beschreib, was zählt — den Rest rechnet mium.
Eine Regel, und Dein Zweitgehirn baut den Report — und hält ihn aktuell, während Du denkst. Kein Export, kein Zusammenklicken; ein Begleiter, der Deine Kriterien versteht.
Slot sichern··kostenlos →