delivered for clients · names withheldmigration Data and analytics

Teradata, Netezza or Hadoop to Snowflake

Cohash moves on-premises Teradata, Netezza and Hadoop warehouses to Snowflake. We start from query logs, so only the data and jobs people still use get moved. SnowConvert AI converts the code it supports and engineers rewrite the rest. Every table is reconciled against the source before reports switch, and warehouses are sized per workload.

  1. 01Workload inventory from query logs
  2. 02Code conversion
  3. 03Data movement
  4. 04Security and cost model
  5. 05Parallel run and reconciliation
  6. 06Cut-over and decommission
case-study / teradata-netezza-to-snowflake delivered
beforeTeradata, Netezza or Hadoop (on-premises) afterSnowflake
01 · SOURCES 02 · LOAD AND TRANSFORM 03 · PLATFORM 04 · CONSUMERS ETL feeds: retargeted to Snowflake ETL feeds retargeted toSnowflake Identity provider: users and groups Identity provider users and groups Cloud object storage: bulk history · CDC deltas Cloud object storage bulk history · CDCdeltas dbt and orchestrator: replaced BTEQ and Oozie dbt and orchestrator replaced BTEQ andOozie Terraform: roles · warehouses · monitors Terraform roles · warehouses ·monitors Snowflake: warehouses per workload Snowflake warehouses perworkload BI and Excel ODBC: switched in waves BI and Excel ODBC switched in waves SAS jobs: switched in waves SAS jobs switched in waves
01 · SOURCES02 · LOAD AND TRANSFORM03 · PLATFORM04 · CONSUMERS ETL feeds: retargeted to Snowflake ETL feeds retargeted toSnowflake Identity provider: users and groups Identityprovider users and groups Cloud object storage: bulk history · CDC deltas Cloud objectstorage bulk history ·CDC deltas dbt and orchestrator: replaced BTEQ and Oozie dbt andorchestrator replaced BTEQand Oozie Terraform: roles · warehouses · monitors Terraform roles ·warehouses ·monitors Snowflake: warehouses per workload Snowflake warehouses per workload BI and Excel ODBC: switched in waves BI and ExcelODBC switched in waves SAS jobs: switched in waves SAS jobs switched in waves © Cohash · cohash.com
case file

The story

Told without the client's name or anything that could identify them.

what happened

A logistics company's data team ran its warehouse on a Teradata appliance due for a hardware refresh, alongside a Hadoop cluster still on CDH 6.3, which lost support in March 2022. BTEQ scripts ran from cron and only a few people knew which ones mattered, and analysts had started copying extracts into Snowflake by hand to get around the queue. We began with DBQL and Hive audit logs so that only tables and jobs people still used were moved. SnowConvert AI handled the DDL, views and BTEQ it supports, engineers rewrote the rest as dbt models, and every table was reconciled with row counts, checksums and aggregates before reports switched. Consumers moved in waves, and the appliance was archived and shut down.

why it was urgent

Plenty of Hadoop clusters still run on releases Cloudera stopped supporting years ago: HDP 3.1 lost support in December 2021 and CDH 6.3 in March 2022. On the conversion side, SnowConvert AI now handles Teradata tables, views, procedures, BTEQ, MLOAD and TPUMP scripts, and Netezza and Hive tables and views too.

problem statement
  • openThe appliance or cluster is due a hardware refresh, and nobody wants to sign for it.
  • recurringThousands of BTEQ or nzsql scripts run from cron, and only a few people know which ones matter.
  • blockedThe Hadoop cluster still runs CDH or HDP, on a release out of support for years.
  • openAnalysts already copy extracts into Snowflake by hand because the warehouse queue is too long.
architecture

The estate, before and after

before
before

Before: a Teradata appliance next to a Hadoop cluster out of vendor support

ETL loads fed a Teradata appliance and a Hadoop cluster, with BTEQ scripts on cron and Oozie workflows doing the transforms. BI tools, Excel and SAS read the appliance, and analysts copied extracts to Snowflake by hand.

