Schemas
These pages contain the data schemas for AEMO's tables. These include table names, table descriptions, column names, column data types etc.
"Packages" are a grouping of logically related tables, as per AEMO's documentation.
Special Tables are tables in a different location or format to the hundreds of other tables that AEMO publish.
Why make a copy of the official documentation?
These pages are a copy of AEMO's documentation, with plenty of additional information and warnings for counterintuitive information. The benefits of this site over AEMO's site are:
- There is one table per page (compared to AEMO's many-to-many approach, which means
ctrl-fdoesn't work), and you can bookmark a page for a specific table (or search for it in your browser history). - There is a search bar
- There are examples of values (e.g. so you can see if numbers can be negative, what values strings may take, whether a "flag" is binary etc)
- There are links to example CSVs, and snippets embedded within each page
- Several string columns are explicitly marked as enums, if they can only take one of several values, or categorical if they take one of many values.
- There are code examples for Nemosis and Polars
- The information about deduplication is written in human-readable form
- There is information about when new data appears
- This information is also presented in a machine-readable JSON format
- Some tables are missing from AEMO's documentation. They are included here.
- Sometimes CSV column names differ from the documented names. These pages say so, and the code examples rename them accordingly.
- Sometimes column names clash with the metadata columns, so reading the file with Pandas/Polars/whatever is hard. This site adds warnings, and code samples
- Sometimes datetime columns are have just
DATEin the name. Some date columns haveDATETIMEin their name. All date columns are saved in CSVs as a datetime at midnight, so it's hard to tell which is which without openning a file and looking at more than the first few rows. This site provides example strings and tells you unambiguously which one is which. - There are tips and warnings for specific columns and tables.
- e.g. AEMO lets participants submit lowercase bid types and invalid bid time strings.
- e.g.
INTERVENTIONis 0 or 1 in hundreds of tables, butyandnin just one particular table (GENCONSETINVOKE). There's a warning for that. - e.g.
METERDATA_TRKis a different table toMETERDATATRK - e.g. Some columns are documented by AEMO as mandatory, but they are sometimes omitted.
- e.g. Some columns are described as taking only one of several values, but other values do appear.
AEMO publish some of this information across many different sources. This site puts them into one place, and adds everything I have learnt, so you don't have to go through the same struggles.
More issues are described here.
Machine-redable format
Each table's page includes a JSON file with all the information that is on the page, plus a standardised JSON Schema file. If you want all that in one file, use this file. This is a non-standard format, documented here and may change.
For smaller files (e.g. for LLMs):
- list of tables: flat text file, one table name per line
- dict of tables and comment: JSON dict, with table names as key, comment as value
- list of packages: flat text file, one package name per line
- dict of package and comment, without table names (smaller): JSON dict, with package names as key, comment as value
- dict of package and comment, with table names: JSON dict, like
{"SOMEPACKAGE": {"comment": "what is it", "table_names": ["TABLE_A", "TABLE_B"]}}
These json files have no indent, to be smaller for LLMs. If you're a human wanting to look at these, I recommend openning them in Firefox. That expans them in a nice tree.
If you want content in a different format, contact me.