Balancing Authority Generation by Fuel

EIA-930 hourly net generation by energy source for every reporting balancing authority, one wide row per (ba, hour).

Native record
balancing authority x hour, wide by EIA energy source
hourly publication cadence
Evidence
Observed market data
Published observations from the named source
Time basis
Interval-start records
UTC · event_time

Overview

5.2M rows, 83 BAs, 2019-01 to now. Each EIA source code is its own additive column: coal, gas, oil, nuclear, hydro, pumped storage, wind, wind with storage, solar, solar with storage, battery, other and unknown storage, geothermal, other and unknown.

Query contract

One row per (ba, event_time) is already the latest EIA submission; read it plainly.

Analysis rules

  • Filter ba to your scope's code with a direct WHERE; search_data returns the allowed value. One ba per query keeps a region's rows from mixing with another's.
  • Total generation is the sum of the non-NULL fuel columns in one row. Storage columns can be negative when charging.

Interpretation

  • Net generation inside the balancing area; it excludes imports and is not a statement of how demand was served.
  • This table is a materialized MergeTree whose refresh has already collapsed source revisions. Do not add FINAL and do not re-apply argMax over ingested_at.

Access

Query from your own tools

Use the guarded HTTP endpoint directly, or connect an MCP client and load the dataset contract with describe_data before calling query_data.

HTTP endpoint
POST /api/v1/datasets/ba_generation_mix/query

Schema18

Column
Type
event_timeDateTime64(6, 'UTC')
baLowCardinality(String)
coal_mwNullable(Float64)
gas_mwNullable(Float64)
oil_mwNullable(Float64)
nuclear_mwNullable(Float64)
hydro_mwNullable(Float64)
pumped_storage_mwNullable(Float64)
wind_mwNullable(Float64)
wind_storage_mwNullable(Float64)
solar_mwNullable(Float64)
solar_storage_mwNullable(Float64)
battery_mwNullable(Float64)
other_storage_mwNullable(Float64)
unknown_storage_mwNullable(Float64)
geothermal_mwNullable(Float64)
other_mwNullable(Float64)
unknown_mwNullable(Float64)

Sample data

event_timebacoal_mwgas_mwoil_mwnuclear_mwhydro_mwpumped_storage_mwwind_mwwind_storage_mwsolar_mwsolar_storage_mwbattery_mwother_storage_mwunknown_storage_mwgeothermal_mwother_mwunknown_mw
2026-09-18 06:00:00.000000AVRN50305840
2026-09-18 06:00:00.000000IID8201900-22414
2026-09-18 06:00:00.000000DOPD146
2026-09-18 06:00:00.000000GRID01596443-1
2026-09-18 06:00:00.000000CAR5737594201060824-1738-21-67838
2026-09-18 06:00:00.000000IPCO46806722490682523
2026-09-18 06:00:00.000000PNM3095730807-4569
2026-09-18 06:00:00.000000CISO5623919223529664627-337884525
2026-09-18 06:00:00.000000PGE010041760-30
2026-09-18 06:00:00.000000BANC110874409
2026-09-18 06:00:00.000000SCL620
2026-09-18 06:00:00.000000PACW686165267035
2026-09-18 06:00:00.000000AZPS995172900071868763-1228
2026-09-18 06:00:00.000000GCPD508
2026-09-18 06:00:00.000000DEAA231
2026-09-18 06:00:00.000000CAL5892419223538462344878-3326-2212024734
2026-09-18 06:00:00.000000TEPC4201337115066
2026-09-18 06:00:00.000000TIDC21139
2026-09-18 06:00:00.000000CHPD7073
2026-09-18 06:00:00.000000PSEI04130127139024
2026-09-18 06:00:00.000000AVA3872271250110
2026-09-18 06:00:00.000000TPWR92
2026-09-18 06:00:00.000000BPAT103311294239447-20130
2026-09-18 06:00:00.000000SW22029370039156291823542151144-12928
2026-09-18 06:00:00.000000LDWP1284782342510260200

Coverage

100.0% complete0 gap days2,818 days with data
Show coverage history
Coverage: 100.0%Days with data: 2,818Gaps: 0
2026
2025
2024
2023
2022
2021
2020
2019
gaplessmore