# How to verify Airtable formula migration with our SQL showcase

Scale is one proof. Formula fidelity is another. This guide walks through AT Migrator's complex-formula showcase: download the SQL seed, understand how nested Airtable formulas land in `vt_` views, then compare computed values the same way you would on a production cutover.

## Key takeaways

- Two public samples: a 48k CRM with full data, and this formula-heavy projects/tasks base.
- Base tables hold source columns; live formulas recalculate in vt_projects and vt_tasks.
- Nested IF, date arithmetic, priority weighting, and risk scoring become PostgreSQL CASE / date math.
- Query the views — not the raw tables — when comparing formula fields to Airtable.

## Step 1 — Open the formula showcase base

The public base is read-only. Browse Projects and Tasks — including nested formula fields — the same way you would in your own workspace.

Open the sample base: https://airtable.com/appdkLPivTATZNQ48/shr5SSNhMnKVHN2Gq

## Step 2 — Download the formula showcase SQL

Download: /samples/at-migrator-complex-formula-showcase-migration.sql

Unlike the [48,000+ record CRM sample](/blog/verify-airtable-to-postgresql-sample-migration), this file focuses on formula translation. Tables: `projects`, `tasks`. Views: `vt_projects`, `vt_tasks`.

## Step 3 — Import into Postgres

```bash
psql '<connection-string>' -f at-migrator-complex-formula-showcase-migration.sql

createdb formula_showcase
psql formula_showcase -f at-migrator-complex-formula-showcase-migration.sql
```

## Step 4 — Understand the mapping

Base tables hold source fields. `vt_projects` and `vt_tasks` add live formulas. Sync tools copy the last computed value; AT Migrator regenerates SQL so formulas recalculate when source data changes.

Project formula fields: days_remaining, project_duration_business_days, status_flag, budget_variance, weighted_project_score, dynamic_summary_text.

Task formula fields: business_days_until_deadline, overdue_days, task_tier, completion_score, risk_level, formatted_status_message.

## Step 5 — Compare project formulas

```sql
SELECT
  _at_id,
  project_name,
  completion_percentage,
  due_date,
  days_remaining,            -- date math vs CURRENT_DATE
  status_flag,               -- Completed / Overdue / At Risk / On Track
  budget_variance,           -- spend vs budget
  weighted_project_score,    -- priority × progress × budget health
  dynamic_summary_text
FROM public.vt_projects
WHERE _at_id = '<airtable-record-id>'
LIMIT 1;
```

## Step 6 — Compare task formulas

```sql
SELECT
  _at_id,
  task_name,
  status,
  effort_hours,
  difficulty_rating,
  overdue_days,
  task_tier,
  completion_score,
  risk_level,                -- High / Medium / Low from nested IF
  formatted_status_message
FROM public.vt_tasks
WHERE _at_id = '<airtable-record-id>'
LIMIT 1;
```

## How this pairs with the 48k CRM sample

- CRM sample: volume, junction tables, attachments, rollups, full pg_dump.
- Formula showcase: nested IF / date / score logic in `vt_*` views.

Together they answer: will data arrive intact at scale, and will formulas still recalculate in Postgres?

## Ready for your own base?

See https://www.atmigrator.com/blog/how-to-migrate-airtable-to-postgresql or https://www.atmigrator.com/pricing

---
*Considering a migration? Book a free discovery call with AT Migrator: https://www.atmigrator.com*
