← Back to Pattern Catalog
Interactive Pattern

Historical Coverage Gap

A Historical Coverage Gap occurs when a required historical period has no valid record.

Problem

A required reporting period has no valid historical row.

Historical models often assume that every required period is covered by at least one valid record. But in real source systems, histories are often incomplete.

Records may start too late, end too early or contain missing intervals. When reporting depends on a missing period, joins fail, facts lose attributes or snapshots become incomplete.

Missing attributesDropped fact rowsIncomplete snapshotsSilent reporting gaps
Example

Customer C1 has history for January to March and May to December, but April is missing.

Jan–Mar
Covered
April
Gap: no valid customer row
May–Dec
Covered
Reporting impact

Any April snapshot or April fact requiring this customer dimension will fail coverage validation or lose dimension attributes.

Test case

Try this Historical Coverage Gap case in Target Table Validation

Use these sample target tables to test the validator:

  1. Copy one of the target tables below.
  2. Open Target Table Validation.
  3. Paste the copied table as your target output.
  4. Check whether the April coverage gap is marked or incorrectly hidden as covered.
Coverage-aware target table

Copy this table to validate an output where the April gap is explicitly marked.

customer_id,snapshot_date,customer_status,valid_from,valid_to,coverage_status
C1,2024-01-31,Active,2024-01-01,2024-01-31,covered
C1,2024-02-29,Active,2024-02-01,2024-02-29,covered
C1,2024-03-31,Active,2024-03-01,2024-03-31,covered
C1,2024-04-30,Unknown,2024-04-01,2024-04-30,coverage_gap_marked
C1,2024-05-31,Active,2024-05-01,2024-05-31,covered
Wrong target table

Copy this table to validate a risky output where the April coverage gap is hidden as covered.

customer_id,snapshot_date,customer_status,valid_from,valid_to,coverage_status
C1,2024-01-31,Active,2024-01-01,2024-01-31,covered
C1,2024-02-29,Active,2024-02-01,2024-02-29,covered
C1,2024-03-31,Active,2024-03-01,2024-03-31,covered
C1,2024-04-30,,2024-04-01,2024-04-30,coverage_gap_unmarked
C1,2024-05-31,Active,2024-05-01,2024-05-31,covered
Open Target Table Validation →
Why it happens

Each individual row can look valid while the timeline is incomplete.

Coverage gaps usually appear between otherwise valid records. The problem often only becomes visible when another source, fact table or snapshot date needs that missing period.

Partial source historyLate-starting recordsEarly-ending recordsMissing intervalsCross-system joinsSnapshot requirements
Common modeling approaches

Make historical coverage explicit before joining.

Gap detection
Detect missing periods between valid_to and the next valid_from per entity.
Dimension completion
Backfill or extend dimension coverage where business rules allow it.
Unknown member
Use a controlled fallback member when coverage is missing but fact rows must remain.
Coverage contracts
Define which entities and periods must be covered before the model is publishable.
Validation checks

Validate coverage against the periods your reports actually need.

Detect gaps between valid_to and next valid_fromCheck fact periods against dimension coverageValidate snapshot completenessCheck required reporting periods per entityValidate cross-system temporal joins
Detectable by Historical Modeling Workbench

The Workbench can surface coverage gaps as validation findings.

VALID_GAPHistorical Coverage GapTimeline EvidenceSnapshot Coverage Risk
Why it matters

Coverage gaps are easy to miss and expensive to debug later.

Historical gaps are easy to miss because each individual record can look valid.

The problem only appears when the model is queried for a missing period or joined against another historical source. Coverage validation makes these gaps visible before they create incorrect reports.

Related Patterns
Dimension CompletionSnapshot ReproducibilityState ↔ Event AlignmentRelationship HistoryState ↔ State Alignment
Try it

Detect historical coverage gaps in your own model.

Use the Historical Modeling Workbench to validate temporal coverage, detect gaps and understand where historical joins or snapshots can fail.

Open Historical Modeling Workbench →