> ## Documentation Index
> Fetch the complete documentation index at: https://docs.generalvalidation.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Table Pairs

> Pair a source and target Table, set shared join keys and filters, add Tests, and manage Table Pairs from the Table Pairs and Tests pages.

A Table Pair names the source and target Tables you want to compare. Tests
belong to a Table Pair and define what should agree between those Tables. This
page covers Table Pairs; the Tests themselves are described on
[Tests](https://docs.generalvalidation.com/validate-data/tests.md). Running a Table Pair and reading its Results is covered in
[Runs, Results, and evidence](https://docs.generalvalidation.com/validate-data/runs-and-evidence.md).

You need the Owner or Contributor role, an active trial or subscription, and
Fabric access to the workspaces that hold your Tables. Running a Test also
needs the Environment; see [Getting started](https://docs.generalvalidation.com/get-started/quickstart.md).

## Create a Table Pair

1. Open **Table Pairs** and click **Add Table Pair**.
2. Enter a Table Pair name.
3. Under Source Table, choose a Source Workspace. The list holds the
   workspaces your Microsoft account can open in Fabric. Your General
   Validation workspace is not offered because it holds Results, not
   validation Tables.
4. Choose a Source Lakehouse or Warehouse. Each item is listed with its
   type.
5. Choose a Source Table. Tables are listed with their schema, as
   schema.table, so identical names in different schemas stay distinct.
6. For a Lakehouse Table, optionally enter a Source Delta version to pin a
   snapshot. Leave it blank to read the latest version when the Run starts.
   Warehouse Tables cannot be pinned.
7. Repeat the same choices for the target with Target Workspace,
   Target Lakehouse or Warehouse, Target Table, and, for a Lakehouse,
   Target Delta version.
8. Add join keys and filters if you need them (see the next section), then
   click **Add Table Pair**.

The app opens the new pair and prompts you to add its first Test. Any
combination of Lakehouse and Warehouse Tables can form a pair. The dialog reads
the workspace, item, and Table lists live from Fabric with your own Microsoft
identity; saving the pair stores only the selected Table references. No rows
are copied to General Validation. Click **Refresh source** or **Refresh
target** to reload a list after a change in Fabric. An empty list means your
account cannot see a matching item in Fabric; confirm your Fabric access, then
refresh.

The source and target Tables are fixed once the pair is saved. To compare
different Tables, delete the pair and create a new one.

Every active Table Pair counts toward your plan limit. At the limit, the app
refuses a new pair and asks you to archive a Table Pair or change the plan in
Billing.

## Join keys and filters

Join keys are pairs of source and target columns that match rows across the
two Tables. They belong to the Table Pair and are shared by every row Test in
it: `VALUE` and `OUTER_VALUE` need them, and aggregate and set Tests do not
use them. A pair can hold up to 16 join keys.

1. In the Add Table Pair or Edit Table Pair dialog, under **Join keys
   (optional), click Add key**.
2. Choose Source key 1 and Target key 1 from the column lists, which
   show each column with its type. Choose each column only once on each side.
3. Click **Add key** again for a composite key, or **Remove** to drop one.

Choose keys that identify rows uniquely: duplicate keys multiply matches.
Comparisons use Spark's native types and null-safe equality. Until a pair has
join keys, its page shows Not set under Join keys with a reminder that
`VALUE` and `OUTER_VALUE` Tests need them, and the Add Test dialog asks
you to set join keys before you add either of those Tests.

Filters limit which rows each Test compares. The source and target each have
their own list of up to 32 filters, and every filter on a side must match for
a row to be included. Filters apply to every Test in the pair, and summaries
and mismatch evidence use the same filtered rows. Each filter has a column, an
operator, and a value.

| Operator | Value |
| - | - |
| Equals, Does not equal | One value of the column's type. |
| Less than, Less than or equal, Greater than, Greater than or equal | One value. |
| In list | 1 to 100 values; click Add value for each one. |
| Is null, Is not null | No value. |

Under Source filters (optional) or Target filters (optional), click
**Add source filter** or **Add target filter**, choose the column and the
operator, and enter the value. For a boolean column choose True or
False. For a text column, leave the value blank to match an empty string.
Click **Remove filter** to drop one.

Filter values are saved with the Table Pair as configuration. Treat them as
metadata your Organization has shared with the service, and avoid entering
secrets or personal data as filter values.

To change a pair's name, join keys, or filters later, choose **Edit Table
Pair from the row ⋯ menu on Table Pairs** or from the pair's page,
make the change, and click **Save Table Pair**. The change applies to future
Runs; past Runs keep the scope they ran with. A changed key or filter resets
the pair's Latest Validation to Not run until it runs again.

## Add Tests

On the Table Pair's page, click **Add Test**, choose a Test function, pick
the Source column and Target column where the function needs them, and
set the threshold and evidence settings. Start with `COUNT_ROWS`, which needs no
columns. Each function, its settings, and how its comparison behaves are
described on [Tests](https://docs.generalvalidation.com/validate-data/tests.md), together with editing and deleting Tests.

## Edit and delete a Table Pair

To delete a Table Pair, choose **Delete Table Pair** from its row ⋯ menu
on Table Pairs, or click **Delete** on the pair's page, and confirm with
**Delete Table Pair**. Deleting a Table Pair archives it: the pair and its
Tests leave the Table Pairs and Tests lists, its slot in your plan is freed,
and its Runs and Results remain and stay listed on Results. An archived
pair cannot receive new Tests or Runs; a Run already in progress finishes and
records its Result.

If a teammate changed the same Table Pair or Test first, your save is refused
with the error code [precondition.failed](https://docs.generalvalidation.com/errors/precondition.failed). Reload
the page, review the current definition, and try again.

## Find Table Pairs and Tests

Table Pairs lists every active pair with its Source, Target, number
of Tests, Latest Validation, and Last Run. Type in **Search Table
Pairs** to match any displayed value, click a column heading to sort ascending
or descending, and use the Latest Validation filter to show pairs in one
state. While a search or filter is active, the count shows how many pairs
match, and Clear filters resets both. The Last Run cell opens that
Run. Latest Validation shows Not run when a pair has never run or when its
Tables, keys, filters, or Tests changed since its last Run.

Tests lists every Test across your active Table Pairs in one place, with a
Table Pair column that links to the owning pair. It has Search Tests,
sortable column headings, filters for Table Pair, Test Function, and
Latest Result, and the same Clear filters control. The row ⋯ menu
offers **Edit Test** and **Delete Test** here as well. There is no Add button
on Tests; Tests are added from a Table Pair. Tests of archived pairs are not
listed.

Each pair's page has its own Search Tests field with Test Function and
Latest Result filters for that pair's Tests.

## Who can do this

| Role | On Table Pairs, pair pages, and Tests |
| - | - |
| Owner and Contributor | Add, edit, and delete Table Pairs and Tests, and run validation. |
| Reader | See the same lists and pair pages without the Actions column, row menus, or dialogs, with a read-only note. |

Roles are cumulative and are managed on Organization; see
[Sign-in and team access](https://docs.generalvalidation.com/administration/access.md). Two further limits
apply to Owners and Contributors. Creating a Table Pair needs an active trial
or subscription; after expiry, existing pairs, Tests, Runs, and Results stay
readable. A product role grants no Fabric access: the dialog lists only the
workspaces and Tables your Microsoft account can already open in Fabric, and
the account that runs validation needs read access to both Tables.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.