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

Обчислити виручку кожного продажу й підготувати підсумкову таблицю за регіонами.

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

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

sales.csv

Region;Qty;Price
North;2;10
North;3;5
South;4;7.5

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

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

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

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

БлокНалаштування
1
Файл
src
  • Роль: source
  • Джерело: demo_sales_calc
  • Параметри читання:
    • Аркуш: CSV
    • Діапазон: A1:C4
    • Перший рядок — заголовок: так
    • Роздільник: ;
2
Розрахункові поля
calc
  • Поля:
      • Назва: Revenue
      • Формула: round(number(field("Qty")) * number(field("Price")), 2)
  • Десятковий роздільник: .
3
Групування
group
  • Ключі: Region
  • aggregates:
      • column: Revenue
      • Операція: sum
      • Назва: RevenueTotal
      • column: Revenue
      • Операція: count
      • Назва: Orders
  • Десятковий роздільник: .
4
Вивантаження даних
out
  • Формат: xlsx
  • Ім’я файлу: regional_sales
  • Призначення: download
  • Роздільник: ;
  • Часовий пояс: Europe/Kyiv

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

  • src out → calc in
  • calc out → group in
  • group out → out in
Повна конфігурація графа JSON
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_sales_calc",
        "options": {
          "sheet": "CSV",
          "range": "A1:C4",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "calc",
      "type": "calculation",
      "label": "calc",
      "config": {
        "fields": [
          {
            "name": "Revenue",
            "expression": "round(number(field(\"Qty\")) * number(field(\"Price\")), 2)"
          }
        ],
        "decimal": "."
      }
    },
    {
      "id": "group",
      "type": "group",
      "label": "group",
      "config": {
        "keys": [
          "Region"
        ],
        "aggregates": [
          {
            "column": "Revenue",
            "op": "sum",
            "name": "RevenueTotal"
          },
          {
            "column": "Revenue",
            "op": "count",
            "name": "Orders"
          }
        ],
        "decimal": "."
      }
    },
    {
      "id": "out",
      "type": "export",
      "label": "out",
      "config": {
        "format": "xlsx",
        "filename": "regional_sales",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "calc",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "calc",
      "target": "group",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "group",
      "target": "out",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

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

RegionRevenueTotalOrders
North352
South301

Розраховані значення Revenue до групування: 20, 15, 30. Загальна виручка — 65.

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

  1. Перевірте десятковий роздільник: для 7.5 використано decimal=".".
  2. Створіть обчислюване поле Revenue, потім групування за Region.
  3. Запустіть і звірте підсумки 35/30 та кількість 2/1; не порівнюйте лише загальну кількість рядків.

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

  • Формула не використовує довільний код: функції й операції мають бути з каталогу.
  • Для назв з пробілами використовуйте field("Назва поля").
  • Якщо додати Qty або Price до ключів групування, замість регіонального підсумку утворяться додаткові групи.