Objectif et prérequis
Laissez l’utilisateur choisir une région et un montant minimal sans modifier le flux lui-même.
Cet exemple utilise des données et paramètres de démonstration. Validez le résultat attendu dans votre propre environnement avant de connecter des destinations de production. Les identifiants demo_* sont illustratifs : sélectionnez vos propres connexions ou sources pédagogiques dans l’éditeur. Le JSON ci-dessous présente la structure des blocs et connexions, pas une archive de flux prête à transférer.
Données d’entrée pédagogiques
sales.csv
Order;Region;Amount
O1;North;1200
O2;North;400
O3;South;900
Blocs, connexions et paramètres exacts
Topologie de l’exemple 12 : 5 blocs, 4 connexions. Les identifiants de nœuds et les ports du graphe configuré sont conservés.
Ajoutez les blocs listés dans le concepteur, ouvrez les propriétés de chacun et définissez ces valeurs. Les noms demo_* désignent les sources et connexions pédagogiques.
| Bloc | Paramètre |
|---|---|
| 1 Fichier src |
|
| 2 Paramètres d’exécution params |
|
| 3 Filtrage filter |
|
| 4 Mappage des colonnes map |
|
| 5 Exportation de données out |
|
Connexions des ports
- src
out→ paramsin - params
out→ filterin - filter
out→ mapin - map
out→ outin
Configuration complète du graphe en JSON
{
"version": 3,
"nodes": [
{
"id": "src",
"type": "file",
"label": "src",
"config": {
"role": "source",
"source_id": "demo_param_sales",
"options": {
"sheet": "CSV",
"range": "A1:C4",
"header": true,
"delimiter": ";"
}
}
},
{
"id": "params",
"type": "parameters",
"label": "params",
"config": {
"wizard": true,
"title": "Відбір продажів",
"fields": [
{
"name": "SelectedRegion",
"label": "Регіон",
"kind": "text",
"required": true,
"value": "North"
},
{
"name": "MinAmount",
"label": "Мінімальна сума",
"kind": "number",
"required": true,
"value": 500
}
]
}
},
{
"id": "filter",
"type": "filter",
"label": "filter",
"config": {
"mode": "all",
"predicates": [
{
"column": "Region",
"op": "eq",
"value_mode": "parameter",
"parameter_block": "params",
"parameter": "SelectedRegion"
},
{
"column": "Amount",
"op": "gte",
"numeric": true,
"value_mode": "parameter",
"parameter_block": "params",
"parameter": "MinAmount"
}
]
}
},
{
"id": "map",
"type": "mapping",
"label": "map",
"config": {
"mode": "columns",
"columns": [
{
"name": "Order",
"value": "Order"
},
{
"name": "Region",
"value": "Region"
},
{
"name": "Amount",
"value": "Amount"
}
]
}
},
{
"id": "out",
"type": "export",
"label": "out",
"config": {
"format": "csv",
"filename": "selected_sales",
"destination": "download",
"delimiter": ";",
"timezone": "Europe/Kyiv"
}
}
],
"edges": [
{
"source": "src",
"target": "params",
"source_port": "out",
"target_port": "in"
},
{
"source": "params",
"target": "filter",
"source_port": "out",
"target_port": "in"
},
{
"source": "filter",
"target": "map",
"source_port": "out",
"target_port": "in"
},
{
"source": "map",
"target": "out",
"source_port": "out",
"target_port": "in"
}
]
}Résultat attendu
Avec SelectedRegion=North et MinAmount=500, seul O1=1200 est renvoyé. Avec SelectedRegion=South et MinAmount=500, seul O3=900 est renvoyé.
Exécuter et vérifier
- Enregistrez le flux ; les paramètres doivent précéder le filtre sur la même branche active. Après filtrage, le mappage conserve uniquement Order, Region et Amount.
- Exécutez de manière interactive, gardez North et 500, puis vérifiez O1.
- Relancez avec South ; obtenez O3 sans changer le graphe.
Erreurs courantes
- Indiquez parameter_block=params : le nom du champ seul n’identifie pas le bloc source.
- mode=any laisse passer les lignes respectant une seule condition.
- Ne nommez pas le paramètre Region, car cette colonne existe déjà dans la source : le bloc de paramètres ajoute ses propres colonnes. C’est pourquoi SelectedRegion est utilisé.