Задача и предварительные условия
Позвольте пользователю выбирать регион и минимальную сумму без редактирования самого потока.
В примере используются демонстрационные данные и настройки. Проверьте ожидаемый результат в своей среде до подключения рабочих получателей. Идентификаторы demo_* условны: выберите собственные учебные подключения или источники в редакторе. JSON ниже показывает структуру блоков и связей, а не готовый архив потока для переноса.
Учебные входные данные
sales.csv
Order;Region;Amount
O1;North;1200
O2;North;400
O3;South;900
Блоки, связи и точные настройки
Схема примера 12: блоков — 5, связей — 4. Идентификаторы узлов и порты настроенной схемы сохранены.
Добавьте перечисленные блоки в конструкторе, откройте свойства каждого и задайте эти значения. Имена demo_* обозначают учебные источники и подключения.
| Блок | Настройка |
|---|---|
| 1 Файл src |
|
| 2 Параметры запуска params |
|
| 3 Фильтрация filter |
|
| 4 Сопоставление столбцов map |
|
| 5 Экспорт данных out |
|
Связи портов
- src
out→ paramsin - params
out→ filterin - filter
out→ mapin - map
out→ outin
Полная конфигурация схемы в JSON
{
"version": 3,
"nodes": [
{
"id": "src",
"type": "file",
"label": "src",
"config": {
"role": "source",
"source_id": "demo_param_sales",
"options": {
"sheet": "CSV",
"range": "A1:C4",
"header": true,
"delimiter": ";"
}
}
},
{
"id": "params",
"type": "parameters",
"label": "params",
"config": {
"wizard": true,
"title": "Відбір продажів",
"fields": [
{
"name": "SelectedRegion",
"label": "Регіон",
"kind": "text",
"required": true,
"value": "North"
},
{
"name": "MinAmount",
"label": "Мінімальна сума",
"kind": "number",
"required": true,
"value": 500
}
]
}
},
{
"id": "filter",
"type": "filter",
"label": "filter",
"config": {
"mode": "all",
"predicates": [
{
"column": "Region",
"op": "eq",
"value_mode": "parameter",
"parameter_block": "params",
"parameter": "SelectedRegion"
},
{
"column": "Amount",
"op": "gte",
"numeric": true,
"value_mode": "parameter",
"parameter_block": "params",
"parameter": "MinAmount"
}
]
}
},
{
"id": "map",
"type": "mapping",
"label": "map",
"config": {
"mode": "columns",
"columns": [
{
"name": "Order",
"value": "Order"
},
{
"name": "Region",
"value": "Region"
},
{
"name": "Amount",
"value": "Amount"
}
]
}
},
{
"id": "out",
"type": "export",
"label": "out",
"config": {
"format": "csv",
"filename": "selected_sales",
"destination": "download",
"delimiter": ";",
"timezone": "Europe/Kyiv"
}
}
],
"edges": [
{
"source": "src",
"target": "params",
"source_port": "out",
"target_port": "in"
},
{
"source": "params",
"target": "filter",
"source_port": "out",
"target_port": "in"
},
{
"source": "filter",
"target": "map",
"source_port": "out",
"target_port": "in"
},
{
"source": "map",
"target": "out",
"source_port": "out",
"target_port": "in"
}
]
}Ожидаемый результат
При SelectedRegion=North и MinAmount=500 возвращается только O1=1200. При SelectedRegion=South и MinAmount=500 — только O3=900.
Запуск и проверка
- Сохраните поток; параметры должны предшествовать фильтру в той же активной ветке. После фильтрации сопоставление оставляет только Order, Region и Amount.
- Запустите интерактивно, оставьте North и 500 и проверьте O1.
- Запустите снова с South; получите O3 без изменения схемы.
Частые ошибки
- Укажите parameter_block=params: одного имени поля недостаточно для определения блока-источника.
- mode=any пропускает строки, соответствующие только одному условию.
- Не называйте параметр Region: этот столбец уже существует в источнике, а блок параметров добавляет собственные столбцы. Поэтому используется SelectedRegion.