Before: a Teradata appliance next to a Hadoop cluster out of vendor support ETL loads fed a Teradata appliance and a Hadoop cluster, with BTEQ scripts on cron and Oozie workflows doing the transforms. BI tools, Excel and SAS read the appliance, and analysts copied extracts to Snowflake by hand. 01 · LOADS AND JOBS 02 · ON-PREMISES PLATFORMS 03 · CONSUMERS load HDFS ingest scheduled SQL workflows ODBC queries extracts manual extract IN ETL loads nightly feeds BTEQ scripts on cron few know which matter Oozie and Spark jobs HDFS workflows Teradata appliance hardware refresh due Hadoop cluster CDH, out of support BI and Excel ODBC reports · ad hoc queries SAS jobs extracts Analyst copies extracts loaded byhand © Cohash · cohash.com
01 · LOADS AND JOBS02 · ON-PREMISES PLATFORMS03 · CONSUMERS ETL loads: nightly feeds ETL loads nightly feeds BTEQ scripts on cron: few know which matter BTEQ scriptson cron few know whichmatter Oozie and Spark jobs: HDFS workflows Oozie andSpark jobs HDFS workflows Teradata appliance: hardware refresh due Teradataappliance hardware refreshdue Hadoop cluster: CDH, out of support Hadoop cluster CDH, out ofsupport BI and Excel ODBC: reports · ad hoc queries BI and ExcelODBC reports · adhoc queries SAS jobs: extracts SAS jobs extracts Analyst copies: extracts loaded by hand Analystcopies extracts loadedby hand load HDFS ingest scheduled SQL workflows ODBC queries extracts manual extract © Cohash · cohash.com
after
after

After: everything runs in Snowflake, with dbt, SCIM roles and a warehouse per workload

History is exported to cloud object storage and loaded with COPY INTO. Changed data keeps flowing in until cut-over. After that, dbt models do what BTEQ and Oozie used to, roles come from the identity provider over SCIM, and Terraform defines the warehouses and resource monitors.

After: everything runs in Snowflake, with dbt, SCIM roles and a warehouse per workload History is exported to cloud object storage and loaded with COPY INTO. Changed data keeps flowing in until cut-over. After that, dbt models do what BTEQ and Oozie used to, roles come from the identity provider over SCIM, and Terraform defines the warehouses and resource monitors. 01 · SOURCES 02 · LOAD AND TRANSFORM 03 · PLATFORM 04 · CONSUMERS CDC · nightly deltas COPY INTO dbt models SCIM provisioning config as code queries extracts IN ETL feeds retargeted toSnowflake Identity provider users and groups Cloud object storage bulk history · CDC deltas dbt dbt andorchestrator replaced BTEQ andOozie Terraform roles · warehouses ·monitors Snowflake warehouses perworkload BI and Excel ODBC switched in waves SAS jobs switched in waves © Cohash · cohash.com
01 · SOURCES02 · LOAD AND TRANSFORM03 · PLATFORM04 · CONSUMERS ETL feeds: retargeted to Snowflake ETL feeds retargeted toSnowflake Identity provider: users and groups Identityprovider users and groups Cloud object storage: bulk history · CDC deltas Cloud objectstorage bulk history ·CDC deltas dbt and orchestrator: replaced BTEQ and Oozie dbt andorchestrator replaced BTEQand Oozie Terraform: roles · warehouses · monitors Terraform roles ·warehouses ·monitors Snowflake: warehouses per workload Snowflake warehouses per workload BI and Excel ODBC: switched in waves BI and ExcelODBC switched in waves SAS jobs: switched in waves SAS jobs switched in waves CDC · nightly deltas COPY INTO dbt models SCIM provisioning config as code queries extracts © Cohash · cohash.com
results

What the client got

What changed for the client once the work was done. Described, not scored: we don't publish client figures.

  1. result 01

    Only data and jobs in use were moved

    Query logs ranked every table and script by recent use. Anything nobody had touched in months was retired, not converted.

  2. result 02

    Converted code lives in version control

    DDL, SQL and dbt models are in a repository. The error-code and activity-count branching that used to live in BTEQ is now in the orchestrator, where a failure actually gets caught.

  3. result 03

    Every table was reconciled before consumers moved

    For every table we compared row counts, column checksums and the main aggregates. Differences from case-insensitive comparison and SET tables got explained or fixed.

  4. result 04

    Compute is split by workload, with limits

    We gave each workload its own warehouse with a resource monitor, rebuilt roles from the source and brought users in through SCIM. The design is kept as code.

  5. result 05

    Consumers nobody had listed were switched too

    Connection logs turned up Excel ODBC connections, SAS jobs and partner feeds. We moved them in planned waves, each with a fallback point.

what can go wrong

Risks we plan for

  1. Quiet semantic differences

    Teradata compares strings case-insensitively by default and SET tables silently drop duplicate rows. Snowflake does neither. Converted SQL can run cleanly and still return different numbers.

  2. Control flow buried in scripts

    BTEQ scripts branch on error codes and activity counts. That logic has to move into the orchestrator explicitly, or failures stop being caught.

  3. Lift-and-shift cost

    Queries tuned for an appliance's always-on hardware can scan far more than they need once you pay per use. We review the most expensive ones before go-live. The first invoice is a bad time to find them.

  4. Consumers nobody listed

    Excel ODBC connections, SAS jobs and partner file drops often appear only in connection logs. Missing one means a broken process on day one.

