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
| Produit | Jan | Feb |
|---|---|---|
| Tea | 100 | 120 |
| Coffee | 80 | 90 |
Blocs, connexions et paramètres exacts
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.
| Bloc | Paramètre |
|---|---|
| 1 Fichier src |
|
| 2 Dépivoter les colonnes unpivot |
|
| 3 Connexion pa |
|
Connexions des ports
- src
out→ unpivotin - unpivot
out→ pain
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
| Year | Month | Produit | Scenario | Indicateur | Valeur |
|---|---|---|---|---|---|
| 2026 | Jan | Tea | Budget | Chiffre d’affaires | 100 |
| 2026 | Feb | Tea | Budget | Chiffre d’affaires | 120 |
| 2026 | Jan | Coffee | Budget | Chiffre d’affaires | 80 |
| 2026 | Feb | Coffee | Budget | Chiffre d’affaires | 90 |
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
- 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.
- Chargez le fichier Excel et prévalidez le mappage : 4 coordonnées, aucun élément inconnu ni doublon.
- Exécutez l’écriture dans le cube pédagogique ; vérifiez les cellules dans IBM PA et le total de 390.
- 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.