Завдання та передумови
Виправити пропуски й від’ємні кількості, замінити помилки Excel та відкинути рядки з неприйнятним текстом.
Приклад містить навчальні дані та налаштування. Виберіть власні тестові джерела й підключення замість ідентифікаторів demo_*, відтворіть очікуваний результат і лише потім використовуйте робочі об’єкти.
Навчальні вхідні дані
quality.csv
ID;Qty;Price
A;;10
B;-2;5
C;3;#N/A
D;4;unknown
Блоки, зв’язки й точні налаштування
Топологія прикладу 06: 3 блоки, 2 зв’язки. Збережено ідентифікатори вузлів і порти налаштованого графа.
Додайте наведені блоки в конструктор, відкрийте властивості кожного й установіть такі значення. Назви demo_* позначають навчальні джерела та підключення.
| Блок | Налаштування |
|---|---|
| 1 Файл src |
|
| 2 Очищення та контроль даних quality |
|
| 3 Вивантаження даних out |
|
Зв’язки портів
- src
out→ qualityin - quality
out→ outin
Повна конфігурація графа JSON
{
"version": 3,
"nodes": [
{
"id": "src",
"type": "file",
"label": "src",
"config": {
"role": "source",
"source_id": "demo_quality",
"options": {
"sheet": "CSV",
"range": "A1:C5",
"header": true,
"delimiter": ";"
}
}
},
{
"id": "quality",
"type": "quality",
"label": "quality",
"config": {
"rules": [
{
"fields": [
"Qty"
],
"condition": "empty",
"action": "replace",
"value": 0
},
{
"fields": [
"Qty"
],
"condition": "negative",
"action": "positive"
},
{
"fields": [
"Price"
],
"condition": "excel_error",
"action": "null"
},
{
"fields": [
"Price"
],
"condition": "invalid_number",
"action": "skip_row"
}
],
"whitespace_empty": true,
"log_limit": 20
}
},
{
"id": "out",
"type": "export",
"label": "out",
"config": {
"format": "json",
"filename": "quality_clean",
"destination": "download",
"delimiter": ";",
"timezone": "Europe/Kyiv"
}
}
],
"edges": [
{
"source": "src",
"target": "quality",
"source_port": "out",
"target_port": "in"
},
{
"source": "quality",
"target": "out",
"source_port": "out",
"target_port": "in"
}
]
}Очікуваний результат
| ID | Qty | Price |
|---|---|---|
| A | 0 | 10 |
| B | 2 | 5 |
| C | 3 | NULL |
Рядок D відкинуто. Правила виконуються по черзі: #N/A спочатку стає NULL і вже не вважається некоректним числом для наступного правила.
Запуск і перевірка
- Завантажте quality.csv та збережіть правила в наведеному порядку.
- Виконайте потік і відкрийте відомості блоку якості та журнал замін.
- Звірте 3 рядки результату, Qty(A)=0, Qty(B)=2, Price(C)=NULL; журнал обмежено 20 прикладами змін.
Типові помилки
- Перестановка останніх двох правил змінить результат: #N/A може бути відкинуто до заміни на NULL.
- condition=invalid_number відкидає нечислові значення. condition=text відкине будь-який непорожній текст, зокрема числові рядки CSV; для цього прикладу він не підходить.
- log_limit обмежує приклади в журналі, а не кількість оброблених рядків.