DEV Community

Cover image for Your Data Pipeline Works. So Why Is Your Dashboard Wrong?
Gia
Gia

Posted on

Your Data Pipeline Works. So Why Is Your Dashboard Wrong?

A dashboard shows a number. Someone looks at it and asks: “Is that number actually correct?”

The pipeline is running. The database is connected. The queries execute successfully. There are no obvious errors. And yet the dashboard can still be wrong. That’s one of the frustrating realities of working with data: a pipeline can work perfectly from a technical perspective while producing misleading results. The problem isn’t always broken code — sometimes it’s what the code is actually doing.

A working pipeline doesn’t guarantee correct data

Imagine a company’s sales pipeline running end to end — application, ingestion, ETL, warehouse, SQL transformation, dashboard. Every step completes successfully and the dashboard shows revenue of ₹52.4M. Everything looks healthy. Then the finance team checks their records and finds ₹48.7M.

Every step succeeded; the dashboard and finance still disagree.

A fully green pipeline producing a wrong number

The pipeline didn’t crash. No query failed. The system simply produced a result based on a different definition of revenue — and that’s a far harder problem to detect than a crash.

Technical correctness vs business correctness

A SQL query can be technically correct:

SELECT SUM(amount)
FROM orders;
Enter fullscreen mode Exit fullscreen mode

The query is valid and the database returns a number. But does amount represent revenue? Maybe. What if the table also contains cancelled orders, refunds, test transactions, pending payments, discounts, taxes, or duplicates?

One line of SQL, seven hidden assumptions.

What is folded inside SUM(amount)

Now the question isn’t “does this SQL work?” It’s “does this SQL represent what we actually mean?” That’s the difference between technical correctness and business correctness.

Small assumptions can change big numbers

Take a simple question: “how many active customers do we have?” You might write:

SELECT COUNT(*)
FROM customers
WHERE status = 'active';
Enter fullscreen mode Exit fullscreen mode

Seems reasonable. But what does “active” mean — logged in within 30 days? Purchased within 90? Has a valid subscription? Hasn’t been deleted? Has a verified account? Each definition produces a completely different number, and the database doesn’t know which one the business intended.

Dashboards hide the complexity

This is why dashboards can create a false sense of confidence. A tile might read Active Customers: 184,320 — precise, with a chart, a percentage, maybe a trend line. But the visualization never tells you which table was used, which filters were applied, how the metric was defined, when the data last updated, whether duplicates were removed, or which business rules applied. The number looks simple because the complexity is hidden underneath it.

Data freshness is another problem

Even if the query is correct, the data might not be current. A dashboard says Today’s Orders: 12,420, but the pipeline runs every six hours — the real number might already be 14,000. Nothing is broken; the dashboard is just showing an older snapshot. That matters most when people assume “live dashboard” means the data is actually live.

Pipelines can fail silently

Not every data problem raises an error. Suppose a pipeline expects a million records but receives 750,000. It may still complete successfully, the database still accepts everything, the dashboard still loads — but 250,000 records are missing. That’s often more dangerous than a visible failure: a broken pipeline gets attention, while one that quietly produces incomplete data can go unnoticed. This is exactly the gap that data observability exists to catch.

The join problem

Joins are another common source of misleading results. You want the number of customers who placed an order, so you join customers to orders. But if one customer has 20 orders, that customer can appear 20 times — and a simple COUNT(*) quietly becomes an inflated count instead of COUNT(DISTINCT customer_id).

One customer, twenty orders — and two very different counts.

COUNT star versus COUNT distinct

One customer, twenty orders — and two very different counts.

The query runs, the result looks reasonable, and the number is wrong. Database relationships matter just as much as SQL syntax.

NULL values can change the result

NULLs add another layer of confusion:

SELECT AVG(discount)
FROM orders;
Enter fullscreen mode Exit fullscreen mode

If many orders have NULL in the discount column, SQL doesn’t treat NULL like zero — so the average may behave very differently from what someone expects. Nothing is broken; the database is doing exactly what it was told. The problem is that the person reading the dashboard may not know what the query actually means.

The real problem is often context

When a dashboard is wrong, the instinct is to investigate the pipeline — and that’s important. But sometimes the pipeline is working exactly as designed. The bigger question is whether it was built around the right definition of the problem. That takes context: what the business question means, where the relevant data lives, how tables relate, what each column represents, which records to include, and which business rules apply. Without it, even a perfectly functioning stack produces misleading answers.

More data doesn’t automatically mean better data

Modern companies collect enormous amounts of information — and more data means more room for ambiguity. You might have:

orders
orders_archive
orders_v2
customer_orders
daily_orders
monthly_orders
Enter fullscreen mode Exit fullscreen mode

Which one should power the dashboard? There may be a valid reason to use each. The hard part is knowing which one represents the question you’re actually trying to answer.

So how do we make dashboards more reliable?

The fix isn’t simply “check the SQL.” A reliable workflow needs multiple layers of validation.

1Validate the data

Missing records, duplicates, unexpected NULLs, outliers, and freshness.

2Validate the logic

Are the right tables used? Are the joins, filters, and aggregations correct?

3Validate the definition

Does the metric actually mean what the business thinks it means?

A metric called Revenue should have a clearly defined meaning. Otherwise two teams calculate “revenue” differently and both believe they’re right.

Final thought

A dashboard doesn’t become trustworthy because the pipeline is green. A query doesn’t become correct because it executes. And a number doesn’t become meaningful because it appears on a chart.

Reliable analytics is less about moving data than understanding what it represents.

That’s the bet behind DBx Studio — keep the business definition attached to the number so the answer on the screen is one you can actually trace. So the next time a dashboard looks wrong, don’t only ask “did the pipeline fail?” Also ask: did we give the pipeline the right question?

Top comments (0)