Skip to content

Multi-Table Join Step

The Multi-Table Join step joins many tables in a single operation. Instead of chaining a series of two-table joins — where you lose the big picture and repeat the same output mapping — you lay every table out on a visual join-graph designer, draw the joins between their columns, and produce one result table.

It’s built for the common shape of analytics joins: one fact table joined to several dimension or lookup tables. You can join up to 32 tables at once.

Add it like any other step and choose Multi-Table Join (under the Tables group of the step menu, or drag it from the palette on the Advanced workflow canvas). The step’s editor has four tabs:

  1. Tables & Joins — the visual designer where you add tables and draw joins.
  2. Output Columns — the columns the result table will contain.
  3. Post-Join Filter — an optional filter applied to the joined result.
  4. Advanced (server-set) — settings managed by the server; you rarely touch these.

A status indicator shows Ready to save or Unsaved changes as you work.

Choose Add Table to place a source table on the canvas. Each table shows as a card listing its columns, and gets an alias — a short name you use to reference its columns elsewhere (as alias.column). An alias must start with a letter or underscore and can’t be a SQL keyword. Add as many as you need (up to 32), and pick the Target Table the result is written to.

If a table’s columns change in the catalog, use Re-fetch from server to replace the card’s columns with the latest values.

Drag from a column dot on one table to a column on another to create a join (an edge). Select an edge to open its editor on the right, where you set:

  • Join type:

    TypeKeeps
    INNERmatches only
    LEFTall rows from the left table
    FULLall rows from both sides
    CROSSevery left row combined with every right row (no conditions)
  • Join conditions — one or more comparisons between the two tables’ columns. Add more with + Add condition, combine them with AND / OR, and use the full set of operators (=, <>, <, <=, >, >=, BETWEEN, IS NULL, IS NOT NULL, IN, NOT IN, LIKE, NOT LIKE).

  • Label (optional) — name the join (for example, customer-to-orders) to make the diagram easier to read.

The designer keeps the join graph as a tree — each table connects into the result through exactly one join, so there are no cycles or ambiguous paths, and a table can’t be joined to itself. To remove a join, select the edge and choose Delete edge.

Each source table has an Inbound Filter applied before the join — use it to cut a table down to the rows you care about (reference its columns as alias.column). This is separate from the Post-Join Filter, which runs after all the joins.

  • Tidy Layout auto-arranges the tables and joins left-to-right by join order.
  • Fit to View scales and centers so the whole graph fits; you can also pan and zoom manually.
  • Filter columns… narrows the columns shown on the cards when a table has many.
  • Undo / Redo step backward and forward through your edits (Ctrl+Z / Ctrl+Y), and History opens a panel of every change since you opened the dialog, with Restore.
  • Export downloads the join diagram as an SVG image — handy for documentation or review.

On the Output Columns tab, choose the columns the result table will contain. Pick from any joined table — use Add selected, Add all source columns, or Pick from canvas… to choose visually. For each column you can rename it, set its data type, and apply an aggregation. When two source columns share a name, PlaidCloud prefixes them with their source alias so they don’t collide.

The Post-Join Filter tab applies an optional filter to the joined result before it’s written to the target table — the equivalent of a SQL HAVING clause. Reference result columns by name.

PlaidCloud validates the join as you build it and again when the step runs. If something is wrong — an unsupported configuration, a cycle, a duplicate alias, or a column that no longer exists — the designer marks the offending table or join with a ⚠ marker and a message, and the save is rejected with the reason. Use Jump to issue to go straight to the first unresolved problem.

The Multi-Table Join runs like any other step. It executes all the joins in one operation and writes the mapped columns to the target table.