CoolFace
Datasetpublic

renumics/industrial-asset-level-electrical-energy-dataset

Open Energy Dataset — Star Schema 1. Overview This star schema models the Gold-layer 15-minute energy aggregates from an industrial manufacturing facility in Ireland. The source dataset covers 43 monitored assets over ~12 months (2024-12-31 to 2025-12-31), with 1,039,873 ALL-phase windows totalling 2.96 GWh of measured electrical energy. The facility employs ~150 personnel under continuous production. Monitored loads include hydraulic presses, air compressors… See the full description on the dataset page: https://huggingface.co/datasets/renumics/industrial-asset-level-electrical-energy-dataset.

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes79downloads
Dataset Card

Open Energy Dataset — Star Schema

1. Overview

This star schema models the Gold-layer 15-minute energy aggregates from an industrial manufacturing facility in Ireland. The source dataset covers 43 monitored assets over ~12 months (2024-12-31 to 2025-12-31), with 1,039,873 ALL-phase windows totalling 2.96 GWh of measured electrical energy.

The facility employs ~150 personnel under continuous production. Monitored loads include hydraulic presses, air compressors, AHUs, heat pumps, mixers, material handling, and utilities. Metering was deployed progressively (staged commissioning), so individual assets have different temporal coverage within the observation window.

Source: Flynn et al., Data 2026, 11, 101 — doi:10.3390/data11050101 Dataset: doi:10.5281/zenodo.19180972

2. Tables

TableRoleRowsDescription
fact_energy_15mfact12,076,111Unpivoted 15-min energy measurements (3 signals x 4 phases)
dim_assetdimension43Monitored asset metadata (meter type, protocol, stream dates)
dim_signal_infodimension12Signal catalogue (metric name + phase + unit)
dim_observation_windowdimension1,554Deduplicated per-window coverage and reliability profiles
fact_data_quality_eventfact24Documented instrumentation fault events

File inventory

result/
├── README.md                              (this file)
├── build_star_schema.py                   (ETL script)
├── fact_energy_15m.md                     (table concept)
├── dim_asset.md                           (table concept)
├── dim_signal_info.md                     (table concept)
├── dim_observation_window.md              (table concept)
├── fact_data_quality_event.md             (table concept)
├── dim/
│   ├── dim_asset.parquet                  (43 rows, <1 KB)
│   ├── dim_signal_info.parquet            (12 rows, <1 KB)
│   └── dim_observation_window.parquet     (1,554 rows, 14 KB)
└── fact/
    ├── fact_energy_15m.parquet            (12,076,111 rows, 75.8 MB)
    └── fact_data_quality_event.parquet    (24 rows, <1 KB)

All parquet files use ZSTD compression. The fact table is a single file (not partitioned).

3. Schema Diagram

