data & analytics · engineering

When a pipeline breaks, you should hear about it before the CFO's dashboard does.

We build ingestion and transformation pipelines on Snowflake, Databricks or Microsoft Fabric, with a test and an alert at every step. Sources come in through Fivetran, Openflow or connectors we write. dbt or Spark transforms them. Airflow runs the schedule, unless the platform's own scheduler is the better fit.

platforms
data-analytics / data-engineering 5 platforms
01 · SOURCES 02 · INGESTION 03 · PLATFORM 04 · OUTPUTS SaaS apps: Salesforce · Dynamics 365 SaaS apps Salesforce · Dynamics365 Operational databases: Postgres · SQL Server · Oracle Operationaldatabases Postgres · SQL Server· Oracle Legacy systems: Facets · legacy ERP extracts Legacy systems Facets · legacy ERPextracts Managed connectors: Fivetran · Snowflake Openflow Managed connectors Fivetran · SnowflakeOpenflow Change data capture: log-based CDC Change data capture log-based CDC Raw and staging layers: Snowflake · Databricks · Fabric Raw and staginglayers Snowflake · Databricks· Fabric dbt or Spark transforms: staging · intermediate · marts dbt or Sparktransforms staging · intermediate· marts Orchestration and CI/CD: Airflow · GitHub Actions · Terraform Orchestration andCI/CD Airflow · GitHubActions · Terraform Data marts: finance · sales · members Data marts finance · sales ·members Tests and alerts: freshness · volume · keys Tests and alerts freshness · volume ·keys
SnowflakeDatabricksdbtMicrosoft Fabric
in short·15-second read

Data engineering builds the pipelines that move data from source systems into a data platform and transform it into usable tables.

Cohash builds pipelines on Snowflake, Databricks and Microsoft Fabric using dbt, Fivetran, Airflow and platform-native tools. We add tests, version control, CI/CD and cost monitoring, so pipelines are reliable and your team can maintain them after we hand over.

you probably need this if
  • Overnight a pipeline failed, and the first you heard of it was from the people reading the dashboard.
  • Transformations live in stored procedures and scheduled queries nobody has in version control.
  • Warehouse or cluster costs grew faster than the data did.
Ask an engineer facts checked 2026-10-20 · 7 sources
how it runs
  1. 01Assess
  2. 02Design
  3. 03Build
  4. 04Hand over
you keep
  • Pipeline architecture and coding standards
  • dbt or Spark projects in version control
  • CI/CD pipelines and Terraform modules
+ 2 more documents
who does it
Data engineer (Spark, SQL)Snowflake data engineerDatabricks data engineer SnowPro Advanced: Data Engineer Databricks Certified Data Engineer Professional
platforms
the story · data engineering

From the first call to a setup your own team can run.

Here's what usually prompts a call about your Data Engineering, what we do about it and in which order, and where you end up.

  1. chapter 01 · where it hurts

    Why teams reach out

    • Overnight a pipeline failed, and the first you heard of it was from the people reading the dashboard.
    • Transformations live in stored procedures and scheduled queries nobody has in version control.
    • Warehouse or cluster costs grew faster than the data did.
  2. chapter 02 · what we change

    How we solve it

    • Ingestion
    • Transformation with dbt
    • Spark and streaming on Databricks
    • Microsoft Fabric
    • Orchestration and CI/CD
    • Reliability and cost
  3. chapter 03 · how it runs

    Our approach

    • Assess
    • Design
    • Build
    • Hand over
  4. chapter 04 · where you end up

    What changes

    • Airflow is on a supported release again, so patches apply.
    • A pull request now builds only what it touched.
    • Pipeline architecture and coding standards
    • dbt or Spark projects in version control
what we do

Where we spend the hours

6 areas of work, each one done by an engineer who has run it in production.

  1. Common sources get a managed connector such as Fivetran or Snowflake Openflow. Databases get change data capture. For awkward systems like Facets or an old ERP, we write custom extracts.

  2. Our dbt projects have staging, intermediate and mart layers. Keys and relationships are tested, and the docs come straight from the code, so they don't drift.

  3. For big or streaming workloads we write Spark pipelines that land Delta tables governed in Unity Catalog.

  4. We set up Fabric lakehouses, warehouses, Data Factory pipelines and mirroring. The Delta tables live in OneLake, which is what Direct Lake reporting reads.

  5. Airflow or native schedulers, plus pull-request checks, environment promotion and Terraform for the infrastructure.

  6. We alert on freshness and volume, triage failed runs, and check warehouse or cluster sizing against real usage.

