Alteryx → Noria
Philosophie
Un workflow Alteryx devient un pipeline Noria. Chaque outil Alteryx devient une clause SQL ou une tâche. Les macros Alteryx deviennent des macros Jinja2 dans sql/macros/.
Correspondances
Outils de données
| Outil Alteryx |
Noria |
| Input Data |
FROM {{ params.schema }}.table |
| Output Data |
target: + output_write: |
| In-DB Input |
idem (Noria travaille toujours en base) |
| Text Input |
type: seed avec un CSV |
| Outil Alteryx |
Noria (SQL) |
| Select |
Colonnes dans SELECT, alias, cast |
| Filter |
WHERE condition |
| Formula |
Colonnes calculées : CASE WHEN, {{ cast() }}, etc. |
| Multi-Row Formula |
LAG(), LEAD(), SUM() OVER (...) |
| Running Total |
SUM(col) OVER (ORDER BY ...) |
| Multi-Field Formula |
Colonnes calculées répétées (macro Jinja2 si motif) |
| Sort |
ORDER BY |
| Sample |
LIMIT N |
| Unique |
SELECT DISTINCT ou ROW_NUMBER() OVER (...) = 1 |
Jointures & combinaisons
| Outil Alteryx |
Noria (SQL) |
| Join |
INNER JOIN (L+R), LEFT JOIN (L only), RIGHT JOIN |
| Find Replace |
LEFT JOIN avec correspondance |
| Union |
UNION ALL |
| Append Fields |
CROSS JOIN (produit cartésien) |
Agrégation & pivot
| Outil Alteryx |
Noria (SQL) |
| Summarize |
GROUP BY + SUM(), COUNT(), AVG(), etc. |
| Cross Tab |
PIVOT (DuckDB) ou CASE WHEN col = 'x' THEN val |
| Transpose |
UNPIVOT (DuckDB) |
| Frequency Table |
SELECT col, COUNT(*) FROM t GROUP BY col |
Macros
| Macro Alteryx |
Noria |
| Standard Macro |
Macro Jinja2 dans sql/macros/ |
| Batch Macro |
loop: (liste) ou loop_from_query: (SQL) |
| Iterative Macro |
loop_from_query: avec condition d'arrêt |
| App parameter |
{{ params.nom }} |
Qualité
| Outil Alteryx |
Noria |
| Data Cleansing |
Colonnes avec TRIM(), COALESCE(), NULLIF() |
| Test Tool |
type: assert |
| Field Info |
DESCRIBE (DuckDB) |
Exemple complet
Workflow Alteryx (description)
Input : table RAW.VENTES
Filter : ANNEE = 2024
Formula : CA_TTC = CA_HT * 1.20, MOIS = DATEPART(month, DATE_VENTE)
Summarize : SUM(CA_TTC) par REGION et MOIS
Output : table DWH.PERF_REGION en remplacement total
Réécriture Noria
nodes:
perf_region_2024:
sql: sql/perf_region.sql
target: "{{ params.schema }}.perf_region"
output_write: replace
description: "Performance CA par région et mois — année {{ params.annee }}"
tags: [reporting, monthly]
params:
annee: 2024
-- sql/perf_region.sql
SELECT
region,
EXTRACT(MONTH FROM date_vente) AS mois,
COUNT(*) AS nb_ventes,
ROUND(SUM(ca_ht), 2) AS ca_ht,
ROUND(SUM(ca_ht * 1.20), 2) AS ca_ttc
FROM {{ params.schema_raw }}.ventes
WHERE EXTRACT(YEAR FROM date_vente) = {{ params.annee }}
GROUP BY
region,
EXTRACT(MONTH FROM date_vente)
ORDER BY region, mois