Concepts / Data Quality and Production Data Access

Data Quality and Production Data Access

A clean sample is evidence about the sample; production data can differ, and the source reports exactly that gap.

  • Programming

A Tidy Sample Before Launch

Imagine a team preparing to deliver a data system to a customer. The customer has handed over a sample export, several documents describing the fields, and a verbal summary of how the business runs. The team reads through the sample, finds it tidy, and begins designing around what they see. Weeks later, the system meets the real data and behaves in ways nobody planned for. The source describes this pattern as one of the most common failures in FDE engagements, and it usually starts with a quiet assumption made early in the project.

This article names that assumption, explains why it is wrong, and walks through the three problem types the source identifies: gaps between what was described and what exists, schemas that disagree, and formats that do not match across records. It then shows how these problems turn into failed systems and unplanned work, and what to do about it.

Why a Clean Sample Looks Safe

The misconception at the center of this article is the assumption that a data sample is representative of production data. The reasoning feels sensible. A sample comes from the same source, it has the same columns, and it looks well-behaved when inspected. So it seems reasonable to treat whatever is true of the sample as true of the full system.

The source states the gap directly: the data in the sample is clean, but the data in production is not. A sample can be clean for reasons that have nothing to do with the production data it was meant to represent. It may have been assembled by hand, filtered by someone who wanted it to look right, or pulled from a narrow slice of the business. Whatever the reason, a clean sample is evidence about the sample. It is not automatically evidence about everything else.

Same columnsSame columnsTidy on inspectionFull businesspopulationNarrow slice ofbusinessRecords outside thesample
How does the population a clean sample was drawn from differ from the full production dataset, and which records fall outside the sample?
Key point

Sharing columns with production is not the same as sharing its contents. The sample can match the production schema exactly and still contain none of the records that cause trouble.

Tracing the Assumption Through the Project

Follow the path a wrong assumption takes. The customer's documents describe the fields, the sample shows what those fields look like in practice, and the team designs the system from both. Nothing in that path touches the production data itself. The first time the built system meets production data is the first time the assumption is actually tested, and by then the design is already in place.

Sample exportDesign assumptionBuilt systemProduction dataUnplanned behaviorField documentsVerbal summarytidy rowsdescribed fieldshow business runsdesigned aroundmeetsexposes gaps
Where does a wrong assumption from the documentation enter the data path, and at which step does the built system break?

In the diagram, the three inputs on the left all feed one design decision. The wrong assumption enters at that decision point, because the team treats the sample and documents as a description of production. The built system is then built on that description. When it reaches production data, the mismatch surfaces at the point where the system receives real records, not at the point where the design was made.

Three Recurring Problem Types

Once the sample assumption is set aside, the problems become easier to sort. The source groups the common issues into three kinds. Each one is a place where the data the customer described and the data the customer actually holds have drifted apart. The three problem types share a single root: the expectation built from documentation and samples diverges from what the production data contains.

Data quality issuesDocumented vs actualgapsRequired fields often emptySchemainconsistenciesSchemas disagree acrosssystemsFormatting problemsDate formats vary in onecolumnkind 1kind 2kind 3
How do the three problem types (documented vs. actual discrepancies, schema inconsistencies, formatting problems) relate to each other and to the data-quality umbrella?

Reading One Date Column Two Ways

Worked example

A date column that mixes formats

A team's sample of an order table shows a single order_date column in one consistent style. Production records for the same column contain values written in two different styles. What does a parser that expects the sample style produce on the production values?

  1. 1
    Read the sample

    Every sampled value follows one pattern, so the parser is written to expect that pattern and nothing else.

  2. 2
    Read the production column

    The full column contains values in a second style as well, which the sample never showed.

  3. 3
    Apply the parser

    Values in the expected style parse correctly, while values in the second style do not match the expected pattern and cannot be read as intended.

  4. 4
    Compare the outcomes

    The system works on the sampled rows and fails or misreads a share of production rows, which is exactly the gap between sample and production.

Result

The parser looks correct against the sample but mishandles part of production. Checking the production column's formats directly would have revealed the second style before design began.

Before
order_date = '2024-03-07'

Sample style: every value matches one expected pattern.

After
order_date = '07/03/2024'

Production style: the same kind of value appears in a second pattern within the same column.

Where the Unplanned Work Comes From

The source notes that a system built around the documented structure can fail on the actual data, and that the bridging work needed to close the gap is often absent from the original estimate. The sequence runs in a predictable order. The team designs from the documents and sample. The system meets production data. Failures appear that the design did not account for. Someone must diagnose what the data actually contains, then rework the system to handle it. The diagnosis and rework were not in the plan, so they arrive as added effort.

The added effort is not a sign of carelessness in the design. It is the cost of an assumption that was never tested. Recognizing that the cost comes from the data rather than the code helps a team plan for it at the start, by allowing time to examine production data before committing to a design.

Mistakes That Hide Production Problems

  • Common mistake

    Treating a clean sample as proof that production is clean

    What it looks like

    A team inspects a tidy export and concludes the full system will behave the same way.

    Why it fails

    The source states that a clean sample is evidence about the sample. It may have been hand-assembled, filtered, or drawn from a narrow slice of the business.

    Do this instead

    Treat the sample as a starting point and check production data directly before relying on it.

  • Common mistake

    Trusting the documentation over the data

    What it looks like

    A field is documented as required, so the design assumes every record has a value.

    Why it fails

    The source reports that documented required fields are often empty in the actual data.

    Do this instead

    Measure how often each required field is populated in production records.

  • Common mistake

    Assuming one schema covers every source

    What it looks like

    A design built from one business unit's documents is applied to another unit's records.

    Why it fails

    The source notes that schemas often disagree across business units or systems.

    Do this instead

    Confirm the structure of each source the system will read, not only the one that was documented.

  • Common mistake

    Assuming a uniform-looking column is uniformly formatted

    What it looks like

    A date column looks consistent in a sample, so a single parser is written for it.

    Why it fails

    The source reports that date formats can vary within a single column.

    Do this instead

    Survey the formats that actually appear across the full column before writing the parser.

Checking Production Data Directly

Best practice

The safeguard against this misconception is to check production data directly rather than relying on the sample and the documents alone. In practice, this means measuring how often required fields are populated, listing which formats appear in each date or structured column, and comparing schemas across the sources the system will read.

Spotting the Gap in a New Dataset

MEDIUM

A customer sends you a sample of 200 customer records and a document stating that every record has an email address. Describe two checks you would run on the full production table before designing the system, and explain which of the three problem types each check targets.

Hints
  • Think about the first problem type: how often a documented required field is actually populated in production.
  • Think about the third problem type: whether the same kind of value appears in more than one format within a column.
  • Consider which population the 200-record sample might have been drawn from.

Key Takeaways

  • A clean data sample is evidence about the sample, not automatically about production data, because the sample may be hand-assembled, filtered, or drawn from a narrow slice of the business.
  • The three recurring problem types in FDE engagements are documented required fields that are often empty, schemas that disagree across business units or systems, and date formats that vary within a single column.
  • A system built around the documented structure can fail on actual data, and the bridging work to close the gap is often absent from the original estimate, which adds unplanned work.
  • Checking production data directly, including how often required fields are populated and which formats appear, is the safeguard against this misconception.