Cross-Stream Joins
Cross-stream joins let you combine data from two DataPool streams in a single Grid element. This is useful when related data lives in separate streams — for example, joining sales data with a department lookup table.
Enabling a Join
- Select a Grid element in the Designer
- Expand the Cross-Stream Join section in the sidebar
- Check Enable cross-stream join
- Select the second (joined) stream
- Set the primary key (field in the main stream) and foreign key (field in the joined stream)
Joined fields are prefixed with the stream name to avoid collisions. For example, if the joined stream is called departments, its fields appear as departments.name, departments.budget, etc.
Join Types
| Type | Behaviour |
|---|---|
| Inner | Only rows that have a match in both streams are shown. This is the default. |
| Left | All rows from the primary stream are shown. If there is no match in the joined stream, the joined fields are empty. |
Use Inner when you only want to display rows with complete data. Use Left when you want to show all primary rows regardless of whether a match exists.
Composite Keys
Sometimes a single field is not enough to uniquely identify a match between streams. Composite keys let you join on multiple field pairs simultaneously.
Click + Add Key Pair to add additional key fields beyond the primary/foreign key. All key fields must match for a row to be joined.
Example
Join sales data with targets using both region and product:
| Key Pair | Primary Field | Foreign Field |
|---|---|---|
| 1 (main) | region | country |
| 2 (additional) | product | item |
A row from the sales stream only joins with a target row when both the region/country AND product/item values match.
Composite keys are evaluated as an exact match on all key pairs. Partial matches (where only some key fields match) do not result in a join.
Performance Notes
- Joins are computed client-side in the browser, not on the server
- For large streams (1000+ items), inner joins are slightly faster than left joins since they produce fewer rows
- Composite keys add negligible overhead — the lookup is still O(1) per row