Oil and Gas Supply Chain (ME)
Overview
A decade of the Middle Eastern liquids export chain at cargo and parcel grain, commercial and logistics data only. The six producer countries and the destination markets are real; everything below them is invented: the operators and trading houses, every field, refinery and terminal name, and every volume, price and rate. The chain reconciles exactly in integer thousand-barrel units, and the build re-verifies five identities: field production minus refinery intake equals terminal receipts per country and month, terminal closing stock equals opening plus receipts minus exports loaded, cargo volumes sum to the loaded exports once the documented duplicate bills of lading are removed, every cargo's parcels sum to its volume, and the market summary is the exact parcel aggregate. The decade is the market's, stated generically: the 2020 demand crash with production cuts, swelling terminal stocks and a chartering squeeze that multiplies tanker rates while prices collapse, the 2022 price spike, a European buyer jump after mid 2022, growth buyers gaining share all decade and the mature buyer declining. Shipments carry terminal, month, seller, vessel class, cargo size, product, freight and charter type; parcels carry buyer, destination, differential, realized price and value against the invented monthly benchmark. Built for supply-chain analytics, trading and freight modelling, reconciliation exercises, ETL pipelines and BI logic. No reservoir, extraction or process detail appears anywhere. The licence and disclosure sections state the provenance of the data.
Row Counts by Table
Counted from the files that ship, not estimated.
| Table | Rows |
|---|---|
| ong_companies | 24 |
| ong_countries | 6 |
| ong_markets | 11 |
| ong_fields | 40 |
| ong_refineries | 12 |
| ong_terminals | 10 |
| ong_field_production | 5,040 |
| ong_refinery_intake | 1,512 |
| ong_terminal_inventory | 1,260 |
| ong_benchmark_prices | 126 |
| ong_tanker_rates | 376 |
| ong_shipments | 53,626 |
| ong_parcels | 80,260 |
| ong_market_monthly | 1,386 |
Table Relationships
One parent record and seven child tables, each joined back on the same key.
Schema
Every table ships with typed columns, referential integrity, and documentation.
| Column | Type | Description |
|---|---|---|
| company_id | varchar(8) | Company key. Primary key. One trading house is renamed mid-series into a successor id, unlinked. |
| company_name | varchar(40) | Generated company name. Collisions with real national oil companies, majors and traders are a build failure. |
| home_country_code | varchar(8) | Where the company is based. Trading houses may sit outside the producer countries. |
| company_type | varchar(24) | national_operator, joint_venture or trading_house. |
| founded_year | integer | Year the company was founded. |
| Column | Type | Description |
|---|---|---|
| country_code | varchar(8) | Producer country key, ISO 3166-1 alpha-2. Primary key. The six countries are the only real geography on the supply side. |
| country_name | varchar(32) | The country in words. |
| field_count | integer | Generated fields in the country. |
| refinery_count | integer | Generated refineries in the country. |
| terminal_count | integer | Generated export terminals in the country. |
| country_description | varchar(112) | What is generated below this country. |
| Column | Type | Description |
|---|---|---|
| market_code | varchar(16) | Destination market key. Primary key. Real countries at market level, plus the UNKNOWN code for cargoes whose destination is undeclared at loading. |
| market_name | varchar(48) | The market in words. |
| market_role | varchar(16) | destination, or undeclared for the UNKNOWN code. |
| Column | Type | Description |
|---|---|---|
| field_id | varchar(8) | Field key. Primary key. |
| field_name | varchar(24) | Generated field name. Collisions with real field names of the region are a build failure. |
| country_code | varchar(8) | The country the field sits in. |
| operator_company_id | varchar(8) | The operating company. |
| product | varchar(16) | crude_oil or condensate. |
| nameplate_kbbl_month | integer | Nameplate capacity in thousand barrels per month. A commercial attribute; no reservoir detail ships anywhere. |
| start_year | integer | Year production started. |
+1 more columns in ong_fields. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| refinery_id | varchar(8) | Refinery key. Primary key. |
| refinery_name | varchar(32) | Generated refinery name. Collisions with real refinery names of the region are a build failure. |
| country_code | varchar(8) | The country the refinery sits in. |
| operator_company_id | varchar(8) | The operating company. |
| capacity_kbbl_month | integer | Intake capacity in thousand barrels per month. |
| start_year | integer | Year the refinery started. |
| Column | Type | Description |
|---|---|---|
| terminal_id | varchar(8) | Terminal key. Primary key. |
| terminal_name | varchar(32) | Generated terminal name. Collisions with real terminal names of the region are a build failure. |
| country_code | varchar(8) | The country the terminal sits in. |
| operator_company_id | varchar(8) | The operating company. |
| storage_capacity_kbbl | integer | Tank storage capacity in thousand barrels. Closing stock never exceeds it. |
| berth_class | varchar(16) | VLCC_CAPABLE or SUEZMAX_MAX: the largest vessel class the terminal loads. |
| start_year | integer | Year the terminal started. |
+1 more columns in ong_terminals. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| production_id | varchar(8) | Production row key. Primary key. |
| field_id | varchar(8) | The field. |
| year_month | varchar(16) | Month of production, 2016-01 to 2026-06. Import as text: spreadsheets convert values like 2021-05 to dates. |
| product | varchar(16) | crude_oil or condensate, matching the field. |
| volume_kbbl | integer | Produced volume in integer thousand barrels. The 2020 cut period and maintenance dips are visible. |
| volume_unit | varchar(16) | KBBL, thousand barrels. |
| Column | Type | Description |
|---|---|---|
| intake_id | varchar(8) | Intake row key. Primary key. |
| refinery_id | varchar(8) | The refinery. |
| year_month | varchar(16) | Month of the intake. Import as text. |
| volume_kbbl | integer | Intake in integer thousand barrels, deducted from the export chain. |
| volume_unit | varchar(16) | KBBL, thousand barrels. |
| Column | Type | Description |
|---|---|---|
| inventory_id | varchar(8) | Inventory row key. Primary key. |
| terminal_id | varchar(8) | The terminal. |
| year_month | varchar(16) | Month of the balance. Import as text. |
| opening_stock_kbbl | integer | Stock at month start. Equals the prior month closing stock; the chain never breaks. |
| receipts_kbbl | integer | Receipts from the country system. Reconciles exactly to production minus refinery intake per country-month. |
| exports_loaded_kbbl | integer | Volume loaded onto cargoes during the month. Cargo volumes sum to it once the documented duplicate bills of lading are removed. |
| closing_stock_kbbl | integer | Stock at month end. EXACTLY opening plus receipts minus exports; the build re-verifies every row. |
+2 more columns in ong_terminal_inventory. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| price_id | varchar(8) | Price row key. Primary key. |
| year_month | varchar(16) | Month of the price. Import as text. |
| benchmark_usd_bbl | numeric(7,2) | The invented monthly benchmark price in dollars per barrel. No published assessment is reproduced. |
| price_unit | varchar(16) | USD_PER_BBL. |
| Column | Type | Description |
|---|---|---|
| rate_id | varchar(8) | Rate row key. Primary key. |
| year_month | varchar(16) | Month of the rate. One vessel class is deliberately missing two months. Import as text. |
| vessel_class | varchar(16) | VLCC, SUEZMAX or AFRAMAX. |
| rate_usd_bbl | numeric(6,2) | The invented freight rate in dollars per barrel for the class. The 2020 chartering squeeze is in it. |
| price_unit | varchar(16) | USD_PER_BBL. |
| Column | Type | Description |
|---|---|---|
| shipment_id | varchar(16) | Cargo key. Primary key. A documented handful are duplicate bills of lading. |
| terminal_id | varchar(8) | The loading terminal. |
| year_month | varchar(16) | Loading month. Import as text. |
| seller_company_id | varchar(8) | The selling operator. |
| vessel_class | varchar(16) | VLCC, SUEZMAX or AFRAMAX. |
| cargo_kbbl | integer | Cargo size in integer thousand barrels. Parcels sum exactly to it. |
| volume_unit | varchar(16) | KBBL, thousand barrels. |
+4 more columns in ong_shipments. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| parcel_id | varchar(16) | Parcel key. Primary key. |
| shipment_id | varchar(16) | The cargo the parcel belongs to. |
| buyer_company_id | varchar(8) | The buying trading house. |
| destination_market_code | varchar(16) | The destination market, or UNKNOWN when undeclared at loading. |
| volume_kbbl | integer | Parcel volume in integer thousand barrels. |
| volume_unit | varchar(16) | KBBL, thousand barrels. |
| differential_usd_bbl | numeric(5,2) | Differential against the monthly benchmark, in dollars per barrel. |
+3 more columns in ong_parcels. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| summary_id | varchar(8) | Summary row key. Primary key. |
| market_code | varchar(16) | The destination market. |
| year_month | varchar(16) | Month of the summary. Import as text. |
| received_kbbl | integer | The exact parcel volume bound for the market that month. Re-verified by the build. |
| parcel_count | integer | The exact parcel count behind the volume. |
| avg_realized_usd_bbl | numeric(7,2) | Volume-weighted realized price in dollars per barrel. Empty when no parcels sailed. |
| volume_unit | varchar(16) | KBBL, thousand barrels. |
+1 more columns in ong_market_monthly. The full schema ships with the download.
Sample Data
A snapshot of real rows from the dataset (values are fully synthetic).
| parcel_id | shipment_id | buyer_company_id | destination_market_code | volume_kbbl | volume_unit | differential_usd_bbl | realized_price_usd_bbl | parcel_value_usd |
|---|---|---|---|---|---|---|---|---|
| PC000001 | SH00001 | TR04 | CN | 2097 | KBBL | 1.63 | 37.77 | 79203690 |
| PC000002 | SH00002 | TR08 | CN | 759 | KBBL | -0.31 | 35.83 | 27194970 |
| PC000003 | SH00002 | TR05 | CN | 645 | KBBL | 2.74 | 38.88 | 25077600 |
Version History
| v1.0.0 | 2026-08-11 | First release. Six producer countries, 53,626 cargoes, 80,260 priced parcels, exact five-identity chain reconciliation, invented benchmark and tanker-rate series, 2016-01 to 2026-06. |
Related Datasets
Energy Generation and Consumption (ASIA)
EnergyAn Asian power sector dataset: eight markets, 502 plants across seven technologies, monthly generation, availability, fuel and wholesale prices, sector demand and 340,798 outage events from 2016 to mid 2026, with the decade's energy transition and the 2021 to 2022 fuel shock built into the series.
Offshore Platform Pump SCADA and Predictive Maintenance Set (ASIA)
EnergyA complete Asia analytical warehouse covering operator, offshore platform, pump, sensor, SCADA, run, alarm, inspection, work order, part, failure, downtime, reliability, energy and prediction data.
Offshore Platform Pump SCADA and Predictive Maintenance Set (US)
EnergyA complete United States analytical warehouse covering operator, offshore platform, pump, sensor, SCADA, run, alarm, inspection, work order, part, failure, downtime, reliability, energy and prediction data.