NOTAT··

Advanced Query (Datalog)

EXECUTIVE SUMMARY

Hvad nu hvis din rapport ikke skal klikkes sammen af ti visninger — men opstår af én regel, der beskriver, hvad der tæller, og regner sig selv om, så snart en blok ændrer sig? Advanced Query gør spredte blokke til en rapport med flere kriterier, helt uden eksport.

vilkårligt
Kriterier pr. query
ja
Joins på tværs af blokke
count·sum
Aggregat
0 min
Rapportvedligehold
nej
Eksport nødvendig
stejlere
Læringskurve
RISICI
  • Datalog har en stejlere læringskurve end en filterlinje — uden et indstigningspunkt forbliver magten uudnyttet.
  • Dårligt afgrænsede regler bliver dyre; rekursive eller åbne joins kræver grænser.
  • Uden rene properties griber ingen regel — datapleje er stadig en forudsætning.
BESLUTNING
Anbefaling — etabler Datalog-regler til tilbagevendende rapporter med flere kriterier; afløs manuelt sammenklikkede rapportsamlinger, og lad enkle visninger blive ved simpel query.

En simpel query filtrerer én property og bliver en visning. Men i det øjeblik du vil forbinde to ting — åbne opgaver fra et kvartals møder, grupperet efter projekt — stopper filterlinjen. Datalog begynder præcis dér: du beskriver relationen som en regel, og mium udleder resten.

Hvor filterlinjen stopper

En filterlinje prøver blokke enkeltvis mod faste kriterier. Den kan ikke forbinde på tværs af blokke, udlede noget eller regne noget sammen. Rapporter med flere kriterier klikker du ellers sammen i hånden fra flere visninger — og vedligeholder dem på samme måde. Datalog vender det om: én regel, der beskriver relationerne, og en engine, der udregner dem.

Anatomien i en regel

En Datalog-regel har to dele: :find siger, hvilken størrelse du vil se, :where lister betingelserne — én pr. linje. Variabler som ?task forbinder linjerne; dukker den samme variabel op flere gange, er det et 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 ?m

5 byggesten til Advanced Query

  1. Reglen beskriver målet (:find), ikke søgevejen — du siger hvad, ikke hvordan.
  2. Hver :where-linje er en betingelse; fælles variabler forbinder dem til et join.
  3. Aggregater fortætter: count, sum, max, min, avg over træfmængden.
  4. En regel kan genbruges — giv den et navn, og den bliver en visning for hele teamet.
  5. Sæt grænser: rekursive eller ubegrænsede joins kræver en grænse, ellers bliver udregningen dyr.

Eksempel: tæl åbne opgaver pr. projekt

[:find ?projekt (count ?task)
 :where
 [?task "type" "task"]
 [?task "status" "offen"]
 [?task "projekt" ?projekt]]
;; ein Report: pro Projekt die Zahl offener Aufgaben

Før/efter — simpel query vs. Datalog

EvneSimpel queryDatalog
Kriterierén propertyvilkårligt mange
Forbinde på tværs af blokkenejja (join via variabler)
Udlede / aggregerenejcount··sum··group
Genbrugeligsom visningsom navngiven regel
Læringskurveminutterstejlere, til gengæld mægtigere

Et ærligt spørgsmål

Hvor mange af dine rapporter bygger du om hver uge, fordi de forbinder flere kriterier, som ingen filterlinje kan rumme? Svaret afgør, om Datalogs stejlere læringskurve betaler sig for dig — eller om en simpel query allerede rækker.

Audit-ID: BRF-advanced-query-datalog-v1.0Fremlagt: 2026-05-22··Falktron GmbH, Oelde
Forårsskolen er slut. Se Dag 93 → Spil spillet →