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

Розділити замовлення на пріоритетні й звичайні за сумою, з окремим файлом для кожної гілки.

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

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

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 із кількома перетинними маршрутами може скопіювати рядок у кілька гілок.
  • Якщо жоден рядок не потрапляє до маршруту, його експорт може бути пропущено; відсутній файл не обов’язково означає помилку.