ERCOT Net Load Forecast and Actuals
Net Load Actual
WITH solar_agg AS (
SELECT
ercot_solar_actual_and_forecast_by_geo_region_hourly.interval_start_local,
-- actuals are repeated across multiple reports,
-- so we just select one using max()
max(
ercot_solar_actual_and_forecast_by_geo_region_hourly.gen_system_wide
) AS gen_system_wide
FROM
ercot_solar_actual_and_forecast_by_geo_region_hourly
WHERE
ercot_solar_actual_and_forecast_by_geo_region_hourly.gen_system_wide IS NOT NULL
GROUP BY
ercot_solar_actual_and_forecast_by_geo_region_hourly.interval_start_local
),
wind_agg AS (
SELECT
ercot_wind_actual_and_forecast_by_geo_region_hourly.interval_start_local,
max(
ercot_wind_actual_and_forecast_by_geo_region_hourly.gen_system_wide
) AS gen_system_wide
FROM
ercot_wind_actual_and_forecast_by_geo_region_hourly
WHERE
ercot_wind_actual_and_forecast_by_geo_region_hourly.gen_system_wide IS NOT NULL
GROUP BY
ercot_wind_actual_and_forecast_by_geo_region_hourly.interval_start_local
)
SELECT
l.interval_start_local,
l.interval_end_local,
l.total AS load,
s.gen_system_wide AS solar,
w.gen_system_wide AS wind,
l.total - s.gen_system_wide - w.gen_system_wide AS net_load
FROM
ercot_load_by_forecast_zone l
LEFT JOIN solar_agg s ON l.interval_start_local = s.interval_start_local
LEFT JOIN wind_agg w ON l.interval_start_local = w.interval_start_local
WHERE
l.total IS NOT NULL
ORDER BY
l.interval_start_local DESC
LIMIT 1000;
Net Load Forecast

Last updated
Was this helpful?

