Démarrage rapide
1. Installer Noria
2. Créer un projet
noria init mon_pipeline
cd mon_pipeline
3. Structure générée
mon_pipeline/
├── noria.yml
├── sql/
│ ├── macros/ # vos macros Jinja2 réutilisables
│ └── hello.sql
└── .noria/
└── .env # vos secrets (auto-chargés, non versionnés)
4. Écrire vos premières tâches
# noria.yml
name: mon_pipeline
database:
dialect: duckdb
database: data/warehouse.db
params:
schema: main
env: prod
nodes:
# Tâche SQL standard
clients:
sql: sql/clients.sql
target: "{{ params.schema }}.clients"
output_write: replace
description: "Consolidation des clients actifs"
tags: [daily, finance]
# Tâche avec retry et timeout
commandes:
sql: sql/commandes.sql
target: "{{ params.schema }}.commandes"
output_write: incremental
incremental_key: date_commande
retry: 3
retry_delay_s: 10
timeout: 300
needs: [clients]
# Assertion qualité
verif_clients:
type: assert
sql: sql/assert_clients_sans_email.sql
description: "Échoue si des clients n'ont pas d'email"
needs: [clients]
# Chargement d'un fichier CSV
ref_countries:
type: seed
seed_file: data/pays.csv
target: "{{ params.schema }}.ref_countries"
description: "Référentiel des pays"
5. Utiliser les macros cross-DB
-- sql/clients.sql
SELECT
id,
{{ cast('id', 'VARCHAR') }} AS id_str,
{{ date_trunc('month', 'date_inscription') }} AS mois_inscription,
{{ safe_divide('ca_total', 'nb_commandes') }} AS panier_moyen,
{{ current_timestamp() }} AS updated_at
FROM {{ params.schema }}.raw_clients
WHERE statut = 'actif'
6. Lancer le pipeline
noria run # tout exécuter
noria run --only-tags daily # seulement les tâches daily
noria run --dry-run # voir le SQL sans exécuter
noria run --continue-on-error # ne pas s'arrêter sur erreur
noria run --log-file logs/run.log # écrire les logs dans un fichier
noria run --params-file prod.yml # charger des paramètres depuis un fichier
7. Visualiser et documenter
noria dag # ouvrir le DAG dans le navigateur
noria dag --format ascii # afficher l'arbre dans le terminal
noria docs # générer la documentation HTML
noria status # historique des exécutions
noria watch # re-lancer automatiquement à chaque changement SQL