[ use case · migration ]

Migrations that prove themselves.

Your agent rewrites every model. Each one runs against a 4.20% scale model of the warehouse you're leaving, and has to match its numbers before it moves. The cutover date is the day the last model matches.

8

days, Snowflake → Iceberg

400

models migrated

0

models with drift

100+

attempts an hour

[ runs on ]

  • StarRocks
  • Spark
  • Trino
  • DuckDB
  • Snowflake
  • Databricks

[ paths ]

From the stack you have to the one you want.

Snowflake→Iceberg on Spark400 models in 8 days, zero drift at merge.Read the run log →
Snowflake→ClickHouseWindow functions and time zones are where dialects disagree. Every one gets checked.
Databricks→SparkSame engine family, different defaults. The drift hides in the defaults.
PySpark→dbtImperative jobs become models you can test, one DAG at a time.

[ how a migration runs ]

Model by model. Never big-bang.

  1. 01

    Scale model

    We sample the warehouse you're leaving: 4.20% of the bytes, whole customers, full history, joins intact.

  2. 02

    Rewrite

    Your agent translates each model to the new engine or dialect. Claude Code, Codex, or your own harness.

  3. 03

    Check

    Row counts, sums, nulls and distributions, against the original. If the numbers don't match, it goes again.

  4. 04

    Run in parallel

    Matched models run beside the originals on full data, for as long as your team wants to watch.

  5. 05

    Cut over

    One model at a time, in the order your team picks. The last match is the cutover date.

attempts.log · e-commerce

# matched on attempt 2

✓ stg_users · zero drift

✓ stg_orders · zero drift

✓ dim_date · zero drift

✓ dim_geo · zero drift

# matched on attempt 6

✓ fct_sessions · zero drift

✓ fct_orders_daily · zero drift

✓ int_order_items · zero drift

# matched on attempt 14

✓ fct_revenue · zero drift

✓ mart_finance_pl · zero drift

✓ rpt_ltv · zero drift

# matched on attempt 40

✓ fct_attribution · zero drift

✓ mart_growth · zero drift

… 389 more models. Same verdict.

[ who does what ]

Your engineers run the migration. The agent does the typing.

The agent

  • Rewrites all 400 models
  • Reruns every miss until it matches
  • Writes the evidence for each one

Your team

  • Picks the order
  • Reviews evidence, not SQL
  • Owns the cutover

“We stopped arguing about the cutover date. The log was the cutover date.”

Data platform team, leading e-commerce company