Analyst Workflow

The Hidden Cost of Sampling: Bad Decisions From Good-Looking Numbers

By Breck Fresen 8 min read
The Hidden Cost of Sampling: Bad Decisions From Good-Looking Numbers

Sampling is a pragmatic response to a real problem. Your events table has 800 million rows and you need an answer in the next ten minutes. You take 1 percent, it runs in seconds, you get a chart. That feels like analysis.

The issue isn't that sampling is illegitimate. It's that the chart looks exactly the same whether your 1 percent was representative or not. The chart doesn't tell you which situation you're in.

When Sampling Is Actually Fine

There are workloads where sampling is technically sound. If you're estimating a global average over a large, stationary, uniformly distributed dataset, a well-chosen random sample produces an estimate with a known, bounded error. Textbook statistics applies cleanly.

Most analyst workloads are not this. They involve slices: a specific cohort, a time window, a regional subset, a product SKU. When you sample at the table level and then filter to a cohort, you're sampling again within that slice. The effective sample rate for a cohort that's 0.1 percent of your users and you're using a 1 percent table sample is 0.001 percent of the actual data for that cohort. The variance on any metric for that group is enormous, but the chart doesn't show error bars.

The Scenario Where This Gets Expensive

Consider an analyst at a growing SaaS company. They're investigating whether a new checkout flow is performing differently for users who signed up through a specific acquisition channel. They pull a 1 percent sample of events from the past 90 days. The checkout conversion looks fine, actually slightly better than average. They ship the result to the product team.

The acquisition channel in question accounts for about 3 percent of signups. In a 1 percent sample, you'd expect to see maybe a few dozen sessions for that cohort in a 90-day window. If the channel is seeing a real 20 percent conversion drop, your sample might contain too little data to detect it with any confidence. The noise swamps the signal.

Decisions get made on that analysis. Product continues the rollout. The problem compounds for another quarter before someone notices the cohort-level metrics in a more careful audit.

This is not a hypothetical failure mode. It's a common one. The bad decision doesn't look like a bad decision when it happens. The chart was clean.

Why Sampling Became the Default

The obvious reason is speed. Scanning a billion-row table in a shared warehouse costs time and, depending on your contract, money per query.

But there's a second reason: tooling friction. Until recently, the standard path to run a query against your full warehouse data required either writing SQL in a query editor, or pulling the data into a local tool. Both of those paths have enough friction that an analyst under time pressure reaches for the nearest available approximation, which is often a sampled export or a pre-aggregated table.

The friction shapes the analysis more than most teams realize. When the full data is inconvenient to reach, you reach for whatever is convenient, and you frame the result as if it were the full data.

The Problem With "Good Enough" Framing

A common defense of sampling is that the error is small for aggregate metrics. If you're measuring the global average order value across all users, 1 percent is probably fine. The central limit theorem is on your side.

But analysts rarely present only global averages. They segment. They filter. They look at the tail. And every segmentation is a further reduction of the effective sample size. The "good enough" framing for aggregate queries does not transfer to segment-level queries, and analysts routinely apply both in the same analysis without distinguishing the confidence level of each.

Running the Full Query Is Now Practical

This is directly related to what we built. Row Zero runs queries against your full warehouse data via pushdown. You write a query, the warehouse executes it on the full dataset, the result comes back into your spreadsheet. The same operations that take minutes on 800 million rows in a warehouse run in seconds to a few minutes depending on complexity and your warehouse configuration.

The point isn't that sampling is wrong as a technique. The point is that sampling should be a deliberate choice with known tradeoffs, not the default because running the real query felt too expensive or inconvenient. When the full query is a realistic option, the analysis should start there.

We don't claim that removing sampling eliminates analytical errors. Analysts can still ask the wrong question at full fidelity. The query can be semantically wrong even when it runs on all the data. But a sampling error is a category of error that compounds silently: the analyst doesn't know they missed a cohort pattern, the stakeholder doesn't know the numbers came from a biased slice, and the decision gets made with false confidence.

What to Do If You're Still on a Sampled Workflow

If your current analysis tooling requires sampling for performance reasons, a few practices reduce the risk:

  • Stratified sampling by the dimensions you plan to segment on. If you know you'll look at acquisition channel, sample by channel so each is represented proportionally rather than relying on random luck.
  • State the sample rate and effective N in every analysis document. "n=180 for this cohort" is different from "n=180,000". Both can produce a clean chart; only one of them should be trusted for a product decision.
  • Reserve full-data queries for decisions with real financial or user-experience consequences, even if those queries are slower. Know which decisions those are before you start the analysis, not after.

The larger issue is a system one. If your team's default path to analysis requires sampling, the system is pushing toward lower confidence answers. Fixing that is a tooling and infrastructure question, not an individual analyst discipline question.

← Back to blog