Завдання та передумови
Розділити замовлення на пріоритетні й звичайні за сумою, з окремим файлом для кожної гілки.
Приклад містить навчальні дані та налаштування. Виберіть власні тестові джерела й підключення замість ідентифікаторів demo_*, відтворіть очікуваний результат і лише потім використовуйте робочі об’єкти.
Навчальні вхідні дані
orders.csv
Order;Amount
O1;1200
O2;450
O3;1000
Блоки, зв’язки й точні налаштування
Топологія прикладу 10: 4 блоки, 3 зв’язки. Збережено ідентифікатори вузлів і порти налаштованого графа.
Додайте наведені блоки в конструктор, відкрийте властивості кожного й установіть такі значення. Назви demo_* позначають навчальні джерела та підключення.
| Блок | Налаштування |
|---|---|
| 1 Файл src |
|
| 2 Маршрутизація router |
|
| 3 Вивантаження даних priority_out |
|
| 4 Вивантаження даних regular_out |
|
Зв’язки портів
- src
out→ routerin - router
priority→ priority_outin - router
else→ regular_outin
Повна конфігурація графа 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.
Запуск і перевірка
- Підключіть priority_out саме до виходу priority, regular_out — до else.
- Перевірте numeric=true, щоб порівняння було числовим.
- Запустіть і перевірте, що сума кількостей вихідних рядків 2+1 дорівнює 3.
Типові помилки
- gt замість gte відправить суму 1000 до else.
- mode=all із кількома перетинними маршрутами може скопіювати рядок у кілька гілок.
- Якщо жоден рядок не потрапляє до маршруту, його експорт може бути пропущено; відсутній файл не обов’язково означає помилку.