mermaid
erDiagram
    dim_asset {
        VARCHAR asset_id PK
        VARCHAR asset_type
        VARCHAR em_manufacturer
        VARCHAR em_model
        VARCHAR em_communication_protocol
        VARCHAR em_acquisition_pathway
        TIMESTAMP stream_start_utc
        TIMESTAMP stream_end_utc
        BOOLEAN is_submeter
    }

    dim_signal_info {
        INTEGER signal_id PK
        VARCHAR signal_name
        VARCHAR phase
        VARCHAR unit
        VARCHAR description
    }

    fact_energy_15m {
        VARCHAR asset_id FK
        INTEGER signal_id FK
        TIMESTAMP time
        DOUBLE value_float
        INTEGER observation_window_id FK
    }

    dim_observation_window {
        INTEGER observation_window_id PK
        DOUBLE minutes
        DOUBLE seconds_observed
        DOUBLE data_coverage_pct
        DOUBLE seconds_reliable
        DOUBLE reliable_coverage_pct
        INTEGER is_reliable_window
    }

    fact_data_quality_event {
        INTEGER event_id PK
        VARCHAR asset_id FK
        VARCHAR issue_type
        VARCHAR issue_detail
        TIMESTAMP asset_stream_start
        TIMESTAMP asset_stream_end
        TIMESTAMP issue_start
        TIMESTAMP issue_end
        BOOLEAN issue_persisted_to_stream_end
    }

    dim_asset ||--o{ fact_energy_15m : "asset_id"
    dim_asset ||--o{ fact_data_quality_event : "asset_id"
    dim_signal_info ||--o{ fact_energy_15m : "signal_id"
    dim_observation_window ||--o{ fact_energy_15m : "observation_window_id"

4. Design Principles

  • —Grain of `fact_energy_15m`: one row per (asset_id, signal_id, time). The three source measures (energy, demand, avg power) and four phases (L1, L2, L3, ALL) are unpivoted into rows with a single value_float column.
  • —Signals as a dimension: dim_signal_info encodes both the signal name and the electrical phase, enabling flexible filtering and pivoting without hard-coded column names.
  • —Coverage as a deduplicated dimension: dim_observation_window holds a surrogate observation_window_id PK plus the six coverage/reliability value columns. Only 1,554 distinct profiles exist across 4.1M source rows, so each fact row carries a compact FK instead of duplicating coverage columns.
  • —Data quality events as a separate fact: instrumentation faults are modelled as time-bounded events referencing the asset dimension, enabling temporal overlap analysis with energy facts.

5. Source Mapping

Star Schema TableSource File(s)Transform
fact_energy_15mGold-layer Parquet partitions (data_parquet/asset_id=*/dt_utc=*/*.parquet)Unpivot Energy_kWh_15m, Demand_kW, AvgPower_kW_15m x Phase into rows; rename window_start_utc -> time; assign signal_id and observation_window_id FKs
dim_assetmetadata/AssetList.csvDirect load
dim_signal_infoStatic catalogue (12 rows)Generated from the 3 signal names x 4 phases
dim_observation_windowGold-layer Parquet partitionsDISTINCT on 6 coverage columns; assign surrogate observation_window_id
fact_data_quality_eventmetadata/meter_data_quality_log.csvDirect load with surrogate event_id

6. Typical Questions

Questions an analyst might ask of this dataset, with expected answers derived from the published validation summaries.

Energy totals

Q: What is the total measured energy across all assets (ALL phase)? A: 2,958,571 kWh (2.96 GWh). This is the sum of energy_kwh_15m for the ALL phase across all assets and windows.

Q: How much energy did the grid connection (mi_a) import over the observation period? A: 1,228,639 kWh. This is the single largest energy contributor in the dataset.

Q: Which asset type consumes the most energy? A: ElectricalGridImport (1,228,639 kWh via mia), but among consumer loads: HVACAirExtraction (206,329 kWh, driven by exb at 191,771 kWh), followed by Press_Main (525,161 kWh across 9 presses) and CompressedAir (144,771 kWh from 2 compressors).

Q: What is the total energy measured across all rows including per-phase breakdowns? A: 5,917,142 kWh across all 4,103,703 rows (L1 + L2 + L3 + ALL phases combined).

Temporal coverage

Q: What is the time span of the dataset? A: 2024-12-31 07:30 UTC to 2025-12-31 23:45 UTC (approximately 12 months).

Q: How many 15-minute windows are in the ALL-phase dataset? A: 1,039,873 windows across 43 assets.

Q: Which month had the highest energy consumption? A: October 2025 with 418,908 kWh (36-37 active assets), followed by November 2025 at 403,469 kWh (40 active assets).

Q: How did the number of active assets change over time? A: From 14 assets in January 2025 to 43 assets in December 2025, reflecting staged commissioning. The jump from 14 to 18 occurred in February, then 22 in March, 26 in April, and 36 in May when supply/distribution meters came online.

Data quality

Q: What is the mean data coverage across the dataset? A: 99.99% mean data coverage (ALL phase). Median is 100.00%.

Q: What percentage of ALL-phase windows are reliable? A: 97.72% (1,016,182 out of 1,039,873 windows satisfy IsReliableWindow = 1).

Q: Which asset has the lowest reliable window percentage? A: pf (PressIntegratedAutomationCell) at 70.64%, followed by sbc (ElectricalDistribution) at 63.40%. Both have documented instrumentation issues.

Q: How many data quality events are there and what types? A: 24 events across 18 assets. Types include reversed CT polarity (most common), phase reference misalignment (single/multi/all phases), tag misconfiguration, and CT ratio misconfiguration.

Q: Which assets have unresolved faults (persisted to stream end)? A: ahua (L3 tag misconfiguration) and mixb (L3 tag misconfiguration) — both had SCADA tag issues that were never corrected during the observation period.

Asset comparisons

Q: How many assets use Modbus RTU vs Modbus TCP/IP? A: 4 assets use Modbus RTU (hpa, hpb, sbc, mib — all Rayleigh meters via gateway). The remaining 39 use Modbus TCP/IP (Weidmuller EM220 meters).

Q: Which individual press consumes the most energy? A: pk (Press Main and Robot) at 207,445 kWh, followed by pf (Press IntegratedAutomationCell) at 111,980 kWh and p_b (Press Main) at 88,014 kWh.

Q: What is the energy consumption of the two air compressors combined? A: 144,771 kWh (compa: 68,392 kWh, compb: 76,379 kWh).

Load profiles

Q: Do the heat pumps consume significant energy? A: No. hpa consumed 69 kWh and hpb consumed 12 kWh over the observation period — negligible compared to other loads.

Q: What fraction of total grid import is captured by sub-metered assets? A: The dataset is not a closed energy system — partial sub-metering means summing all consumer meters will not equal grid import (mi_a). This is a documented limitation of the retrofit monitoring deployment.