Data Quality & Analytics Engine
Silver layer DQ engine. Failing records are routed into quarantine_<entity> Delta tables with violation codes; passing records are deduplicated by source priority.
Report filters
Report reflects data up to the latest available data load
Period
Table
Rule type
Invalid records by rule type
Share of failures across all rule categories
VAL103K (48.66%)
PAT102K (48.17%)
BR6.6K (3.10%)
REQ147 (0.07%)
NULL1 (0.00%)
Score % and grade by table
Percentage of tested records failing at least one rule
Invalid records by table and column
Failure counts broken down by rule type
Score and grade by table
Invalid vs total records tested per entity
Active DQ Rule Engine
Rules evaluated before the Silver merge
| Rule | Entity | Rule type | Logic | Predicate | Code | Failures | Active |
|---|---|---|---|---|---|---|---|
| Property identity required | properties | NOT NULL | 2 cond · 1 grp · AND | (PropertyID IS NOT NULL OR UPRN IS NOT NULL) | REQ:PropertyID | 12 | |
| UK postcode format | properties | PATTERN | 2 cond · 1 grp · AND | (Postcode IS NOT NULL AND Postcode RLIKE '^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$') | PAT:Postcode | 34 | |
| Repair priority domain | repairs | ALLOWED_VALUES | 1 cond · 1 grp · AND | PriorityCode IN ('EMERGENCY', 'URGENT', 'ROUTINE', 'PLANNED') | AV:PriorityCode | 21 | |
| Emergency repair SLA integrity | repairs | COMPOSITE | 4 cond · 2 grp · AND | (CompletionDate >= 'ReportedDate' AND CompletionDate IS NOT NULL) AND (PriorityCode != 'EMERGENCY' OR TargetHours <= 24) | BR001:CompletionDate_Before_Reported | 9 | |
| Property referential integrity | repairs | REFERENTIAL_INTEGRITY | 1 cond · 1 grp · AND | EXISTS (SELECT 1 FROM gold.Dim_Property d WHERE d.PropertyID = src.PropertyID) | RI:PropertyID->Dim_Property | 17 | |
| Void window present | voids | NOT NULL | 1 cond · 1 grp · AND | VoidStartDate IS NOT NULL | NULL:VoidStartDate | 4 |
Quarantine Management
quarantine_properties · quarantine_repairs · quarantine_voids
PRP-004182· quarantine_properties
NULL:PostcodePAT:Postcode
{"prop_id":"PRP-004182","post_cd":null,"bedrms":"3"}PRP-009911· quarantine_properties
REQ:PropertyID
{"prop_id":"","uprn_no":100023456789}REP-771204· quarantine_repairs
BR001:CompletionDate_Before_Reported
{"repair_id":"REP-771204","rep_dt":"2026-07-30","comp_dt":"2026-07-12"}REP-771889· quarantine_repairs
RI:PropertyID->Dim_PropertyAV:PriorityCode
{"repair_id":"REP-771889","prop_id":"PRP-ZZZZZ","priority_cd":"P9"}VOID-2211· quarantine_voids
NULL:VoidStartDate
{"void_id":"VOID-2211","void_start":null}PRP-004410· quarantine_properties
PAT:Postcode
{"prop_id":"PRP-004410","post_cd":"MANCHESTER"}Violation Distribution
Across all quarantine tables
DQ Copilot
LLM analysis over scorecards & quarantine
I'm the DQ Copilot. I read the Silver scorecards and quarantine tables. Ask me why a pillar moved, or which violation codes dominate an entity.