Automated migration results
When Import detects an Alteryx Join Multiple tool:- It generates a single Join gem with multiple input ports.
- For later inputs, Import may implement coalesced join logic to match Alteryx’s multi-input semantics (for example,
coalesce(in0.Name, in1.Name) = in2.Name). - Join-field name conflicts are handled by aliasing fields under Expressions (for example, mapping
Namefromin1andin2to names likeInput_hash2_Name) and using those aliases in join conditions. - For Join by Record Position, Import adds a SQL gem per input to generate
recordPositionForJoin, then configures the Join gem to join onrecordPositionForJoin.
Manually replicate in Prophecy
- Add a Join gem and use Add port to connect three or more inputs.
- Choose the join type (inner, left outer, right outer, full outer, semi, or anti).
- Configure join conditions for each additional input, selecting the join columns and comparison operator (such as
equals). - For joins with more than two inputs, you may need to implement join conditions using
coalesce(...)(such ascoalesce(in0.Name, in1.Name) = in2.Name). - Under Expressions, alias join fields to resolve naming conflicts (for example,
Input_hash2_Name = in1.Name) and use those aliased names in join conditions and output selection.
Configuration options
Alteryx Join Multiple
- Add two or more input connections to the Join tool.
- Choose whether to join by record position or by specific field(s).
- For field-based joins, select the join field for each input. Multiple join fields can be used to refine matching.
- Choose whether to return only records that meet all join criteria (inner join behavior) or all records with NULLs where joins do not match (full outer join behavior).
- Configure Cartesian join handling: warnings or errors for multidimensional joins that may significantly increase row counts.
- Rename, reorder, or exclude output columns using the configuration table.
Prophecy Join gem (multiple inputs)
- Add three or more input datasets using Add port to connect additional inputs.
- Select the join type.
- For each additional input, define the join condition by selecting the join columns and comparison operator (such as
equals). - When later inputs must match against values from earlier inputs, use expressions such as
coalesce(in0.Name, in1.Name)in the join condition. - Under Expressions, rename or alias join fields as needed (for example,
Input_hash2_Name = in1.Name) to resolve naming conflicts. - Use expressions such as
in0.*,in1.*, orin2.* EXCEPT (CustomerID)to control which columns are included in the output.
Join by record position in Prophecy
To replicate a record-position join:-
For each input dataset, add a RecordID gem configured to generate a positional index, such as
recordPositionForJoin. -
Add a Join gem that joins the outputs of the RecordID gems configured as an Inner Join on
recordPositionForJoin. -
In the same Join gem, remove the helper column by adding an expression along the lines of the following:
Output behavior
Alteryx Join Multiple produces a single joined output (full outer join by default). Prophecy’s Join gem also produces a single output dataset, with results determined by the selected join type and join conditions.Known caveats
- Join by record position requires generating a
recordPositionForJoincolumn for each input prior to joining. - Field naming conflicts may require explicit aliasing under Expressions (for example,
Input_hash2_Name) to keep join conditions unambiguous. - Coalesced join conditions (for example,
coalesce(in0.Name, in1.Name) = in2.Name) can be harder to reason about and may require validation against expected match behavior.
Example
Alteryx
- Add a Join Multiple tool connected to
Customers,Orders, andPreferences. - Select Join by Specific Fields and select
CustomerIDfor each column.
Prophecy
- Add a Join gem and configure it as a Full Outer Join.
- In the right pane, select Add Port (Join gems have two inputs by default).
-
Connect
Customers,Orders, andPreferencesto the Join gem. -
Join the first two inputs on the shared key:
- First column:
Customers.CustomerID - Join condition:
equals - Second column:
Orders.CustomerID
- First column:
-
For the third input, add a
custom_codecondition:
CustomerID, matching Alteryx Join Multiple’s default full-outer behavior.
