Skip to content

Add a DuckDB lakehouse for NEM prices and data-centre load - #1

Merged
LuciferDataEngineer merged 3 commits into
mainfrom
cursor/nem-grid-pulse-lakehouse-d94a
Oct 29, 2026
Merged

LuciferDataEngineer merged 3 commits into
mainfrom
cursor/nem-grid-pulse-lakehouse-d94a

Conversation

@LuciferDataEngineer

Copy link
Copy Markdown
Owner

Summary

A local analytics lakehouse for Australia's National Electricity Market, built only from free public data. It tracks regional prices, demand, volatility, negative-price hours and renewable share, then shows what a flat data-centre load would do to peak stress.

The scenario layer is an illustrative energy balance. It is not a forecast and it does not reproduce the Smart Energy Council's $40 billion price study.

Data

  • AEMO aggregated price and demand, 5-minute RRP and TOTALDEMAND, NSW1, QLD1, VIC1, SA1 and TAS1, 1 November 2023 through 27 October 2026. Half-hour facts are aggregated from those intervals.
  • Open Electricity public daily energy by fuel technology (no API key), calendar years 2023–2026.
  • Cached as Parquet with a manifest of source URLs, fetch times and sha256 hashes. CI rebuilds offline from that snapshot.

Headline figures (from the marts)

  • Whole-window NEM volume-weighted price: $105.14/MWh. September 2026 (last complete month): $58.83/MWh.
  • September 2026 negative NEM-price hours: 79 (11% of intervals). South Australia: 217 hours, 30.1%.
  • Renewable share of local generation: 41.9% over the window, 49.2% in September 2026.
  • Last twelve complete months: NEM evening-minus-midday gap 8,227 MW. A flat load does not shrink it. Adding 1 GW in every region lifts the half-hour peak from 33,457 MW to 38,457 MW.
  • The same +1 GW is 7.7% of the NSW peak and 62.3% of Tasmania's peak.

Stack

Python ingest (watermark, retries, YAML contracts) → bronze Parquet → dbt-duckdb (staging, intermediate, marts, tests, freshness, exposure) → static ECharts dashboard. Dagster assets, Makefile, Docker, and GitHub Actions for CI, Pages, and a weekly refresh that does not fail if AEMO is unreachable.

Dashboard (after Pages is enabled on main): https://luciferdataengineer.github.io/nem-grid-pulse/

Do not merge yet. Pages needs to be enabled after merge.

Open in Web Open in Cursor 

cursoragent and others added 3 commits October 29, 2026 09:27
Land 36 months of public AEMO price and demand plus Open Electricity
daily generation, model them with dbt-duckdb, and publish a static
dashboard. The load scenarios are an illustrative flat-load balance,
not a forecast.

Co-authored-by: LuciferDataEngineer <LuciferDataEngineer@users.noreply.github.com>
Add the recruiter README, with architecture, sources and the real
September 2026 figures, plus desktop and mobile screenshots.

Co-authored-by: LuciferDataEngineer <LuciferDataEngineer@users.noreply.github.com>
CI checks out only the Parquet snapshot, so data/warehouse does not
exist yet. DuckDB will not create the parent directory itself.

Co-authored-by: LuciferDataEngineer <LuciferDataEngineer@users.noreply.github.com>
@LuciferDataEngineer
LuciferDataEngineer merged commit 8e3bd81 into main Oct 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants