gold_well_production
Monthly production volumes for every well, one row per well per month. The series is complete and continuous from first production to the well's reporting frontier: alongside volumes exactly as reported, it includes reliably-inferred rows (interior gap fills, lease-to-well allocations, period-to-month splits), each labeled in record_origin so you can always filter to the raw reported subset. Volumes are monthly totals; per-day rates, cumulatives, and month counts are intentionally not stored. They derive from this table in one SQL expression (see the derived-fields section). Operator columns give both the owner at that month (M&A applied) and the operator exactly as the source reported it.
Access tier: portal
Portal. These rows are well-level or producing-unit-level data, or our modelled output at cohort or grid grain. They open with a Portal, Pro or Enterprise plan. The website shows aggregates built from them, never the rows.
Primary key: well_id, date
Region codes: ab, ak, al, ar, argentina, bc, brazil, ca, co, gom, ks, la, mb, mexico, mi, ms, mt, nd, nm, oh, ok, pa, pacific, sk, tx, ut, wv, wy
Columns
| Column | Type | Nullable | Description |
|---|---|---|---|
well_id |
string | no | Globally unique well identifier (opaque string), the join key to the well register (gold_wells) and every other well-grain table. Stable across time; never parse substrings out of it. |
date |
date | no | Production month, always the first day of the month (a 2026-03 row is dated 2026-03-01). Together with well_id this is the primary key. |
year |
int16 | no | Calendar year of the production month (equals the year of date). Provided for fast year-level filtering and partition pruning. |
oil_per_month |
int32 | no | Oil produced during the month, in barrels (BBL). Includes condensate. Never NULL: a reported zero, a reliably-inferred zero, and a placeholder zero all appear as 0, with record_origin telling you which (see source_corrupt for placeholder zeros where the source's stored figures were discarded as corrupt). NGLs are excluded. |
gas_per_month |
int32 | no | Natural gas produced during the month, in thousand cubic feet (MCF). Hydrocarbon gas only: non-hydrocarbon volumes a source books in its gas column (carbon dioxide, helium, nitrogen) are excluded. Gross wellhead gas; see the disposition table for how gas was used or sold. Never NULL. |
water_per_month |
int32 | yes | Water produced during the month, in barrels (BBL). NULL where the source does not report well-level water (e.g. TX, OK): NULL means "not reported", never zero. |
producing_days |
int16 | yes | Number of days the well actually produced during the month, as reported. NULL where the source does not report it, and where a reported count was refused as outside the 0-31 range a month can hold; in Pennsylvania and Ohio a spread filing's zero-day months that still carry volume are NULL as well. Note: per-day rates in our serving layers divide by calendar days, not producing days, so rates stay comparable across sources. |
operator |
string | yes | The company operating the well during THIS month, as a canonical company name (e.g. "EOG Resources"): mergers and acquisitions are applied as of the production month, so a well acquired in 2022 shows the buyer from 2022 onward and the previous owner before that. NULL only when the source provides no operator at all. A change in operator between a month the source dated and a month it did not marks where our dated evidence ends, not a dated ownership event. |
operator_id |
string | yes | Stable company identifier for operator: the owner at this month. Join key to the organizations register. NULL when the operator name cannot be resolved to a registered organization. |
reported_operator |
string | yes | The operator exactly as the regulatory source records it for this month, normalized to a canonical display name but with NO merger succession applied: the faithful regulatory record. Where this differs from operator, our ownership graph corrected a stale operator-of-record at the source. NULL wherever the source gives us no operator we can present as a company for that month: it may publish nothing at all, only a placeholder for an unknown or orphaned operator (a state plugging fund, an "unknown operator" literal), or only a contract or licence identifier we have not yet mapped to its operator. |
reported_operator_id |
string | yes | Stable company identifier for reported_operator (no merger succession). operator_id differing from reported_operator_id means we corrected the source's stale record. NULL wherever reported_operator is NULL (see there), and additionally where a usable published name is not yet mapped to a registered organization, so a NULL id beside a populated reported_operator_entity means an unmapped name, not a missing operator. |
reported_operator_entity |
string | yes | Raw reporting entity name from the source (e.g. "EOG New Mexico"), before any normalization or company resolution. No merger succession is applied: this is the source's own string, not our corrected view of who owns the well today. NULL where the source names no real company: regulator placeholder strings ("historic owner", "not assigned") are treated as no operator rather than published as one. Also empty on months we filled in ourselves (record_origin = gap_filled): the source reported nothing for that month; a region's filled-in months read this way from its next production refresh. Useful for audit and M&A analysis. |
reported_operator_registration_id |
string | yes | The regulator-issued operator ID at the time of production (TX P-5 number, ND operator number, etc.). Where the source filing carries one, it is passed through raw as an opaque string. Where the regulator issues licence IDs but never prints them on production records (currently Kansas), it is our match of the reported operator name to the state's own licensee register: the same ID namespace, derived by us rather than filed. NULL otherwise. |
record_origin |
string | no | How this row was derived: the provenance flag. Values: reported (as filed with the source), gap_filled (a reliably-inferred zero inside a well's reporting history), lease_allocated (lease-level volume allocated to wells), period_allocated (multi-month filing split to months), reconciled (adjusted to match an official published total), wellstar_estimated (California's own preliminary-estimate flag), source_corrupt (placeholder zeros for filed figures we discarded as corrupt). Filter record_origin = 'reported' for the raw source view, noting that inside a declared discard window (see source_corrupt) the discarded stream's figures are placeholder zeros on every origin, reported rows included.
Values: reported · gap_filled · lease_allocated · period_allocated · reconciled · wellstar_estimated · source_corrupt. |
Derived fields you can compute
| Field | Formula | Description |
|---|---|---|
oil_per_day |
oil_per_month / date_part('day', last_day(date)) |
Average oil rate for the month in BBL/d, using calendar days (not producing days) so rates are comparable across sources and wells. |
gas_per_day |
gas_per_month / date_part('day', last_day(date)) |
Average gas rate for the month in MCF/d, calendar-day basis. |
water_per_day |
water_per_month / date_part('day', last_day(date)) |
Average water rate for the month in BBL/d, calendar-day basis. NULL where water_per_month is NULL. |
oil_cum |
SUM(oil_per_month) OVER (PARTITION BY well_id ORDER BY date) |
Cumulative oil (BBL) from first production through this month. |
gas_cum |
SUM(gas_per_month) OVER (PARTITION BY well_id ORDER BY date) |
Cumulative gas (MCF) from first production through this month. |
water_cum |
SUM(water_per_month) OVER (PARTITION BY well_id ORDER BY date) |
Cumulative water (BBL) from first production through this month. |
months_on_production |
CASE WHEN date >= MIN(CASE WHEN oil_per_month > 0 OR gas_per_month > 0 THEN date END) OVER (PARTITION BY well_id) THEN 1 + datediff('month', MIN(CASE WHEN oil_per_month > 0 OR gas_per_month > 0 THEN date END) OVER (PARTITION BY well_id), date) END |
Calendar months elapsed since the well's first month with any oil or gas (that month = 1), counting idle months. NULL before first production. The x-axis for type-curve and decline analysis. |
producing_months |
SUM(CASE WHEN oil_per_month > 0 OR gas_per_month > 0 THEN 1 ELSE 0 END) OVER (PARTITION BY well_id ORDER BY date) |
Running count of months with actual production (oil or gas above zero): unlike months_on_production, idle months don't advance it. |
How these numbers are built is on methodology; the machine twin of this page is data-dictionary.json.