Skip to content

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.

noria dag --format mermaid
noria dag --format mermaid --output docs/dag.mmd

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.

noria dag --format ascii

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: true ou --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 ──┐
                ├──→ commandes ──→ stats ──→ verif
seed_customers  ──┘

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.