Skip to content

Démarrage rapide

1. Installer Noria

pip install 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