capability 01 / 06in production

Ingestion

Common sources get a managed connector such as Fivetran or Snowflake Openflow. Databases get change data capture. For awkward systems like Facets or an old ERP, we write custom extracts.

capability 02 / 06in production

Transformation with dbt

Our dbt projects have staging, intermediate and mart layers. Keys and relationships are tested, and the docs come straight from the code, so they don't drift.

capability 03 / 06in production

Spark and streaming on Databricks

For big or streaming workloads we write Spark pipelines that land Delta tables governed in Unity Catalog.

capability 04 / 06in production

Microsoft Fabric

We set up Fabric lakehouses, warehouses, Data Factory pipelines and mirroring. The Delta tables live in OneLake, which is what Direct Lake reporting reads.

capability 05 / 06in production

Orchestration and CI/CD

Airflow or native schedulers, plus pull-request checks, environment promotion and Terraform for the infrastructure.

capability 06 / 06in production

Reliability and cost

We alert on freshness and volume, triage failed runs, and check warehouse or cluster sizing against real usage.

typical situations

Situations we walk into

We pieced these together from Data Engineering situations that come up a lot. They're patterns. You won't find a specific client in them.

case file 01

A few hundred Airflow 2 DAGs still running after end of life

composite · not a client story
  1. Beforethe situation

    A self-managed Airflow 2 cluster runs a few hundred DAGs. Airflow 2 hit end of life on 22 April 2026, so there are no more security fixes. Some DAGs still use SubDAGs. Several custom operators open sessions on the metadata database directly.

  2. What we dothe work

    We inventory DAGs by owner and run history and retire the ones nobody needs. Then we fix what Airflow 3 removed: SubDAGs become TaskGroups, direct database access moves to the API client, and dropped context keys like execution_date are replaced. DAGs move in batches to a parallel Airflow 3 environment.

  3. Afterwhere you end up

    Airflow is on a supported release again, so patches apply. The custom operators use supported interfaces now. Next upgrade, there's less to rewrite.

case file 02

A dbt project of 1,100 models that rebuilds everything on every pull request

composite · not a client story
  1. Beforethe situation

    A dbt project on Snowflake has grown to about 1,100 models. CI rebuilds the whole project on every pull request on an X-Large warehouse, so merges wait over an hour and the CI warehouse is one of the biggest lines on the bill.

  2. What we dothe work

    We switch CI to state:modified+ selection with --defer, so only changed models and their children build and unbuilt parents resolve to production. Big fact tables move to incremental models with a merge strategy. The CI warehouse is downsized with a short auto-suspend, and the slowest models are profiled from query history.

  3. Afterwhere you end up

    A pull request now builds only what it touched. Merges don't queue, the CI warehouse bill drops, and nobody batches changes just to dodge the wait.

case studies

Data Engineering case studies

All case studies
architecture

How a tested pipeline moves data from source to marts

Sources land through managed connectors, CDC or custom extracts into raw tables. dbt or Spark builds staging, intermediate and mart layers, Airflow schedules the runs, and tests and freshness alerts fire before bad data reaches reports.

