Add and connect nodes
We explain how to add nodes that make up a workflow and connect data flows.
How to add nodes
1. Quick Add

From the Quick Add section on the left panel, drag and drop the desired nodes onto the canvas. This node list (palette) is grouped into dataset (Delta, Kafka, REST), ontology (entity, relationship), and code (Python, SQL).
2. Import from collection
In the Collection tree on the left panel, find and drag the Dataset·Code you have already created. This is the best way to rewrite existing resources, and even the object dataset that is not available in Quick Add is imported here. Ontological entities and relationships are added through quick addition, not through the collection tree.
3. Right-mouse menu
If you right-click on an empty space on the canvas, you can add nodes with the following items.
| Menu Items | Description |
|---|---|
| Add dataset | Select from Delta/Kafka/REST submenu |
| Add code | Python/SQL |
| Add entity / Add relationship | Ontology entity/relationship node |
| Auto Sort | Node automatic placement |
When you right-click on a node, the following options are available:
| Menu Items | Description |
|---|---|
| Edit | Open the Properties panel |
| Duplicate | node replication |
| Add result dataset | (Code Node) Create and connect an output dataset node |
| Delete | delete node |
4. Keyboard shortcuts
- Add dataset node:
Ctrl(Cmd) + Shift + D - Add code node:
Ctrl(Cmd) + Shift + C
Code Node Reference and Save-As Model
Code nodes operate by loading common code assets stored in collections from the pipeline. This allows the same code to be rewritten in multiple pipelines. When editing code in the Properties panel, follow these rules:
- If you open the loaded code node and modify its contents, Select save method will appear in the properties panel.
- Select Overwrite Original if you have permission to edit the original, or Save As if you do not have permission to edit the original to create a copy just for this pipeline.
- Saving as a copy leaves the original code assets intact and does not affect other pipelines.
Splitting into copies like this does not happen automatically. The user decides when to separate.
Node type
Dataset Node
It acts as a source or sink for data. Use the appropriate connection method depending on the subtype of the dataset (type: delta / kafka / rest / object).
| subtype | Description | Use |
|---|---|---|
delta | version control table | Batch data processing, version control |
kafka | message stream | Real-time streaming data |
rest | HTTP endpoint | External API call |
object | File/Object Storage | Unstructured file input/output |
The properties panel of a dataset node shows Schema and Data as read-only. Dataset connection (input/output) and read mode/write mode are set in the option tab of the connected code node, not in the dataset node (see Connect nodes below).
Code Node
Performs logic to convert and process data. The execution engine is selected according to type (python or sql) in the code resource.
| Type | Use |
|---|---|
| Python | General-purpose data processing, ML model application, external API call |
| SQL | Transform, aggregate, join, filter data |
The code execution contract is:
Python — Define the function run(input, *, options=None, contexts=None) and return it in format {"output": DataFrame} (the input is a Polars DataFrame). options is an option passed to the step, and contexts is a value shared between steps and is always passed, so it is accepted as an argument even if it is not used.
import polars as pl
def run(input, *, options=None, contexts=None):
output = input.filter(pl.col("total") > 1000)
return {"output": output}
SQL — input is used as the input table name, and the query results are output.
SELECT category, SUM(amount) AS total_amount, COUNT(*) AS order_count
FROM input
GROUP BY category
ORDER BY total_amount DESC
Entity / Relation node (ontology resource)
Entity and Relationship defined by ontology can also be used as input and output of a step.

- PK Required: Entities and relationships must have identity keys. If the key is empty, a warning icon is displayed on the node.
- backing dataset: Nodes are connected to the underlying dataset that the entity/relationship actually points to. You can check which column/key it is connected to in the Property tab of the property panel.
- Display Column: This is the column that will be displayed on behalf of each instance.
Connect nodes
- Dataset / Entity / Relation node → Code node: Read data (source)
- Code node → Dataset / Entity / Relation node: Write data (sink)
- Code Node → Code Node: Passing intermediate results
- Dataset → Dataset direct connection is not allowed (requires a code node in the middle).
After placing nodes, see Connect nodes to configure direction, allowed combinations, and read and write modes.
Node management
- Move: Drag the node to change its position.
- Duplicate: Select a node and use Duplicate or
Ctrl(Cmd)+Din the right-click menu. - Delete: Select the node and press the
Deletekey or select Delete from the right-click menu. - Auto-Arrange: Select a layout from the Auto-Arrange dropdown in the canvas control.
| Layout | Description |
|---|---|
| Left → Right (LR) | From left to right |
| Top → Bottom (TB) | From top to bottom |
| Pipeline DAG | Arranged in the form of a node flow diagram (directed acyclic graph) |
| Force-Directed | Force-based automatic alignment |
| Circular | Circular Layout |
| Grid | Grid Layout |
- Group selection:
Shift+ Select multiple nodes at once by dragging.
Name and alias, clone
Each node has a name and alias. The name is an identifier (table name) that must be unique among the same type within the pipeline, and the alias is a name for display on the screen. Aliases can be freely changed in the Overview tab, but the name is a resource identifier and is therefore usually read-only (only newly added dataset drafts can edit the name).
- Clone Name Rule: When a node is cloned, its name is followed by
_copy(e.g.orders→orders_copy). If the same name already exists, numbers follow, such as_copy_2,_copy_3(_copy_1is not used). - Inducing duplication when reusing existing resources: If you reselect a dataset/entity/relationship already in the pipeline with the same type/name in the input/output selector of the Options tab of the code node, the Save As New Name window opens to create a copy of the new name and connect it to avoid name conflicts (for more information, see Node Connection).