Skip to main content

Reconcile Guide

Lakebridge Reconcile validates data fidelity after migration by comparing your source system against the Databricks target. It identifies discrepancies at the row, column, and schema level.

What it does

Report typeWhat is comparedWhen to use
schemaColumn names and data typesVerify DDL migration is correct
rowHash of each row (no join key needed)Quick row-level check when there is no primary key
dataRow and column values via join columnsFull fidelity check with per-column mismatch detail
allBoth data + schemaComplete validation

Supported Source Systems

SourceSchemaRowDataAll
OracleYesYesYesYes
SnowflakeYesYesYesYes
SQL ServerYesYesYesYes
RedshiftYesYesYesYes
TeradataYesYes 1Yes 1Yes 1
BigQueryYes 2YesYesYes
DatabricksYesYesYesYes

Setup

Step 1: Setup the source connection

Follow the official Databricks docs to:

note

You do not have to create a foreign catalog.

Step 2: Run configure-reconcile

If you haven't already, complete the initial setup:

databricks labs lakebridge configure-reconcile

This sets up Lakebridge workspace resources. See Installation → Configure Reconcile for details.

Config file

A reconcile config file is created under the path:

<USER_WORKSPACE_HOME>/.lakebridge/recon_config_<SOURCE>_<UNITY_CATALOG_CONNECTION_NAME_OR_CATALOG>_<REPORT_TYPE>.json
note

For UNITY_CATALOG_CONNECTION_NAME_OR_CATALOG: if the source is databricks then source catalog name is used else connection name is used

Examples:

source_typeconnection_name_or_catalogreport_typefile_name
databrickstpchallrecon_config_databricks_tpch_all.json
source1conn1rowrecon_config_source1_conn1_row.json
source2conn2schemarecon_config_source2_conn2_schema.json

See Configuration Reference for the full schema and examples.

Required permissions

The User configuring reconcile must have permission to:

  • Create Data Warehouses
  • USE CONNECTION on the source connection
  • USE CATALOG and CREATE SCHEMA on the target catalog
  • CREATE VOLUME if using a pre-existing schema

Compute selection

The deployed reconcile job runs on serverless compute by default. No cluster is created or managed for you.

To run the job on a classic cluster instead, create the cluster yourself and point job_overrides at it in the reconcile config (<USER_WORKSPACE_HOME>/.lakebridge/reconcile.yml):

job_overrides:
existing_cluster_id: "0714-000000-abcdefgh"
note

A classic cluster must run Databricks Runtime 17.3 or above that supports reading from Unity Catalog connections.

Intermediate data persistence

Reconcile automatically adapts to the compute type:

  • Serverless (default): Uses Unity Catalog volumes for intermediate data persistence — the configured volume (from metadata_config.volume) is automatically used. The volume must exist in the metadata catalog and schema specified in your ReconcileMetadataConfig, and you need write permission on it.
  • Classic clusters: Uses DataFrame caching for better performance

Run

See Running Reconcile for CLI execution, notebook usage, and automation.

Footnotes

  1. Teradata has no portable cryptographic hash in pure SQL, so row-hash report types (row, data, all) require a user-installed hash UDF on the source and an explicit hash_expression_overrides.source entry on the recon config. See Hash Expression for wiring. 2 3

  2. BigQuery types with no equivalent in Databricks — BIGNUMERIC, TIME, RANGE<T>, nested JSON such as ARRAY<JSON>, or these nested inside ARRAY/STRUCT — are left as their original BigQuery type and may be reported as schema mismatches even when the data migrated correctly.