Dispatch SCADA

This National Energy Market (NEM) data repository captures the power output measured via Supervisory Control and Data Acquisition (SCADA) at the start of each 5-minute dispatch interval.

Sourced from here:

List schema of the “dispatch_scada” table.

SELECT
  column_name,
  data_type
FROM information_schema.columns
WHERE table_schema = 'public'
  AND table_name   = 'dispatch_scada'
ORDER BY ordinal_position
;
Output…
   column_name   |        data_type
-----------------+--------------------------
 settlement_date | timestamp with time zone
 duid            | text
 scada_value     | numeric
 last_changed    | timestamp with time zone
 filename        | text
 fetched_at      | timestamp with time zone
(6 rows)

List the earliest and latest dates

SELECT COUNT(*) AS total, MIN(settlement_date), MAX(settlement_date)
FROM dispatch_scada
;
Output…
  total   |          min           |          max
----------+------------------------+------------------------
 34441239 | 2024-11-06 09:35:00+11 | 2025-07-24 13:40:00+10
(1 row)

List number of records ingested and number of active DUID’s

SELECT
  date_trunc('day', settlement_date) AS day,
  COUNT(*) AS total_records,
  COUNT(DISTINCT duid) AS active_duids,
  MIN(settlement_date) AS first_ts,
  MAX(settlement_date) AS last_ts
FROM dispatch_scada
GROUP BY day
ORDER BY day DESC
LIMIT 30
;
Output…
          day           | total_records | active_duids |        first_ts        |        last_ts
------------------------+---------------+--------------+------------------------+------------------------
 2025-07-24 00:00:00+10 |         79287 |          472 | 2025-07-24 00:00:00+10 | 2025-07-24 13:55:00+10
 2025-07-23 00:00:00+10 |        135923 |          472 | 2025-07-23 00:00:00+10 | 2025-07-23 23:55:00+10
 2025-07-22 00:00:00+10 |        135929 |          472 | 2025-07-22 00:00:00+10 | 2025-07-22 23:55:00+10
...
...
 2025-06-27 00:00:00+10 |        135520 |          471 | 2025-06-27 00:00:00+10 | 2025-06-27 23:55:00+10
 2025-06-26 00:00:00+10 |        135542 |          471 | 2025-06-26 00:00:00+10 | 2025-06-26 23:55:00+10
 2025-06-25 00:00:00+10 |        135565 |          471 | 2025-06-25 00:00:00+10 | 2025-06-25 23:55:00+10
(30 rows)

List largest SCADA value and DUID

SELECT
  settlement_date,
  duid,
  filename,
  scada_value
FROM dispatch_scada
ORDER BY scada_value DESC
LIMIT 20
;
Output…
    settlement_date     |  duid  |             filename              | scada_value
------------------------+--------+-----------------------------------+-------------
 2025-03-20 18:20:00+11 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250320.zip | 1798.679930
 2025-03-20 17:35:00+11 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250320.zip | 1797.799930
 2025-03-20 18:30:00+11 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250320.zip |     1797.25
 2025-03-20 18:00:00+11 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250320.zip | 1797.190060
 2025-03-31 17:20:00+11 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250331.zip | 1796.589970
...
...
 2025-03-20 18:35:00+11 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250320.zip | 1787.550050
 2025-03-20 18:05:00+11 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250320.zip | 1787.219850
 2025-03-20 18:15:00+11 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250320.zip | 1786.859860
 2025-05-14 16:15:00+10 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250514.zip | 1785.950070
 2025-03-14 17:45:00+11 | TUMUT3 | PUBLIC_DISPATCHSCADA_20250314.zip | 1785.530030
(20 rows)

Join “dispatch_scada” with “duid_metadata” to bring in more context

SELECT
  ds.settlement_date,
  ds.duid,
  md.station_name,
  md.region,
  ds.scada_value
FROM dispatch_scada ds
JOIN duid_metadata md ON ds.duid = md.duid
WHERE ds.settlement_date >= NOW() - INTERVAL '3 hours'
ORDER BY ds.settlement_date DESC
LIMIT 100
;
Output…
    settlement_date     |   duid   |            station_name            | region | scada_value
