Metering
How raw meter reads land in DPU and become queryable readings.
Metering data — interval and register reads — enters DPU as flat files (CSV or .dat), not as a fixed public schema you map columns into ahead of time.
Getting reads in
Raw files reach DPU one of two ways:
- Direct upload — up to 15 files per call, 50 MB each, staged directly to Snowflake.
- Snowpipe auto-ingest — files dropped in your cloud storage are picked up automatically and loaded as they arrive.
At this landing stage DPU does not parse individual columns — each file is loaded as a single unparsed record per row into a raw landing table. Field-level parsing, typing, and validation happen in the next stage, the enrichment (VEE) pipeline, which is specific to your source system's file layout.
The exact column-level file format (headers, delimiters, date formats) is defined per source system during onboarding — talk to your DPU representative for the specifics of your setup.
What comes out the other side
Once a file has moved through enrichment, reads are available as typed rows with fields including:
sdp_id— the service/delivery point the read belongs toread_ts/interval_start/interval_end— when the read occurredchannel_cd— which register/channel the value is fromvalue,prior_value,adjusted_value— raw and validated/estimated valuesdpu_status— pass/fail/estimate status from the enrichment pipeline
These land in the Core mart as core_fct_interval_reading (interval reads) and core_fct_register_reading (cumulative register reads) — see Core.
Failed or questionable reads
Reads that fail a validation rule, or that get gap-filled with an estimate, don't disappear — they're tracked as exceptions and are queryable and resolvable from Managing Exceptions. See Data Enrichment for how the rules that produce these are configured.
