Objectif et prérequis

Prenez le tableau data.items d’un JSON et créez un CSV plat avec un ordre de colonnes cohérent.

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

{
  "data": {
    "items": [
      {
        "sku": "T01",
        "name": "Tea",
        "stock": 12
      },
      {
        "sku": "C01",
        "name": "Coffee",
        "stock": 5
      }
    ]
  },
  "generated": "demo"
}

Blocs, connexions et paramètres exacts

Schéma explicatifAgrandir ↗03. JSON : extraire un tableau d’enregistrements imbriqués. Topologie de l’exemple 03 : 3 blocs, 2 connexions. Les identifiants de nœuds et les ports du graphe configuré sont conservés.
Schéma du flux 03

Topologie de l’exemple 03 : 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.

BlocParamètre
1
Fichier
src
  • Rôle: source
  • Source: demo_inventory_json
  • Paramètres de lecture:
    • Chemin des enregistrements JSON: /data/items
    • Plage: A1:C3
    • La première ligne contient les en-têtes: так
2
Mappage des colonnes
map
  • Mode: columns
  • Colonnes:
      • Nom: SKU
      • Valeur: sku
      • Nom: Name
      • Valeur: name
      • Nom: Stock
      • Valeur: stock
3
Exportation de données
out
  • Format: csv
  • Nom du fichier: inventory
  • Rôle: download
  • Séparateur: ;
  • Fuseau horaire: Europe/Kyiv

Connexions des ports

  • src out → map in
  • map out → out in
Configuration complète du graphe en JSON
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_inventory_json",
        "options": {
          "json_path": "/data/items",
          "range": "A1:C3",
          "header": true
        }
      }
    },
    {
      "id": "map",
      "type": "mapping",
      "label": "map",
      "config": {
        "mode": "columns",
        "columns": [
          {
            "name": "SKU",
            "value": "sku"
          },
          {
            "name": "Name",
            "value": "name"
          },
          {
            "name": "Stock",
            "value": "stock"
          }
        ]
      }
    },
    {
      "id": "out",
      "type": "export",
      "label": "out",
      "config": {
        "format": "csv",
        "filename": "inventory",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "map",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "map",
      "target": "out",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

Résultat attendu

SKUNomStock
T01Tea12
C01Coffee5

Exécuter et vérifier

  1. Enregistrez le JSON illustré sous inventory.json et ajoutez-le comme source de fichier.
  2. Définissez json_path=/data/items et utilisez les noms d’origine exacts sku, name et stock dans le mappage.
  3. Exécutez et vérifiez inventory.csv : deux lignes, sans le champ de métadonnées généré.

Erreurs courantes

  • La source de fichier utilise le JSON Pointer /data/items. Il diffère du chemin data.items d’une connexion API REST.
  • Le chemin doit mener aux enregistrements : une erreur dans items produit un chemin absent ou une structure incorrecte.
  • Le mappage exige des noms de champs exacts ; SKU est le nom de sortie et sku celui d’entrée.