------------------------+----------+------------------------------------+--------+-------------
 2025-07-24 15:30:00+10 | YWPS4    | EnergyAustralia Yallourn Pty Ltd   | VIC1   |    204.1875
 2025-07-24 15:30:00+10 | YWPS3    | EnergyAustralia Yallourn Pty Ltd   | VIC1   |  203.343750
 2025-07-24 15:30:00+10 | YWPS2    | EnergyAustralia Yallourn Pty Ltd   | VIC1   |      202.75
 2025-07-24 15:30:00+10 | YWPS1    | EnergyAustralia Yallourn Pty Ltd   | VIC1   |         203
 2025-07-24 15:30:00+10 | YSWF1    | Pacific Hydro Yaloak South Pty Ltd | VIC1   |        3.80
 2025-07-24 15:30:00+10 | YENDWF1  | Lal Lal Wind Farms Nom Co Pty Ltd  | VIC1   |       20.89
 2025-07-24 15:30:00+10 | YATSF1   | Yatpool Sun Farm Pty Ltd           | VIC1   |       27.86
 2025-07-24 15:30:00+10 | YARWUN_1 | RTA Yarwun Pty Ltd                 | QLD1   |      119.35
 2025-07-24 15:30:00+10 | YARANSF1 | Yarranlea Solar Pty Ltd            | QLD1   |       71.70
 2025-07-24 15:30:00+10 | YAMBUKWF | Energy Pacific (Vic) Pty Ltd       | VIC1   |        6.30
(10 rows)

Top 10 Stations (DUID’s) by SCADA value

SELECT
  md.station_name,
  ROUND(AVG(ds.scada_value), 2) AS avg_output
FROM dispatch_scada ds
JOIN duid_metadata md ON ds.duid = md.duid
WHERE ds.settlement_date >= NOW() - INTERVAL '1 day'
GROUP BY md.station_name
ORDER BY avg_output DESC
LIMIT 10
;
Output…
                               station_name                               | avg_output
--------------------------------------------------------------------------+------------
 AGL Loy Yang Marketing Pty Ltd                                           |     501.30
 Delta Electricity                                                        |     451.88
 AGL Macquarie Pty Limited                                                |     388.93
 Callide Power Trading Pty Limited                                        |     304.61
 PARF Company 10 Pty Limited as The Trustee for Coopers Gap Project Trust |     280.54
 Millmerran Energy Trader Pty Ltd                                         |     273.39
 EnergyAustralia Yallourn Pty Ltd                                         |     261.04
 MacIntyre UJV Operator Pty Ltd                                           |     194.01
 Alinta Energy Retail Sales Pty Ltd                                       |     192.49
 Pelican Point Power Limited                                              |     191.31
(10 rows)

Top SCADA contributions by state/region

SELECT
  md.region,
  ROUND(SUM(ds.scada_value), 2) AS total_mw
FROM dispatch_scada ds
JOIN duid_metadata md ON ds.duid = md.duid
WHERE ds.settlement_date >= NOW() - INTERVAL '1 day'
GROUP BY md.region
ORDER BY total_mw DESC
;
Output…
 region |  total_mw
--------+------------
 NSW1   | 2383326.63
 QLD1   | 2030496.71
 VIC1   | 1916553.35
 SA1    |  427334.80
 TAS1   |  382792.01
(5 rows)

Summing SCADA output by fuel mix breakdown

SELECT
  md.fuel_primary,
  ROUND(SUM(ds.scada_value), 2) AS total_output_mw
FROM dispatch_scada ds
JOIN duid_metadata md ON ds.duid = md.duid
WHERE ds.settlement_date >= NOW() - INTERVAL '1 day'
GROUP BY md.fuel_primary
ORDER BY total_output_mw DESC
;
Output…
             fuel_primary              | total_output_mw
---------------------------------------+-----------------
 Fossil                                |      4786717.67
 Wind                                  |      1187819.81
 Hydro                                 |       572929.41
 Solar                                 |       547058.41
 [null]                                |        36524.85
 Renewable/ Biomass / Waste            |        18565.90
 Renewable/ Biomass / Waste and Fossil |         -373.50
 Battery storage                       |       -13388.11
(8 rows)

Previous