Skip to content

Data Quality Score

Turn the check results you already collect into one number everybody can read at a glance.

Data contracts carry data quality rules, and Entropy Data runs them against your real data. That gives you a lot of pass/fail detail — but it does not answer the question a consumer, a product owner, or a governance lead actually asks: is this data any good?

The data quality score answers it. It summarises check results as a single mark out of 100, at every level of your organization: one data contract, one data product, a team, a domain, or everything you have.

Data Quality Score for an organization

Switching it on

The score is off by default. An organization owner turns it on under Settings → Data Quality Score.

Data Quality Score settings

  • Show data quality scores — when switched off, no score is shown anywhere and the score pages do not exist. Check results are not affected: tests keep running and their results stay visible.
  • Configure Score Counts — what a score counts. Checks is the default and, for now, the only option; Rows scanned is coming.
  • Score levels — the three bands, and the boundaries between them. They are fixed and not configurable.

A score also needs something to describe. It is a layer over check results, so where nothing has been tested there is no score: badges stay absent, and a score page says "No check results in this period."

How the score is calculated

The latest run of each (data contract, server) pair is what gets scored. A contract tested hourly does not outweigh one tested weekly, and re-running a test does not shift a score by itself — only a different result does.

Every check weighs the same. The score is the share of those checks that passed, as a percentage. A rule failing on 2 rows of a million costs exactly as much as a rule failing on 2 rows of 10. This is deliberate: it is the only basis every test engine can supply — many report a pass or fail verdict and no row counts at all — so the score means the same thing across every contract, and does not move when an engine starts or stops reporting rows.

Every score falls in one of three bands, and the band decides what it is called and coloured wherever it appears:

BandScore
Excellent90 – 100
Moderate70 – 89
At Risk0 – 69

Only checks that could be placed on a quality dimension are scored — see below.

Quality dimensions

Every score breaks down into the seven quality dimensions of the Open Data Contract Standard: accuracy, completeness, conformity, consistency, coverage, timeliness, and uniqueness.

Each dimension is scored the same way as the total, over its own checks. All seven are always shown, whether or not you test them: a dimension nobody checks is a gap in coverage worth seeing, and it shows a dash rather than a zero, because "untested" is not the same as "failed".

How a check gets its dimension

For each check, in this order:

  1. The dimension the test engine reported for that check. A statement always beats a guess.
  2. The matching quality rule in the contract. The check is matched against the ODCS quality definitions of the data contract it ran on, by name (or by description, which is what engines like the Data Contract CLI publish as the check name), and takes that rule's dimension.
  3. The check's own name and type. Generated schema checks are recognised by convention — "no duplicate values" is uniqueness, "no missing values" is completeness, "is present" and type checks are conformity, freshness checks are timeliness.

The reliable way to control this is step 2: set dimension on your quality rules.

schema:
  - name: "ORDERS"
    quality:
      - name: "Row Count"
        type: "library"
        metric: "rowCount"
        mustBeGreaterThan: 0
        description: "Orders table must not be empty."
        dimension: "completeness"

ODCS accepts the full dimension names as well as their two-letter abbreviations (ac, cp, cf, cs, cv, tm, uq).

Uncategorized checks

Checks that none of the three steps can place are counted but never scored, and shown as a plain passed-of-total line beside the dimension tiles.

They stay out of every number on purpose. A score is a claim about a dimension of quality, and a check nobody could attribute makes no such claim — folding it in would move every number on the page by an amount that says nothing about the data, and would change the moment somebody adds a dimension to their contract. Counting them separately keeps visible how much of a run the score does not cover. To have them counted, give them a dimension.

The score page

Every score links to a page that shows how it came about.

Data Quality Score for a data contract

  • The gauge — the score, its band, and the checks behind it.
  • The trend — one point per day, each scored the way the gauge is, over the latest run of every contract and server inside that day. A point says where things stood at the end of the day, not what the average run of the day looked like. Days without runs are left out rather than drawn as zero.
  • The dimension tiles — all seven dimensions. Click one to narrow the gauge and the trend to it; click it again to clear the filter.
  • A drill-down — for an organization, domain, team, or data product: its data contracts, worst score first (at most the 20 lowest; the table says so when there are more). For a single data contract: its servers, each linking to that server's check results.
  • A time range — 7 days, 30 days (the default), 90 days, year to date, 1 year, or all time. It bounds which runs the page describes.

The page exists for these scopes:

ScopeReached from
OrganizationGovernance → Data Quality in the sidebar
Domain, Teamthe badge on the domain or team page
Data Productthe badge on the data product page
Data Contractthe badge on the data contract page, or a row of the contract drill-down

Badges

Wherever an entity has a score, it wears a badge next to its title — on data contracts, data products, teams, domains, and on the output port cards of a data product. Hovering it shows the dimension breakdown behind the number, and clicking it opens the score page.

Quality score badge with its dimension breakdown

Badges name their band ("Quality: Moderate") rather than showing the number: in a row of unrelated badges, the band is the part that reads at a glance, and the number is one hover away. The same pill turns up in the score tables, with the same tooltip.

Header badges describe the latest run whatever its age — a contract last tested a year ago still has an answer — while the score pages describe the runs inside the selected time range. A badge is simply absent where there is no check result to describe.

Next steps