NAÏA — Analyser un pipeline
NAÏA peut auditer un noria.yml et identifier les problèmes de configuration, les risques opérationnels, et les opportunités d'optimisation.
Comment l'utiliser
- Charge le prompt
2_analyse_pipeline.prompt.md - Colle le contenu de ton
noria.yml - NAÏA retourne un tableau priorisé de recommandations
Ce que NAÏA analyse
Robustesse
- Tâches sans
retry:qui accèdent à des ressources externes (API, fichiers) - Tâches sans
timeout:avec des requêtes potentiellement longues - Tâches critiques sans
soft_fail:clairement positionné - Absence de notifications
on_failure:
Qualité des données
- Absence d'assertions (
type: assert) sur les tables importantes - Absence de
freshness_check:sur les tables alimentées par des sources externes output_write: replacesur de grandes tables sanssafe_replace_min_rows
Performance
- Tâches indépendantes qui pourraient s'exécuter en parallèle
- Loops séquentielles qui pourraient bénéficier de
loop_parallel: true - Tâches qui recalculent tout alors qu'elles pourraient être
incremental
Configuration
- Paramètres hardcodés dans le SQL au lieu d'utiliser
{{ params.x }} - Clés de merge manquantes ou incorrectes
- Dépendances circulaires ou manquantes
- Tâches sans
description:ou sanstags:
Exemple de rapport NAÏA
Pour ce pipeline :
nodes:
load_orders:
sql: sql/load_orders.sql
target: main.commandes
output_write: replace
stats:
sql: sql/stats.sql
target: main.stats
output_write: replace
needs: [load_orders]
rapport:
sql: sql/rapport.sql
target: main.rapport
output_write: replace
needs: [stats]
NAÏA retourne :
| Priorité | Tâche | Problème | Correction suggérée |
|---|---|---|---|
| 🔴 Critique | load_orders |
Pas de retry: sur une tâche de load_orders externe |
Ajouter retry: 3, retry_delay_s: 30 |
| 🔴 Critique | load_orders |
output_write: replace sans garde-fou |
Passer à safe_replace avec safe_replace_min_rows: 1000 |
| 🟡 Important | stats |
Pas d'assertion qualité après calcul | Ajouter une tâche assert_stats après stats |
| 🟡 Important | pipeline | Pas de notifications: configurées |
Ajouter on_failure: avec webhook Slack |
| 🟢 Suggestion | toutes | Aucune tâche n'a de description: |
Ajouter une description à chaque tâche |
| 🟢 Suggestion | toutes | Aucun tags: défini |
Ajouter des tags pour le filtrage CLI |
Pipeline après corrections NAÏA
notifications:
on_failure:
- "${SLACK_WEBHOOK}"
nodes:
load_orders:
sql: sql/load_orders.sql
target: "{{ params.schema }}.commandes"
output_write: safe_replace
safe_replace_min_rows: 1000
description: "Chargement des commandes depuis l'API"
tags: [daily, critique]
retry: 3
retry_delay_s: 30
timeout: 300
assert_load_orders:
type: assert
sql: sql/assert_commandes.sql
description: "Vérifie l'intégrité des commandes chargées"
tags: [qualite]
needs: [load_orders]
stats:
sql: sql/stats.sql
target: "{{ params.schema }}.stats"
output_write: replace
description: "Statistiques agrégées"
tags: [daily]
needs: [assert_load_orders]
rapport:
sql: sql/rapport.sql
target: "{{ params.schema }}.rapport"
output_write: replace
description: "Rapport final"
tags: [daily, reporting]
needs: [stats]