CommoVision

See the future in real time

← All tables

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

ColumnTypeNullableDescription
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

FieldFormulaDescription
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.