Задача и предварительные условия

Рассчитайте выручку каждой продажи и подготовьте сводную таблицу по регионам.

В примере используются демонстрационные данные и настройки. Проверьте ожидаемый результат в своей среде до подключения рабочих получателей. Идентификаторы demo_* условны: выберите собственные учебные подключения или источники в редакторе. JSON ниже показывает структуру блоков и связей, а не готовый архив потока для переноса.

Учебные входные данные

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("Field name").
  • Добавление Qty или Price в ключи группировки создаёт лишние группы вместо итога региона.