The conversation usually starts the same way. A mid-market company — fifty to five hundred employees, somewhere between gut-feel decisions and a real data practice — has decided it needs a data warehouse. They've done some research. They've heard about dbt. They've looked at Fivetran pricing. Someone on the team went to a conference and came back with a slide deck about the modern data stack.
They want to know what it will cost.
My answer surprises them: less than you think, if you build it the right way. More than you can afford, if you build it the way the vendors want you to.
The difference is whether you control the SQL layer directly — or pay someone else to translate your intent into SQL on your behalf.
Every Tool in Your Data Stack Is a SQL Generator
This is not an exaggeration. It is a literal description of what most data tools do.
dbt takes YAML configuration and Jinja-templated SQL and compiles it into SQL that runs against your warehouse. The output is SQL. Fivetran replicates your source data into landing tables and uses SQL to load it. Spark DataFrames compile to a query plan that the execution engine runs as distributed SQL. Airflow orchestrates jobs — and most of those jobs, at the end of the chain, run SQL.
The abstraction layers exist for a reason: they lower the barrier to entry and they add features that raw SQL doesn't provide — version control, lineage tracking, dependency resolution, scheduling. Those are real benefits.
But they come with a real cost. Licensing. Training. Specialists who understand the tool, not just the data. A debugging loop that adds one layer of indirection between you and the thing that's actually executing: the SQL.
For a company with a mature data team and a budget to match, that trade-off often makes sense. For a company just crossing into data maturity with a tight budget and one or two people who need to deliver something that works, it frequently doesn't.
What You Already Have
If your organization is on AWS, Azure, or Google Cloud — and most mid-market companies are — you already have access to a capable data warehouse. Redshift, Azure Synapse, BigQuery. It may already be in your cloud contract. If not, it's a line item, not a platform decision. And once you have it, you have a pipeline engine.
You have stored procedures. A stored procedure is a pipeline step. It accepts parameters, executes logic, and returns a result. It can read from one table, transform the data, and write to another. It can log what it did, handle exceptions, and report success or failure. It is, in every functional sense, what a pipeline step is — written in the native language of the system that's going to execute it.
You have scheduled tasks. Snowflake Tasks, BigQuery Scheduled Queries, Redshift Scheduled Queries — your warehouse can run a stored procedure, or any SQL statement, on a schedule you define. That is an orchestrator. A simple one, but for most mid-market use cases, a sufficient one.
You have views. A view is a transformation layer. It presents data in a shape the consumer needs without moving or copying it. Materialized views take that further — they persist the result and refresh it on a schedule.
You have stages and COPY INTO. Snowflake's native file staging and bulk load mechanism is as capable as most ETL tools for moving data from files into tables. No third-party connector required.
Put these together and you have: ingestion, transformation, orchestration, and serving — in native SQL, on infrastructure you're already paying for.
Choosing Your Stack — Even the Lean One
A SQL-native approach still requires decisions. The stack is leaner, but it still exists.
The good news: for most mid-market companies, the warehouse decision makes itself. Use the data warehouse that is native to the cloud you're already on. If you're on AWS, Redshift is already there. If you're on Azure, Synapse is already there. If you're on Google Cloud, BigQuery is already there. Complexity costs money — in integration work, in cross-cloud data transfer, in the operational burden of managing services that don't belong to the same ecosystem. Staying native eliminates most of that.
It's also worth being honest about total cost of ownership, not just licensing. SQL and data modeling are largely portable across warehouses — the syntax differs, but the thinking doesn't. What isn't portable is the operational layer. Every warehouse has its own administration model, its own monitoring tools, its own scaling behavior, its own security configuration. Learning those, staffing for them, and maintaining them over time adds real cost that doesn't show up in the per-query pricing.
This is where Snowflake's architecture changes the conversation. Snowflake has a reputation for being expensive — and in unskilled hands, it can be. But in skilled hands it is frequently the lowest total cost option. There is no infrastructure to manage, no clusters to right-size, no persistent compute running while nobody is querying. You pay only when it is running. Administration tasks carry no direct compute cost. The separation of storage and compute means you scale each independently, and you stop paying for compute the moment a query finishes.
Beyond the warehouse, the lean stack looks like this:
- Ingestion — Native file staging and bulk load for file-based sources. A lightweight custom process for APIs. A targeted connector only when the source genuinely warrants it.
- Transformation — Stored procedures in the warehouse, running directly against the data where it lives.
- Orchestration — Native warehouse tasks or SQL Agent. Dependencies chained in the warehouse itself.
- Serving — Views and materialized views for BI tools and downstream consumers.
Every choice is driven by what the business actually needs right now, not what a vendor roadmap recommends. And the foundation under every choice is SQL that any competent practitioner can read, maintain, and extend.
What a Native SQL Architecture Actually Looks Like
A governed data pipeline in native SQL follows the same logical layers as any well-built data platform. The difference is that every layer is expressed directly in SQL, not abstracted through a tool.
Staging — Raw data lands here, unchanged. Source system fields, source data types, no business logic applied. If a source sends you a file, BULK INSERT or COPY INTO loads it into a staging table. If a source has an API, a lightweight process calls the API and writes the result to staging. The staging layer is a faithful record of what the source sent.
Transform — Business logic is applied here. Stored procedures read from staging, apply type conversions, apply business rules, detect and handle duplicates, and write to the next layer. This is where data vault patterns, conformed dimensions, or whatever modeling approach fits the engagement live. Every transformation is explicit SQL. Nothing is generated or implied.
Serve — The output layer. Views or materialized tables shaped for consumption — by BI tools, by analysts, by applications. The serving layer translates the governed, transformed data into the shape the business actually uses.
Orchestration — Scheduled tasks run the procedures in order. Task dependencies can be chained: the transform task doesn't run until the staging task completes successfully. Failure is logged. Alerts can be sent. For most mid-market use cases, this is sufficient.
This is not a toy architecture. It is the architecture used on production engagements. A platform built over a year-long engagement — five logical database tiers, a governed deployment process — runs on this pattern. It handles real data volumes, real business complexity, and real production requirements.
The Skills Argument
Here is the thing about SQL that the tool vendors don't advertise: it transfers.
A practitioner who deeply understands SQL and data modeling can move from Snowflake to BigQuery to Redshift and be productive within weeks. The syntax differs. The functions have different names. The performance characteristics require some adjustment. But the thinking — how data relates, how to model for query patterns, how to express transformation logic precisely — is the same.
Tool familiarity does not transfer the same way. A dbt expert who doesn't understand what dbt is generating is still dependent on dbt. A Fivetran specialist who doesn't understand the SQL that Fivetran is executing is dependent on Fivetran. When the tool changes — when the vendor raises prices, when the company switches platforms, when the tool is deprecated — the expertise doesn't move with them.
SQL mastery moves everywhere, because SQL is everywhere. Every platform that stores and queries structured data speaks SQL. It has for forty years. It will for forty more.
The corollary is equally important: someone who understands the SQL layer can evaluate any tool clearly. They can look at what dbt generates and judge whether it's efficient. They can look at what Fivetran loads and understand what it did. They can look at a slow query and know exactly why it's slow. The SQL layer is the ground truth. Everything else is an interpretation of it.
The True Cost of a Tool-Heavy Stack
Licensing is the number people look at. It's not the number that hurts.
The modern data stack at enterprise scale can run six figures a year in licensing alone before you add a single headcount. But the licensing cost is predictable. The hidden costs are not.
Talent. Finding someone who is genuinely expert in your specific combination of tools — not just familiar with each one individually, but experienced running them together in production — is hard. The market for dbt experts, Fivetran specialists, and Airflow engineers is thin at the senior level and expensive when you find them.
Staffing for continuity. If your data platform is business-critical — and most are, once people start relying on it — someone has to be on call for it. A tool-heavy stack means the on-call person needs tool expertise, not just SQL knowledge. A SQL-native platform can be maintained and debugged by any competent data practitioner. A tool-heavy platform requires specialists.
Developer onboarding. Every developer who touches the platform needs to understand not just the data model and the business logic, but the tools. A new hire on a SQL-native platform reads the stored procedures and understands what the platform does. A new hire on a tool-heavy platform spends weeks learning the toolchain before they can reason about the data.
Version lock and migration risk. Tools evolve. Vendors get acquired. Pricing models change. A platform built on native SQL is portable — the logic lives in the warehouse and moves with it. A platform built on top of tools has dependencies that make migration expensive and risky.
When Tools Are Worth It
I use tools. I use Snowflake, which is itself a tool — a very good one. I use VS Code. I use AI assistance on every engagement. I would not want to work without them.
The argument is not that tools are bad. The argument is that tools should extend capability, not substitute for the foundational understanding that makes them useful.
dbt is worth it when you have a team of analysts who need to collaborate on transformations, when you want lineage tracking built in, when the version control and testing framework justify the learning curve and the cost. For a solo practitioner or a small team delivering a governed warehouse to a mid-market client, it often isn't.
Fivetran is worth it when the source systems are complex, the connectors would take significant development time to build, and the volume and velocity justify the per-row cost. For sources that send a CSV file twice a month, it isn't.
Airflow is worth it when you have hundreds of interdependent jobs, complex retry logic, and a team with the capacity to maintain an orchestration platform. For a pipeline with ten procedures and a waterfall dependency chain, native scheduled tasks are simpler, cheaper, and easier to debug.
The question to ask before adding any tool: what does this give me that I don't already have, and what does it cost — in dollars, in complexity, and in distance from the SQL that the database is ultimately going to execute?
The Bottom Line for Mid-Market Companies
If your organization is on the cusp of data maturity — you know you need better data infrastructure, you have a modest budget, and you need it to work — here is what I would tell you:
You probably already have the platform. A cloud warehouse you're already paying for runs SQL. SQL can build a staged, transformed, governed data warehouse. A practitioner who understands data modeling and SQL can build it, document it, and hand it off in a way your team can maintain.
The tool tax is optional. The skill is not. What you need is someone who knows what they're doing — who can define the data model before writing a line of code, build the transformation logic directly in the language the database speaks, and deliver something your team understands well enough to own.
That is a different kind of engagement than "implement the modern data stack." It is also, in my experience, the kind that actually delivers lasting value — because it transfers capability to your organization rather than dependency on a vendor.
The least expensive data pipeline is the one built on the skills you already have access to, on the infrastructure you're already paying for, in the language every data platform has spoken for forty years.
This article was researched, shaped, and edited with AI assistance — the same tools, the same discipline, and the same governed process described across this site. The source material was 35+ years of practitioner experience and direct engagement work building production data platforms for mid-market clients. My role was the same role I always occupy: I provided the context, I steered the direction, I corrected what was wrong, I pushed for what was missing, and I made every judgment call about what stayed and what didn't. The bridle was on. The article is mine.
I'm disclosing this not as a disclaimer but as a demonstration. A governed AI collaboration produced something that accurately reflects hard-won practitioner knowledge — because the person driving it understood the work, stayed in the seat, and never handed over the reins.
Darwin Fisk is the founder of Open Data Designs, LLC, a data engineering consultancy specializing in governed data platform development.