How a tested pipeline moves data from source to marts Sources land through managed connectors, CDC or custom extracts into raw tables. dbt or Spark builds staging, intermediate and mart layers, Airflow schedules the runs, and tests and freshness alerts fire before bad data reaches reports. 01 · SOURCES 02 · INGESTION 03 · PLATFORM 04 · OUTPUTS API sync transaction log file extracts raw tables change stream scheduled runs source tables build models test results Sf SaaS apps Salesforce ·Dynamics 365 Operational databases Postgres · SQL Server ·Oracle Legacy systems Facets · legacy ERPextracts Managed connectors Fivetran · SnowflakeOpenflow Change data capture log-based CDC Raw and staginglayers Snowflake ·Databricks · Fabric dbt dbt or Sparktransforms staging ·intermediate · marts Orchestration andCI/CD Airflow · GitHubActions · Terraform Data marts finance · sales · members Tests and alerts freshness · volume · keys
Read the diagram as text
  1. SaaS apps → Managed connectors: API sync
  2. Operational databases → Change data capture: transaction log
  3. Legacy systems → Raw and staging layers: file extracts
  4. Managed connectors → Raw and staging layers: raw tables
  5. Change data capture → Raw and staging layers: change stream
  6. Orchestration and CI/CD → dbt or Spark transforms: scheduled runs
  7. Raw and staging layers → dbt or Spark transforms: source tables
  8. dbt or Spark transforms → Data marts: build models
  9. dbt or Spark transforms → Tests and alerts: test results
how it runs

A typical engagement

We don't start a step until the last one has produced something you can check.

  1. step 01

    Assess

    We measure before we change anything. Sources, pipelines, volumes, freshness needs, and the current platform bill.

  2. step 02

    Design

    Ingestion patterns, layer conventions, naming, testing and deployment standards agreed with your team.

  3. step 03

    Build

    Pipelines delivered source by source, each with tests and monitoring before it reaches production.

  4. step 04

    Hand over

    Runbooks, on-call guidance and pairing sessions, until your engineers own the pipelines.

you keep

What you're left with

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

  • design01

    Pipeline architecture and coding standards

    yours to keep
  • evidence02

    dbt or Spark projects in version control

    yours to keep
  • code03

    CI/CD pipelines and Terraform modules

    yours to keep
  • tests04

    Data quality tests and freshness alerts

    yours to keep
  • runbook05

    Runbooks and cost review

    yours to keep
talent and delivery · data engineering

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
roles we staff
  • Data engineer (Spark, SQL)
  • Snowflake data engineer
  • Databricks data engineer
  • Analytics engineer (dbt)
  • Data platform architect
  • DataOps engineer
01Should we use Fivetran or build our own connectors?

For common SaaS sources a managed connector usually costs less than maintaining your own. Custom extracts make sense for odd systems, very high volumes, or data that can't leave your network. We price both before choosing.

02Fivetran and dbt Labs merged. Does that change anything for us?

Existing projects keep working. The deal closed on 1 June 2026, and the company operates as Fivetran + dbt Labs for now. Product and licensing announcements are what we watch. If one affects your setup, you'll hear from us.

03dbt or Spark for transformations?

Use dbt for SQL transformations on Snowflake, Databricks SQL or a Fabric warehouse. Reach for Spark when the job is huge, streaming or Python-heavy. Lots of teams use both.

04Can you reduce our Snowflake or Databricks bill?

Often, yes. We look at warehouse and cluster sizing and auto-suspend settings. We also find slow models and jobs that run more often than anyone needs. Savings depend on what turns up.

05We're still on Airflow 2. Is that a problem?

If you self-host, yes. Apache Airflow 2 hit end of life on 22 April 2026, so it gets no more fixes. Managed services publish their own support dates. Most of an Airflow 3 move is fixing DAGs that rely on removed features, then testing them in a parallel environment.

related

Often paired with

Projects on Data Engineering usually end up touching one of these, so they're worth a look.

sources 7 sources linked last checked 2026-10-20 content fingerprint c1f74ee8
  1. 01Snowflake release note: Openflow general availability (30 May 2025)docs.snowflake.com ↗
  2. 02Fivetran press release: Fivetran and dbt Labs complete mergerfivetran.com ↗
  3. 03Microsoft Learn: Direct Lake overviewlearn.microsoft.com ↗
  4. 04Microsoft Learn: Power BI Premium to Fabric migration (mirroring, shortcuts, Direct Lake)learn.microsoft.com ↗
  5. 05Apache Airflow: Supported versions (Airflow 2 end of life 22 April 2026)airflow.apache.org ↗
  6. 06Apache Airflow: Upgrading to Airflow 3airflow.apache.org ↗
  7. 07dbt Developer Hub: Deferdocs.getdbt.com ↗
Reviewed by the Cohash team Product names are trademarks of their owners. how we handle facts and data →
next step

Tell us what you're running. We'll tell you what we'd do first.

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