Задача и предварительные условия
Исправьте пропуски и отрицательные количества, замените ошибки Excel и отклоните строки с недопустимым текстом.
В примере используются демонстрационные данные и настройки. Проверьте ожидаемый результат в своей среде до подключения рабочих получателей. Идентификаторы demo_* условны: выберите собственные учебные подключения или источники в редакторе. JSON ниже показывает структуру блоков и связей, а не готовый архив потока для переноса.
Учебные входные данные
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 и сохраните правила в показанном порядке.
- Запустите поток и откройте подробности блока quality и журнал замен.
- Проверьте 3 строки результата, Qty(A)=0, Qty(B)=2 и Price(C)=NULL; журнал ограничен 20 примерами изменений.
Частые ошибки
- Перестановка последних двух правил меняет результат: #N/A может быть отклонена до замены на NULL.
- condition=invalid_number отклоняет нечисловые значения. condition=text отклоняет любой непустой текст, включая числовые строки CSV; для этого примера он не подходит.
- log_limit ограничивает примеры в журнале, а не количество обработанных строк.