Skip to content

Create a Computed Join

This page documents the Add Computed Join form, then walks through the steps to create one from the datastore container list. For the conceptual overview, see How Computed Join Works.

The form opens in pairwise mode. The Editor Mode toggle switches it to SQL mode, which joins two or more aliased sources with a Spark SQL query you write. The Field Reference and Steps below cover pairwise mode; see SQL Mode for the SQL-mode fields and steps.

Permissions

You need Editor permission on the parent datastore, or Author permission plus ownership of the new container, and at least Viewer permission on every other datastore an input reads from. The parent datastore is the left container's datastore in pairwise mode, or the first source's datastore in SQL mode. See Computed Join Permissions for the full matrix.

Field Reference

The Add Computed Join form is grouped into four blocks. The numbered annotations on each screenshot match the REF. column in the table below it.

Name and Join Type

Name and Join Type fields

REF. Field Description
1 Name Unique name for the Computed Join container on the parent datastore. All spaces are replaced by underscores. Max 255 characters.
2 Join Type One of Inner Join, Left Join, Right Join, or Full Outer Join. Defaults to Inner Join.

Left Reference and Right Reference

The screenshot shows two blocks, Left Reference and Right Reference, each containing the same four fields (Datastore, Container, Field, Prefix).

Left and Right Reference fields

REF. Field Description
1 Datastore (Left Reference) Locked to the datastore you opened. The Computed Join lives under this datastore.
2 Container (Left Reference) Profiled container to join from the left side: table, view, file, Computed Table, or Computed File.
3 Field (Left Reference) The column used as the join key on the left side. Must resolve to the same data type as the Right Field; mismatched types surface as a validation error when you click Validate or Save.
4 Prefix (Left Reference) Prefix applied to every column from the left side in the joined result. Defaults to left. Max 100 characters.
5 Datastore (Right Reference) Datastore for the right container. Can be the same as the left datastore or a different one. You need at least Viewer permission on it.
6 Container (Right Reference) Profiled container to join from the right side. Same supported types as Left Container.
7 Field (Right Reference) The column used as the join key on the right side. Must resolve to the same data type as the Left Field.
8 Prefix (Right Reference) Prefix applied to every column from the right side. Defaults to right. Max 100 characters. Should differ from the Left Prefix when both sides share column names; identical prefixes trigger a duplicate-column error at Validate.

Select Expression, Filter Clause, and Group By Clause

Select Expression, Filter Clause, and Group By Clause fields

REF. Field Description
1 Select Expression SQL select clause naming the columns to include in the joined result. Auto-fills with every top-level field from both sides, prefixed. Edit it to keep only what you need, add aliases, or include expressions.
2 Filter Clause Optional. Post-join WHERE predicate applied to the joined result.
3 Group By Clause Optional. Group By columns when the Select Expression uses aggregation functions. Every non-aggregated column in the Select Expression must appear in this clause.

Description, Owner, and Additional Metadata

Description, Owner, and Additional Metadata fields

REF. Field Description
1 Description Free-text description of the Computed Join (max 255 characters). Surfaces alongside the container in lists and search results. The form can auto-suggest a description from the join configuration.
2 Owner The user who owns the Computed Join. Defaults to the user creating the join. Only Editors can pick a different owner at create time; Authors are locked to themselves.
3 Additional Metadata Optional key-value metadata attached to the container.

Steps

Step 1: Open the datastore where the Computed Join will live and click Add.

Add button on the datastore header

Step 2: Choose Computed Join from the dropdown.

Computed Join option in the Add dropdown

Step 3: The Add Computed Join modal appears.

Add Computed Join modal

Step 4: Fill in the form using the Field Reference above, then click Validate. A Validation Successful message appears if the SQL parses and the schema resolves against the input containers.

Add Computed Join form, top section

Add Computed Join form, bottom section

Validate button and successful validation banner

Step 5: Click Save. A success message appears, the modal closes, and the new Computed Join opens.

Save button


SQL Mode

Selecting SQL in the Editor Mode toggle replaces the Left/Right Reference, Select Expression, Filter Clause, and Group By Clause with a Sources list and a Query editor. The mode is chosen at create time.

Mode is fixed after save

In the UI, the Editor Mode toggle is locked once the join is saved. To switch from pairwise to SQL mode (or the reverse), you must delete the join and create a new one. Deletion is destructive: the join's history, quality checks scoped to it, and anomalies detected on it are removed with the container. Rebuild those artifacts on the new join.

SQL Mode Field Reference

Sources

Add two or more sources with Add new source, up to a configurable maximum (10 by default). Each source has these fields:

Field Description
Datastore The datastore the source container lives in. Sources may span datastores; you need at least Viewer permission on each. The Computed Join is created under the first source's datastore.
Container The container to read. It must already be profiled. Base tables, views, files, Computed Tables, and Computed Files are all accepted; another Computed Join is not.
Alias The name the query uses to reference this source. Must start with a letter or underscore, contain only letters, digits, and underscores, be unique within the join, and not clash with a CTE name in the query.
Filter Clause Optional. A Spark SQL WHERE expression applied while the source is read, before the query runs. Filtered-out rows are never loaded, so this is the main lever for large sources.

Query

Field Description
Query A single Spark SQL statement that references the aliases as tables. Supports composite join keys, CTEs, GROUP BY, window functions, and joins across any number of sources. Reference sources by their alias only: qualified or catalog table names, statements that modify data, and arbitrary-code functions (reflect, java_method) are rejected.

SQL Mode Steps

Step 1: Open the datastore where the Computed Join will live, click Add, and choose Computed Join.

Step 2: In the Editor Mode toggle, select SQL.

Step 3: Add your sources with Add new source. For each one, pick the Datastore and Container, enter a unique Alias, and optionally set a Filter Clause.

Step 4: Write the Query over the aliases, then click Validate. A validation message appears if the query parses and its schema resolves against the sources.

Step 5: Click Save. A success message appears, the modal closes, and the new Computed Join opens.