Задача и предварительные условия
Разверните месяцы бюджетной книги и запишите четыре значения в учебный куб с явным сопоставлением каждого измерения.
В примере используются демонстрационные данные и настройки. Проверьте ожидаемый результат в своей среде до подключения рабочих получателей. Идентификаторы demo_* условны: выберите собственные учебные подключения или источники в редакторе. JSON ниже показывает структуру блоков и связей, а не готовый архив потока для переноса.
Учебные входные данные
| Продукт | Jan | Feb |
|---|---|---|
| Tea | 100 | 120 |
| Coffee | 80 | 90 |
Блоки, связи и точные настройки
Схема примера 17: блоков — 3, связей — 2. Идентификаторы узлов и порты настроенной схемы сохранены.
Добавьте перечисленные блоки в конструкторе, откройте свойства каждого и задайте эти значения. Имена demo_* обозначают учебные источники и подключения.
| Блок | Настройка |
|---|---|
| 1 Файл src |
|
| 2 Разворот столбцов в строки unpivot |
|
| 3 Подключение pa |
|
Связи портов
- src
out→ unpivotin - unpivot
out→ pain
Полная конфигурация схемы в 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"
}
]
}Ожидаемый результат
| Year | Month | Продукт | Scenario | Показатель | Значение |
|---|---|---|---|---|---|
| 2026 | Jan | Tea | Budget | Выручка | 100 |
| 2026 | Feb | Tea | Budget | Выручка | 120 |
| 2026 | Jan | Coffee | Budget | Выручка | 80 |
| 2026 | Feb | Coffee | Budget | Выручка | 90 |
Четыре ячейки получают значения 100, 120, 80 и 90. Replace устанавливает значения именно этих ячеек. Предварительная очистка куба не включена.
Запуск и проверка
- В учебном кубе DemoBudget создайте измерения Year, Month, Product, Scenario и Measure с показанными элементами; используйте конечные элементы, доступные для записи.
- Загрузите Excel и предварительно проверьте сопоставление: 4 координаты, нет неизвестных элементов или дублей.
- Выполните запись в учебный куб; проверьте ячейки IBM PA и сумму 390.
- Повторите поток с теми же данными: replace должен сохранить значения, а не удвоить бюджет.
Частые ошибки
- Если у куба есть дополнительное измерение, его тоже нужно сопоставить.
- Имена Month/Jan/Feb и Product/Tea/Coffee должны соответствовать реальным элементам или таблицам соответствий.
- mode=add добавляет к текущим ячейкам и может удвоить значения при повторе; здесь явно выбран replace.
- При duplicates=error повторную координату нужно исправить или намеренно агрегировать до записи.