Cartographie DAG
La commande noria dag génère une représentation visuelle du graphe de dépendances entre les tâches — utile pour comprendre l'ordre d'exécution, identifier les chemins critiques, et documenter le pipeline.
Formats disponibles
HTML Mermaid — --format html (défaut)
Ouvre une page HTML interactive dans le navigateur avec un diagramme Mermaid en dark mode.
noria dag # ouvre dans le navigateur
noria dag --output docs/dag.html # enregistre le fichier
noria dag --no-open # génère sans ouvrir le navigateur
Le diagramme est interactif : zoom, scroll, sélection de nœuds.
Mermaid brut — --format mermaid
Génère le code Mermaid brut — à coller dans un README, Notion, GitLab, ou GitHub.
Exemple de sortie :
flowchart TD
ref_products["ref_products\nseed"]:::seed
commandes["commandes\nincremental"]:::standard
monthly_stats["monthly_stats\nreplace"]:::standard
assert_stats["assert_stats\nassert"]:::assert
inactive_node["inactive_node\nreplace"]:::inactive
ref_products --> commandes
commandes --> monthly_stats
monthly_stats --> assert_stats
classDef standard fill:#1f3d5c,stroke:#58a6ff,color:#e6edf3
classDef seed fill:#1f3d2a,stroke:#3fb950,color:#e6edf3
classDef assert fill:#3d2a1f,stroke:#f0883e,color:#e6edf3
classDef inactive fill:#21262d,stroke:#484f58,color:#6e7681
ASCII — --format ascii
Affichage texte dans le terminal, sans dépendance externe.
Exemple de sortie :
Pipeline: pipeline_ventes
├── ref_products [seed]
│ └── commandes [incremental]
│ └── monthly_stats [replace]
│ └── assert_stats [assert]
└── ref_countries [seed]
Codes couleur
| Couleur | Signification |
|---|---|
| Bleu | Tâche SQL standard |
| Vert | Tâche seed (load_orders fichier) |
| Orange | Tâche assert (qualité) |
| Gris | Tâche inactive (active: false) |
Lire le DAG
Le DAG (Directed Acyclic Graph) représente les dépendances entre tâches :
- Une flèche A → B signifie que A doit terminer avec succès avant que B puisse démarrer
- Les tâches sans dépendances (racines) s'exécutent en premier, potentiellement en parallèle
- Les tâches sur le même niveau peuvent s'exécuter en parallèle si
max_workers > 1 - Si une tâche échoue, toutes ses dépendantes sont annulées (sauf si
soft_fail: trueou--continue-on-error)
Exemple de pipeline complexe
nodes:
seed_products: # ─────────────────┐ parallèle
type: seed # ↓
seed_customers: # ─────────────────┘
type: seed # ↓
commandes: # ← dépend de seed_products et seed_customers
needs: [seed_products, seed_customers]
stats: # ← dépend de commandes
needs: [commandes]
verif: # ← dépend de stats
type: assert
needs: [stats]
DAG résultant :
seed_products et seed_customers s'exécutent en parallèle. commandes attend que les deux soient terminés.
Utiliser le DAG dans la documentation
# Générer le Mermaid et l'intégrer dans le README
noria dag --format mermaid --output docs/dag.mmd
# Dans le README.md :
# ```mermaid
# (contenu de dag.mmd)
# ```
GitHub, GitLab et Notion rendent nativement le Mermaid dans les fichiers Markdown.