Duplicate records do not throw errors. They pass every data quality test, then quietly inflate customer counts, shrink average order value, fake churn and split segments on every dashboard that reads them.
Three one-time buyers on the dashboard. In reality, one loyal customer who buys in every channel.
Most BI quality checks look for broken data: nulls, bad formats, failed loads. Duplicates pass all of them. Each record is valid on its own; it is the set that is wrong. So a customer who signed up online, bought in store and called support is three customers on the dashboard.
The effects compound. Customer counts go up, average order value and lifetime value go down, retention looks worse because the online and in-store versions of the same person each look like a one-time buyer, and segments are too small because each person’s behaviour is split across rows.
Deduplicating inside each dashboard query does not scale and never agrees across teams. The fix belongs upstream: resolve entities once in the data platform and let every report read the result.
Customers, accounts and suppliers are counted once per spelling, not once per entity.
Order value, lifetime value and retention are split across duplicates and look worse than they are.
Each team dedupes its own way, so finance, marketing and product report different totals.
Treat duplicates as a modelling problem, not a dashboard problem. Resolve customers, companies and products once in the data platform, write the resolved entities to tables, and have every report group by the resolved entity instead of by source-system rows.
Keep the entity IDs stable over time, so trends do not jump each time data is reprocessed, and keep the evidence for each merge, so analysts can check a number before they present it.
Three rows, one customer. Across a whole customer base, duplicates like this move every headline number.
Every dashboard reads the same resolved entities, not its own deduped copy.
Counts, averages and retention are computed per real customer.
Analysts can see why records were combined before trusting the number.
Zingg runs as a workload inside your data platform and gives every entity one persistent ZINGG_ID. Everything above it reads the same resolved entities.
The same layer powersCustomer Analytics & MarketingFinancial Crime & RiskPrivacy & ComplianceSupply Chain & ProcurementProduct 360Master Data Management
Zingg writes resolved entities with a ZINGG_ID back to your warehouse or lakehouse, ready for BI tools to read.
Zingg combines learned fuzzy matching with deterministic rules on fields like email or tax ID. How Zingg matches
Persistent ZINGG_IDs keep trend lines steady; incremental runs add new records without restating history.
Analysts can see why records were merged before they trust a number. Explainability
Most tests check each record: is the email valid, is the field filled in. A duplicate is a valid record. The problem only shows up when you ask whether two valid records are the same entity.
Exact keys miss most duplicates: people use several emails, companies change names and addresses are written many ways. Zingg combines exact rules with matching learned from your data.
Any of them. Zingg writes resolved tables to your data platform, and BI tools query those tables like any other.
Once, when duplicates are first resolved and numbers become correct. After that, persistent ZINGG_IDs keep history stable.
Resolve duplicates once in your data platform and let every dashboard read the result.