Task and prerequisites
Let the user choose a region and minimum amount without editing the flow itself.
This example uses demonstration data and settings. Validate the expected result in your own environment before connecting production destinations. Identifiers demo_* are illustrative: select your own training connections or sources in the editor. The JSON below shows the block and connection structure, not a ready-to-transfer flow archive.
Training input data
sales.csv
Order;Region;Amount
O1;North;1200
O2;North;400
O3;South;900
Blocks, connections and exact settings
Example 12 topology: 5 blocks, 4 connections. Node identifiers and ports from the configured graph are preserved.
Add the listed blocks in the designer, open each block's properties and set these values. Names demo_* identify training sources and connections.
| Block | Setting |
|---|---|
| 1 File src |
|
| 2 Run parameters params |
|
| 3 Filtering filter |
|
| 4 Column mapping map |
|
| 5 Data export out |
|
Port connections
- src
out→ paramsin - params
out→ filterin - filter
out→ mapin - map
out→ outin
Complete graph configuration as 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"
}
]
}Expected result
With SelectedRegion=North and MinAmount=500, only O1=1200 is returned. With SelectedRegion=South and MinAmount=500, only O3=900 is returned.
Run and verify
- Save the flow; parameters must precede the filter on the same active branch. After filtering, mapping retains only Order, Region and Amount.
- Run interactively, keep North and 500, and verify O1.
- Run again with South; obtain O3 without changing the graph.
Common errors
- Specify parameter_block=params: the field name alone does not identify the source block.
- mode=any lets through rows matching just one condition.
- Do not name the parameter Region because that column already exists in the source: the parameter block adds its own columns. This is why SelectedRegion is used.