Objectif et prérequis

Dépivotez les mois d’un classeur de budget et écrivez quatre valeurs dans un cube pédagogique avec un mappage explicite de chaque dimension.

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

ProduitJanFeb
Tea100120
Coffee8090

Blocs, connexions et paramètres exacts

Schéma explicatifAgrandir ↗17. IBM Planning Analytics : du budget Excel au cube. Topologie de l’exemple 17 : 3 blocs, 2 connexions. Les identifiants de nœuds et les ports du graphe configuré sont conservés.
Schéma du flux 17

Topologie de l’exemple 17 : 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_pa_budget
  • Paramètres de lecture:
    • Feuille: Budget
    • Plage: A1:C3
    • La première ligne contient les en-têtes: так
2
Dépivoter les colonnes
unpivot
  • Colonnes clés: Product
  • Colonne de période: Month
  • Colonne de valeur: Amount
3
Connexion
pa
  • Rôle: target
  • Connexion: demo_pa
  • Type d’objet: cube
  • Cube: DemoBudget
  • Action de destination: write
  • Mappage:
    • Dimensions:
        • Dimension: Year
        • Hiérarchie: Year
        • Type: constant
        • Valeur: 2026
        • Dimension: Month
        • Hiérarchie: Month
        • Type: column
        • Valeur: Month
        • Dimension: Product
        • Hiérarchie: Product
        • Type: column
        • Valeur: Product
        • Dimension: Scenario
        • Hiérarchie: Scenario
        • Type: constant
        • Valeur: Budget
        • Dimension: Measure
        • Hiérarchie: Measure
        • Type: constant
        • Valeur: Revenue
    • Champ de valeur: Amount
    • Type de valeur: number
    • Séparateur décimal: .
    • Valeur vide: error
    • Coordonnées dupliquées: error
    • Cellules par lot: 10000
  • Écrire dans le cube:
    • Mode: replace

Connexions des ports

  • src out → unpivot in
  • unpivot out → pa in
Configuration complète du graphe en JSON
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_pa_budget",
        "options": {
          "sheet": "Budget",
          "range": "A1:C3",
          "header": true
        }
      }
    },
    {
      "id": "unpivot",
      "type": "unpivot",
      "label": "unpivot",
      "config": {
        "id_columns": [
          "Product"
        ],
        "period_column": "Month",
        "unpivot_value_column": "Amount"
      }
    },
    {
      "id": "pa",
      "type": "connection",
      "label": "pa",
      "config": {
        "role": "target",
        "connection_id": "demo_pa",
        "object_type": "cube",
        "cube": "DemoBudget",
        "target_mode": "write",
        "mapping": {
          "bindings": [
            {
              "dimension": "Year",
              "hierarchy": "Year",
              "kind": "constant",
              "value": "2026"
            },
            {
              "dimension": "Month",
              "hierarchy": "Month",
              "kind": "column",
              "value": "Month"
            },
            {
              "dimension": "Product",
              "hierarchy": "Product",
              "kind": "column",
              "value": "Product"
            },
            {
              "dimension": "Scenario",
              "hierarchy": "Scenario",
              "kind": "constant",
              "value": "Budget"
            },
            {
              "dimension": "Measure",
              "hierarchy": "Measure",
              "kind": "constant",
              "value": "Revenue"
            }
          ],
          "value_column": "Amount",
          "value_type": "number",
          "decimal": ".",
          "blank": "error",
          "duplicates": "error",
          "portion_cells": 10000,
          "response_seconds": 120
        },
        "cube_write": {
          "mode": "replace"
        }
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "unpivot",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "unpivot",
      "target": "pa",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

Résultat attendu

YearMonthProduitScenarioIndicateurValeur
2026JanTeaBudgetChiffre d’affaires100
2026FebTeaBudgetChiffre d’affaires120
2026JanCoffeeBudgetChiffre d’affaires80
2026FebCoffeeBudgetChiffre d’affaires90

Quatre cellules reçoivent les valeurs 100, 120, 80 et 90. Replace définit les valeurs de ces cellules précises. L’effacement préalable du cube n’est pas activé.

Exécuter et vérifier

  1. Dans le cube pédagogique DemoBudget, créez les dimensions Year, Month, Product, Scenario et Measure avec les éléments illustrés ; utilisez des éléments feuilles accessibles en écriture.
  2. Chargez le fichier Excel et prévalidez le mappage : 4 coordonnées, aucun élément inconnu ni doublon.
  3. Exécutez l’écriture dans le cube pédagogique ; vérifiez les cellules dans IBM PA et le total de 390.
  4. Répétez le flux avec les mêmes données : replace doit conserver les mêmes valeurs plutôt que doubler le budget.

Erreurs courantes

  • Si le cube a une dimension supplémentaire, elle doit également être mappée.
  • Les noms Month/Jan/Feb et Product/Tea/Coffee doivent correspondre aux éléments réels ou aux tables de correspondance.
  • mode=add additionne aux cellules actuelles et peut doubler les valeurs en cas de répétition ; replace est explicitement sélectionné ici.
  • Avec duplicates=error, une coordonnée répétée doit être corrigée ou volontairement agrégée avant l’écriture.