Beta — Data under validation. Values may contain errors.

ED.UNIT.RANGE

Generation time series for one production unit — average power (MW) or total energy (MWh).

Generation

Signature

ED.UNIT.RANGE(up, [start], [end], [agg], [headers], [noDate], [unit])

Description

Time series of generation for a single production unit. ENTSO-E A73 publishes at native 15-min cadence, so agg only meaningfully supports hourly and above (1=hourly, 2=daily, 3=monthly, 6=annual).

**Unit (unit parameter):** by default each bucket holds the AVERAGE power in MW over the bucket. That's the right number for capacity-factor and dispatch analysis but it's NOT the energy generated — "annual generation 800 MW" doesn't mean 800 MWh, it means 800 MW × 8760 h ≈ 7 TWh. Pass unit="MWh" to get the total energy delivered in each bucket directly. The conversion uses the native 15-min sampling interval: collapse the 15-min samples to a per-hour AVG (which equals MWh in that hour) and SUM the hourly series across the bucket. The result is exact down to the sample. The unit_generation table is 100% MW-stored, so unit="MWh" always works — there is no already-MWh edge case (unlike prices or pre-MWh metrics in ED.RANGE).

Parameters

NameTypeDefaultDescription
up*stringUnit code (e.g. ALZ1).
startdateStart. Defaults: omit end for today (Madrid, with a small overnight cutoff), omit start for 30 days before end.
enddateEnd. Omit for today.
agg1 | 2 | 3 | 4 | 62 (daily)1=hourly, 2=daily, 3=monthly, 4=quarterly, 6=annual. Other agg values (0/RAW, "5min", "15min", 5/S=semiannual, 7/T=total) are silently promoted to daily — the route only buckets at hourly / daily / monthly / quarterly / annual.
headers0 | 10Set 1 for header row.
noDate0 | 10Set 1 to omit the period column.
unit"MW" | "MWh""MW"Output unit. "MW" returns the average power in each bucket (default, historical behaviour). "MWh" returns the total energy delivered in each bucket using the native 15-min sample interval — exact down to the sample.

* Required.

Returns

Spill array — [period, value] rows. Value unit depends on unit (MW or MWh).

Examples

=ED.UNIT.RANGE("VAL2", "2025-01-01",, 3)Vandellós II monthly average power (MW)
=ED.UNIT.RANGE("ALZ1", "2025-07-01", "2025-07-01", 1)Almaraz I hourly for one day (MW)
=ED.UNIT.RANGE("BES5", "2020-01-01",, 6, 1)Beselga 5 annual with headers (MW)
=ED.UNIT.RANGE("VAN2", "2025-01-01",, 6, , , "MWh")Vandellós II annual energy delivered (MWh)
=ED.UNIT.RANGE("ALZ1", "2025-01-01", "2025-12-31", 3, , , "MWh")Almaraz I monthly energy 2025 (MWh)

Notes

  • MWh conversion is exact down to the 15-min sample (collapse to per-hour AVG, then SUM across the bucket). Robust to missing samples and independent of any future change in native cadence.
  • The unit_generation table is 100% MW-stored, so unit="MWh" always works — no 400 error like for prices (EUR/MWh) or pre-MWh metrics in ED.RANGE.
  • Sub-hourly granularity (0/RAW, 5min, 15min) is not exposed by this route even though unit_generation is stored at native 15-min cadence. Use ED.GET with the unit code if you need a single 15-min sample.

Related functions