Advanced Query (Datalog)
Quand une ligne de filtre ne suffit plus — des règles qui relient, déduisent et condensent
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 ?m5 briques pour Advanced Query
- La règle décrit la cible (:find), non le chemin de recherche — vous dites le quoi, pas le comment.
- Chaque ligne :where est une condition ; les variables communes les relient en jointure.
- Les agrégats condensent : count, sum, max, min, avg sur l'ensemble des résultats.
- Une règle est réutilisable — nommez-la, et elle devient une vue pour toute l'équipe.
- 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 AufgabenAvant / après — Simple Query contre Datalog
| Capacité | Simple Query | Datalog |
|---|---|---|
| Critères | une propriété | autant que voulu |
| Relier entre blocs | non | oui (jointure par variables) |
| Déduire / agréger | non | count··sum··group |
| Réutilisable | comme vue | comme règle nommée |
| Courbe d'apprentissage | minutes | plus 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à.
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 →