ai in this move

Where AI helps, and where it needs guardrails

On the Snowflake side, CoWork and Horizon Catalog's Agent Identity let agents query governed data under their own identity. That only works once roles are clean. SnowConvert AI's AI-assisted fixes are listed for SQL Server, Redshift, BigQuery and PostgreSQL, but not Teradata or Netezza. So we use an LLM to explain old BTEQ scripts and draft test cases, and an engineer reviews each one. Agents get read-only access to query history and never touch production data.

forward deployed engineers →
you keep

What you're left with

We write these for your setup, and they're working documents. Your team should be able to keep things running from them long after we've gone.

  • inventory01

    Inventory of tables, scripts and consumers, ranked by actual use, with a move or retire call on each

    yours to keep
  • design02

    Converted DDL, SQL and dbt models, all checked into version control

    yours to keep
  • report03

    We reconcile every table against the source and explain each difference in a report.

    yours to keep
  • code04

    We hand over the Snowflake roles, warehouses and resource monitors as code.

    yours to keep
  • runbook05

    Cut-over runbook by consumer wave, with a fallback point

    yours to keep
field notes

Learn the background

Terms from this page in plain English. If you want the why, the field note behind it is right there.

01SCIM
A way for a company's directory to push users and groups into another system. Auth0 can then keep those groups as their own objects instead of on the profile.in context →
02Identity provider
Whatever checks your password and MFA and then tells each app you're signed in. Okta and Entra ID both play that role, and admins call it the IdP.in context →
03refresh
Before planning, Terraform asks each API what really exists and updates state to match. That's the refresh, and on big states it's the slow part.in context →
04Orchestrator
Think of it as the robots' dispatcher. It holds the schedules, queues and credentials, and tells each robot what to run next.in context →
BELOW 17.3 LTS ai_query returns anerror Nightly job fails 15.4 LTS stillsupported 17.3 LTS AND ABOVE AI Functions keepworking Spark 4 and Scala2.13 Test before youswitch
field note · 14 min · 3-question check Your Databricks AI Functions need Runtime 17.3 LTS by January 2027, even if 15.4 is still supported the ideaSame SQL, same ai_query call. The runtime decides whether it still runs. read the note
talent and delivery · snowflake

Certified engineers, wherever you need them.

Some clients want a project team, some want a couple of engineers on theirs. Either works. Onsite, nearshore or offshore, with handovers across time zones that keep things moving.

Onsite

Engineers at your sites in the US

Nearshore

Overlapping hours with US teams

Offshore

Overnight progress on your backlog

All time zones

Coverage handed over across time zones

24-hour coverage · US Central time
OnsiteUS business hours
Nearshoreoverlapping US hours
Offshoreovernight progress
Combinedhandover, not hand-off
01Should we go to Snowflake or Databricks?

It depends on the workload. A SQL-heavy warehouse with lots of BI users maps closely to Snowflake. If the Hadoop side is mostly Spark, streaming or ML, Databricks may fit better, and some companies run both. We look at the query mix before we recommend either.

02How long does a warehouse migration take?

Mostly on the objects and scripts still in use, how much data there is, and how many consumers downstream need to switch. We scope it after the inventory. The quickest way to shorten it is to retire unused objects first.

03Does SnowConvert AI do the whole conversion?

No tool does. It covers a lot of Teradata code and Netezza and Hive tables and views. Procedures it doesn't support, scheduling logic and semantic differences still need engineers, and every converted object is tested against source data.

04Can we keep our ETL tool?

Often, yes. Informatica, Fivetran and most ETL tools can target Snowflake. Some teams use the move to shift transformations into dbt inside Snowflake, which we plan as a separate decision.

05How is a Hadoop to Snowflake migration different?

The SQL is the smaller part. SnowConvert AI covers Hive and Spark SQL tables and views, but Spark job code and Oozie workflows sit outside it, so engineers rewrite them as dbt models or Snowpark code run by an orchestrator. Files leave HDFS through DistCp to cloud storage and load with COPY INTO. Read the Hive and Impala audit logs first, because old clusters hold a lot of data nobody queries.

fact-checked Checked against vendor and official documentation last checked 2026-10-20 content fingerprint 3fb6360c
  1. 01Book a 30-minute working sessionsenior engineer
  2. 02Talk to an engineer about your setupreply within 24 hours
  3. 03See how similar projects wentcase studies
Reviewed by the Cohash team Product names are trademarks of their owners. how we handle facts and data →
next step

Planning this move?

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • The platform and the version you're on
  • Where you need to get to, and by when
  • What's custom: rules, plugins, integrations
  • Any audit finding or deadline driving it