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

Разделите заказы на приоритетные и обычные по сумме с отдельным файлом для каждой ветки.

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

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

orders.csv

Order;Amount
O1;1200
O2;450
O3;1000

Блоки, связи и точные настройки

Поясняющая схемаУвеличить ↗10. Маршрутизация крупных заказов. Схема примера 10: 4 блока, 3 связи. Идентификаторы узлов и порты настроенной схемы сохранены.
Схема потока 10

Схема примера 10: блоков — 4, связей — 3. Идентификаторы узлов и порты настроенной схемы сохранены.

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

БлокНастройка
1
Файл
src
  • Роль: source
  • Источник: demo_orders
  • Настройки чтения:
    • Лист: CSV
    • Диапазон: A1:B4
    • Первая строка — заголовок: так
    • Разделитель: ;
2
Маршрутизация
router
  • Режим: first
  • Маршрут по умолчанию: так
  • Маршруты:
      • Идентификатор: priority
      • Подпись: Від 1000
      • Режим: all
      • Условия отбора:
          • column: Amount
          • Эксплуатация: gte
          • Значение: 1000
          • Числовое сравнение: так
          • value_mode: constant
3
Экспорт данных
priority_out
  • Формат: csv
  • Имя файла: priority_orders
  • Назначение: download
  • Разделитель: ;
  • Часовой пояс: Europe/Kyiv
4
Экспорт данных
regular_out
  • Формат: csv
  • Имя файла: regular_orders
  • Назначение: download
  • Разделитель: ;
  • Часовой пояс: Europe/Kyiv

Связи портов

  • src out → router in
  • router priority → priority_out in
  • router else → regular_out in
Полная конфигурация схемы в JSON
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_orders",
        "options": {
          "sheet": "CSV",
          "range": "A1:B4",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "router",
      "type": "router",
      "label": "router",
      "config": {
        "mode": "first",
        "default_route": true,
        "routes": [
          {
            "id": "priority",
            "label": "Від 1000",
            "mode": "all",
            "predicates": [
              {
                "column": "Amount",
                "op": "gte",
                "value": 1000,
                "numeric": true,
                "value_mode": "constant"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "priority_out",
      "type": "export",
      "label": "priority_out",
      "config": {
        "format": "csv",
        "filename": "priority_orders",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    },
    {
      "id": "regular_out",
      "type": "export",
      "label": "regular_out",
      "config": {
        "format": "csv",
        "filename": "regular_orders",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "router",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "router",
      "target": "priority_out",
      "source_port": "priority",
      "target_port": "in"
    },
    {
      "source": "router",
      "target": "regular_out",
      "source_port": "else",
      "target_port": "in"
    }
  ]
}

Ожидаемый результат

priority_orders.csv: O1=1200 и O3=1000. regular_orders.csv: O2=450. Граница 1000 включена благодаря gte.

Запуск и проверка

  1. Подключите priority_out именно к выходу priority, а regular_out — к else.
  2. Проверьте numeric=true для числового сравнения.
  3. Запустите и проверьте, что количества выходных строк в сумме равны входу: 2+1=3.

Частые ошибки

  • gt вместо gte направил бы сумму 1000 в else.
  • mode=all с несколькими пересекающимися маршрутами может копировать строку в несколько веток.
  • Если в маршрут не попала ни одна строка, экспорт может быть пропущен; отсутствие файла не обязательно означает ошибку.