Objectif et prérequis
Corrigez les valeurs manquantes et les quantités négatives, remplacez les erreurs Excel et rejetez les lignes contenant du texte inacceptable.
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
quality.csv
ID;Qty;Price
A;;10
B;-2;5
C;3;#N/A
D;4;unknown
Blocs, connexions et paramètres exacts
Topologie de l’exemple 06 : 3 blocs, 2 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 Nettoyage et validation des données quality |
|
| 3 Exportation de données out |
|
Connexions des ports
- src
out→ qualityin - quality
out→ outin
Configuration complète du graphe en JSON
{
"version": 3,
"nodes": [
{
"id": "src",
"type": "file",
"label": "src",
"config": {
"role": "source",
"source_id": "demo_quality",
"options": {
"sheet": "CSV",
"range": "A1:C5",
"header": true,
"delimiter": ";"
}
}
},
{
"id": "quality",
"type": "quality",
"label": "quality",
"config": {
"rules": [
{
"fields": [
"Qty"
],
"condition": "empty",
"action": "replace",
"value": 0
},
{
"fields": [
"Qty"
],
"condition": "negative",
"action": "positive"
},
{
"fields": [
"Price"
],
"condition": "excel_error",
"action": "null"
},
{
"fields": [
"Price"
],
"condition": "invalid_number",
"action": "skip_row"
}
],
"whitespace_empty": true,
"log_limit": 20
}
},
{
"id": "out",
"type": "export",
"label": "out",
"config": {
"format": "json",
"filename": "quality_clean",
"destination": "download",
"delimiter": ";",
"timezone": "Europe/Kyiv"
}
}
],
"edges": [
{
"source": "src",
"target": "quality",
"source_port": "out",
"target_port": "in"
},
{
"source": "quality",
"target": "out",
"source_port": "out",
"target_port": "in"
}
]
}Résultat attendu
| ID | Qty | Price |
|---|---|---|
| A | 0 | 10 |
| B | 2 | 5 |
| C | 3 | NULL |
La ligne D est rejetée. Les règles sont successives : #N/A devient d’abord NULL et n’est plus considéré comme un nombre invalide par la règle suivante.
Exécuter et vérifier
- Chargez quality.csv et enregistrez les règles dans l’ordre illustré.
- Exécutez le flux, puis ouvrez les détails du bloc de qualité et le journal des remplacements.
- Vérifiez les 3 lignes du résultat, Qty(A)=0, Qty(B)=2 et Price(C)=NULL ; le journal est limité à 20 exemples de modification.
Erreurs courantes
- Intervertir les deux dernières règles change le résultat : #N/A peut être rejeté avant d’être remplacé par NULL.
- condition=invalid_number rejette les valeurs non numériques. condition=text rejette tout texte non vide, y compris les chaînes numériques CSV ; il ne convient pas à cet exemple.
- log_limit limite les exemples du journal, et non le nombre de lignes traitées.