Drop #28··Advanced Query

Advanced Query (Datalog)

Team Mut··dernière modif. 2026-05-22

Une Simple Query filtre une propriété et devient une vue. Mais dès que vous voulez relier deux choses — les tâches ouvertes issues des réunions d'un trimestre, regroupées par projet — la ligne de filtre s'arrête. Datalog commence précisément là : vous décrivez la relation sous forme de règle, et mium déduit le reste.

Là où la ligne de filtre s'arrête

Une ligne de filtre vérifie les blocs un à un contre des critères fixes. Elle ne sait pas relier d'un bloc à l'autre, ne déduit rien et ne totalise rien. Les rapports multicritères, vous les assemblez sinon à la main depuis plusieurs vues — et vous les entretenez de même. Datalog renverse la logique : une règle qui décrit des relations, et un moteur qui l'évalue.

Anatomie d'une règle

Une règle Datalog comporte deux parties : :find dit quelle grandeur vous voulez voir, :where énumère les conditions — une par ligne. Des variables comme ?task relient les lignes ; lorsqu'une même variable revient plusieurs fois, c'est une jointure.

[: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 briques pour Advanced Query

  1. La règle décrit la cible (:find), non le chemin de recherche — vous dites le quoi, pas le comment.
  2. Chaque ligne :where est une condition ; les variables communes les relient en jointure.
  3. Les agrégats condensent : count, sum, max, min, avg sur l'ensemble des résultats.
  4. Une règle est réutilisable — nommez-la, et elle devient une vue pour toute l'équipe.
  5. Poser des limites : les jointures récursives ou non bornées ont besoin d'une borne, sans quoi l'évaluation devient coûteuse.

Exemple : compter les tâches ouvertes par projet

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

Avant / après — Simple Query contre Datalog

CapacitéSimple QueryDatalog
Critèresune propriétéautant que voulu
Relier entre blocsnonoui (jointure par variables)
Déduire / agrégernoncount··sum··group
Réutilisablecomme vuecomme règle nommée
Courbe d'apprentissageminutesplus raide, mais plus puissante

Une question honnête

Combien de vos rapports reconstruisez-vous chaque semaine parce qu'ils relient plusieurs critères qu'aucune ligne de filtre ne peut saisir ? La réponse décide si la courbe d'apprentissage plus raide de Datalog vaut la peine pour vous — ou si une Simple Query suffit déjà.

Discussion

Camille Lefèvre··↪ Doc Ops··Société Modèle SASil y a 4 h
Notre rapport hebdomadaire était un rituel du vendredi en cinq tableaux. C'est désormais une règle — et le vendredi m'appartient de nouveau.
Antoine Mercier··↪ Chef de projet··Mercier & Fils SARLil y a 1 jour
La courbe d'apprentissage est réelle, mais après sa première règle on ne veut plus revenir en arrière. count par projet a été mon déclic.

Décrivez ce qui compte — mium calcule le reste.

Une règle, et votre deuxième cerveau construit le rapport — et le tient à jour pendant que vous réfléchissez. Pas d'export, pas d'assemblage à la main ; un partenaire qui comprend vos critères.

Réserver mon créneau··gratuit →
L’École de printemps est terminée. Voir le Jour 93 → Lancer le jeu →