A few years ago I was working for a mobile phone company that had a large data warehouse. They had teams of people working on ETL (Extract Transform and Load) processes to populate the Data Warehouse and other teams that carried out reporting and analysis on the Data Warehouse. There were a number of recurring data quality issues and always a few new ones every month. There were reports that monitored the data loads giving pages and pages of reconciliation reports. That was good but it was time-consuming to check through all the reports every day, and easy to miss something important.
The manager of the Data Quality team was one of the most enlightened people that I ever worked for. He described what he would like to see to manage the data quality reports that we had, and the kinds of extra checks he would like to add. We talked about this scheme and I implemented it. That was some years ago. His design has stood the test of time. We have used it in several large organisations and I have gradually developed the original code to improve the user-interface and to add support for any database that we can access with JDBC. That means all serious databases (as well as a few silly ones).
Click on the image to see how the monitor presents the state of the system to a data quality analyst. (The Driving Metrics subject area gives the best examples.)
The way Trend Charts (in particular) work is very useful to data quality analysts but is not immediately obvious, so we recommend that you read on; all is explained below.
We use this Data Quality Monitor mostly with Data Warehouses. We have used it with Data Lakes, but since Data Lakes dispense with cleaning, the Monitor shows an overwhelming sea of red traffic lights. The purpose of the Data Quality Monitor is to highlight only those measures that are unusual today, so that the Data Quality analysts can focus on those. In a well-managed Data Warehouse, data quality issues will still happen because the warehouse is populated from many other systems and those will have changes or their own data quality issues from time to time. But data quality issues should be exceptions. If the organisation cares about data quality then it will fix issues as they arise and gradually improve the state of its systems, enabling its technical teams to get on with new work, and providing its users with high quality reliable data so that they can get on with their work.
The first page in the Data Quality Monitor is a summary by subject areas. In the example system we use here, we see the various departments of an imaginary motor insurance company. (The Driving Metrics subject area gives the best examples.)
The system runs all the data quality checking queries, usually overnight, and then presents the results in a way that makes it easy to find any anomalies. The presentation is designed to be useful; not to impress Dumas (who would probably prefer a "dashboard" that looks like a convenience store window).
The factors measured are presented in groups to allow quick access to the factors interesting to each group of users. A factor can be included in more than one group where that is convenient for the users.
Within each group, individual factors are shown with a period of history. The measures are presented as a chart. From the chart you can drill down to the actual measure values over the period of history. We have found that the last 6 months is a good period to consider for most data sets, but you can set it to any number of months you like.
Each factor and each group is rated using a traffic light system
| Traffic-light colour | Meaning for a factor | Meaning for a Group |
|---|---|---|
![]() |
The factor being measured is outside its acceptable range and the source of this data needs to be fixed. | At least one factor in the group is ![]() |
![]() |
The factor being measured is not in its normal range and the source of this data should be investigated. | The worst factor in the group is ![]() |
![]() |
The factor being measured is within its acceptable range so no action is required. | Everything in the group is ![]() |
![]() |
There is no data available to measure this factor. This may suggest missing data in the source or there may be something wrong with the measurement of this factor. | Nothing in the group can be measured. |