Завдання та передумови

Скласти два набори продажів в одну таблицю за назвами колонок, навіть якщо їхній порядок відрізняється.

Приклад містить навчальні дані та налаштування. Виберіть власні тестові джерела й підключення замість ідентифікаторів demo_*, відтворіть очікуваний результат і лише потім використовуйте робочі об’єкти.

Навчальні вхідні дані

north.csv

Branch;Amount
North;100
North;40

south.csv

Amount;Branch
80;South

Блоки, зв’язки й точні налаштування

Пояснювальна схемаЗбільшити ↗09. Union: об’єднання даних філій. Топологія прикладу 09: 4 блоки, 3 зв’язки. Збережено ідентифікатори вузлів і порти налаштованого графа.
Схема потоку 09

Топологія прикладу 09: 4 блоки, 3 зв’язки. Збережено ідентифікатори вузлів і порти налаштованого графа.

Додайте наведені блоки в конструктор, відкрийте властивості кожного й установіть такі значення. Назви demo_* позначають навчальні джерела та підключення.

БлокНалаштування
1
Файл
north
  • Роль: source
  • Джерело: demo_north
  • Параметри читання:
    • Аркуш: CSV
    • Діапазон: A1:B3
    • Перший рядок — заголовок: так
    • Роздільник: ;
2
Файл
south
  • Роль: source
  • Джерело: demo_south
  • Параметри читання:
    • Аркуш: CSV
    • Діапазон: A1:B2
    • Перший рядок — заголовок: так
    • Роздільник: ;
3
Об’єднання (Union)
union
  • Входи:
      • Ідентифікатор: north
      • Підпис: Північ
      • Ідентифікатор: south
      • Підпис: Південь
  • Режим: by_name
4
Вивантаження даних
out
  • Формат: csv
  • Ім’я файлу: all_branches
  • Призначення: download
  • Роздільник: ;
  • Часовий пояс: Europe/Kyiv

Зв’язки портів

  • north out → union north
  • south out → union south
  • union out → out in
Повна конфігурація графа JSON
{
  "version": 3,
  "nodes": [
    {
      "id": "north",
      "type": "file",
      "label": "north",
      "config": {
        "role": "source",
        "source_id": "demo_north",
        "options": {
          "sheet": "CSV",
          "range": "A1:B3",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "south",
      "type": "file",
      "label": "south",
      "config": {
        "role": "source",
        "source_id": "demo_south",
        "options": {
          "sheet": "CSV",
          "range": "A1:B2",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "union",
      "type": "union",
      "label": "union",
      "config": {
        "inputs": [
          {
            "id": "north",
            "label": "Північ"
          },
          {
            "id": "south",
            "label": "Південь"
          }
        ],
        "mode": "by_name"
      }
    },
    {
      "id": "out",
      "type": "export",
      "label": "out",
      "config": {
        "format": "csv",
        "filename": "all_branches",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "north",
      "target": "union",
      "source_port": "out",
      "target_port": "north"
    },
    {
      "source": "south",
      "target": "union",
      "source_port": "out",
      "target_port": "south"
    },
    {
      "source": "union",
      "target": "out",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

Очікуваний результат

BranchAmount
North100
North40
South80

Union додає рядки; він не підсумовує Amount і не видаляє дублікати. Результат — 3 рядки, загальна сума 220.

Запуск і перевірка

  1. Завантажте файли з різним порядком колонок без ручного переставлення.
  2. У Union виберіть by_name і два окремі входи north/south.
  3. Перевірте, що South потрапив у Branch, а 80 — у Amount.

Типові помилки

  • mode=position зіставляє позиції й для цього набору поміняв би зміст колонок місцями.
  • Branch і branch — різні назви; спочатку узгодьте назви мапінгом.
  • Якщо потрібні підсумки, після Union додайте Group; сам Union їх не створює.