Objectif et prérequis

Répartissez les commandes entre prioritaires et ordinaires selon leur montant, avec un fichier distinct par branche.

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

orders.csv

Order;Amount
O1;1200
O2;450
O3;1000

Blocs, connexions et paramètres exacts

Schéma explicatifAgrandir ↗10. Orienter les grosses commandes. Topologie de l’exemple 10 : 4 blocs, 3 connexions. Les identifiants de nœuds et les ports du graphe configuré sont conservés.
Schéma du flux 10

Topologie de l’exemple 10 : 4 blocs, 3 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.

BlocParamètre
1
Fichier
src
  • Rôle: source
  • Source: demo_orders
  • Paramètres de lecture:
    • Feuille: CSV
    • Plage: A1:B4
    • La première ligne contient les en-têtes: так
    • Séparateur: ;
2
Routage
router
  • Mode: first
  • Route par défaut: так
  • Routes:
      • Identifiant: priority
      • Libellé: Від 1000
      • Mode: all
      • Conditions de sélection:
          • column: Amount
          • Exploitation: gte
          • Valeur: 1000
          • Comparaison numérique: так
          • value_mode: constant
3
Exportation de données
priority_out
  • Format: csv
  • Nom du fichier: priority_orders
  • Rôle: download
  • Séparateur: ;
  • Fuseau horaire: Europe/Kyiv
4
Exportation de données
regular_out
  • Format: csv
  • Nom du fichier: regular_orders
  • Rôle: download
  • Séparateur: ;
  • Fuseau horaire: Europe/Kyiv

Connexions des ports

  • src out → router in
  • router priority → priority_out in
  • router else → regular_out in
Configuration complète du graphe en JSON
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_orders",
        "options": {
          "sheet": "CSV",
          "range": "A1:B4",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "router",
      "type": "router",
      "label": "router",
      "config": {
        "mode": "first",
        "default_route": true,
        "routes": [
          {
            "id": "priority",
            "label": "Від 1000",
            "mode": "all",
            "predicates": [
              {
                "column": "Amount",
                "op": "gte",
                "value": 1000,
                "numeric": true,
                "value_mode": "constant"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "priority_out",
      "type": "export",
      "label": "priority_out",
      "config": {
        "format": "csv",
        "filename": "priority_orders",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    },
    {
      "id": "regular_out",
      "type": "export",
      "label": "regular_out",
      "config": {
        "format": "csv",
        "filename": "regular_orders",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "router",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "router",
      "target": "priority_out",
      "source_port": "priority",
      "target_port": "in"
    },
    {
      "source": "router",
      "target": "regular_out",
      "source_port": "else",
      "target_port": "in"
    }
  ]
}

Résultat attendu

priority_orders.csv: O1=1200 et O3=1000. regular_orders.csv: O2=450. La limite 1000 est incluse grâce à gte.

Exécuter et vérifier

  1. Connectez précisément priority_out à la sortie priority et regular_out à else.
  2. Vérifiez numeric=true pour une comparaison numérique.
  3. Exécutez et vérifiez que les nombres de lignes en sortie donnent le nombre d’entrée : 2+1=3.

Erreurs courantes

  • gt au lieu de gte enverrait un montant de 1000 vers else.
  • mode=all avec plusieurs routes qui se recouvrent peut copier une ligne dans plusieurs branches.
  • Si aucune ligne n’arrive à une route, son export peut être ignoré ; un fichier absent ne signifie pas nécessairement une erreur.