offdataai
Energy & Utilities · data model template

Oil & Gas Upstream EDW data model

Data Vault 2.0 raw vault for upstream oil & gas: hubs (well/field/lease/facility/operator), links (well-field, well-lease, well-facility, production), and satellites (well, field, facility, operator, well-status details + a lease-terms effectivity satellite). Hash keys and load metadata are generated by the DDL layer.

Upstream oil & gas enterprise data warehouse modeled as a Data Vault 2.0 raw vault: well, field, lease, facility, and operator hubs; well-field / well-lease / well-facility links; a non-historized well-production link carrying oil bbl and gas mcf; and descriptive, effectivity, and status satellites — built to integrate SCADA, production accounting, land, and partner systems with full historization for joint-venture accounting and regulatory volume reporting. It is a Data Vault 2.0 raw vault: hubs for business keys, links for relationships and satellites for descriptive history, with hash keys and hash diffs generated in the DDL.

Data Vault 2.0Energy & UtilitiesSOXAPI-RPEPA-GHGRP
16
tables
99
columns
14
relationships
2
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: Snowflake). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

hubslinkssatellitesreference

Design decisions

  • Hubs isolate upstream business keys

    Wells (API numbers), leases, and operators are mastered in separate land, SCADA, and partner systems; isolating their keys in hubs lets each source attach independently — essential when acreage and operatorship change through deals.

  • Non-historized well-production link

    Allocated daily production volumes are immutable accounting facts, so the production link is insert-only and carries oil, gas, and water volumes directly with no satellite.

  • Effectivity satellite on lease terms

    Royalty rates and net-revenue interests change with assignments and amendments; an effectivity satellite records the valid period of each term set for as-of revenue-distribution calculations.

  • Well status split into its own satellite

    Operational status (producing / shut-in) changes far more frequently than well master data; a separate high-rate-of-change satellite keeps history compact and loads efficient.

  • Auditability drives Data Vault in oil & gas

    Load_date + record_source on every row provide queryable lineage for joint-venture audits and EPA-GHGRP / regulatory volume reporting without scraping production-accounting logs.

Tables in the Oil & Gas Upstream EDW model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Hubs (5)

hub_well

Grain: one row per unique hub_well business key

ColumnTypeKeys
api_numbervarcharBK
load_datetimestamp
record_sourcevarchar

hub_field

Grain: one row per unique hub_field business key

ColumnTypeKeys
field_codevarcharBK
load_datetimestamp
record_sourcevarchar

hub_lease

Grain: one row per unique hub_lease business key

ColumnTypeKeys
lease_numbervarcharBK
load_datetimestamp
record_sourcevarchar

hub_facility

Grain: one row per unique hub_facility business key

ColumnTypeKeys
facility_idvarcharBK
load_datetimestamp
record_sourcevarchar

hub_operator

Grain: one row per unique hub_operator business key

ColumnTypeKeys
operator_idvarcharBK
load_datetimestamp
record_sourcevarchar

Links (4)

lnk_well_field

Grain: one row per lnk_well_field relationship

Which producing field a well belongs to.

ColumnTypeKeys
well_hkbinary
field_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_well_lease

Grain: one row per lnk_well_lease relationship

Which lease a well is drilled under.

ColumnTypeKeys
well_hkbinary
lease_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_well_facility

Grain: one row per lnk_well_facility relationship

Which surface facility a well flows into.

ColumnTypeKeys
well_hkbinary
facility_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_well_production

Grain: one row per well per production day (non-historized link)

Transactional (non-historized) link — insert-only allocated production volumes.

ColumnTypeKeys
well_hkbinary
facility_hkbinary
production_idvarcharBK
production_datedate
oil_bbldecimal
gas_mcfdecimal
water_bbldecimal
downtime_hoursdecimal
load_datetimestamp
record_sourcevarchar

Satellites (6)

sat_well_details

Grain: one row per well_hk per change

Well descriptive history.

ColumnTypeKeys
well_hkbinaryPK
load_datetimestampPK
well_namevarchar
well_typevarchar
spud_datedate
total_depth_ftdecimal
surface_latitudedecimal
surface_longitudedecimal
completion_typevarchar
load_end_datetimestamp
record_sourcevarchar

sat_field_details

Grain: one row per field_hk per change

Field descriptive history.

ColumnTypeKeys
field_hkbinaryPK
load_datetimestampPK
field_namevarchar
basinvarchar
reservoirvarchar
discovery_yearsmallint
estimated_reserves_mmboedecimal
load_end_datetimestamp
record_sourcevarchar

sat_lease_terms

Grain: one row per lease per terms effectivity change

Effectivity satellite tracking the valid period of each lease term set.

ColumnTypeKeys
lease_hkbinaryPK
load_datetimestampPK
lessor_namevarcharPII
royalty_ratedecimal
net_revenue_interestdecimal
primary_term_yearssmallint
bonus_paymentdecimal
effective_fromdate
effective_todate
is_activeboolean
load_end_datetimestamp
record_sourcevarchar

sat_facility_details

Grain: one row per facility_hk per change

Surface-facility descriptive history.

ColumnTypeKeys
facility_hkbinaryPK
load_datetimestampPK
facility_namevarchar
facility_typevarchar
processing_capacitydecimal
commission_datedate
operatorshipvarchar
load_end_datetimestamp
record_sourcevarchar

sat_operator_details

Grain: one row per operator_hk per change

Operator/partner descriptive history.

ColumnTypeKeys
operator_hkbinaryPK
load_datetimestampPK
operator_namevarchar
operator_typevarchar
working_interestdecimal
contact_emailvarcharPII
regulatory_idvarchar
load_end_datetimestamp
record_sourcevarchar

sat_well_status

Grain: one row per well per status change (high-rate-of-change satellite)

Well operational status satellite.

ColumnTypeKeys
well_hkbinaryPK
load_datetimestampPK
well_statusvarchar
artificial_liftvarchar
choke_sizedecimal
last_test_datedate
load_end_datetimestamp
record_sourcevarchar

Lookup tables (1)

ref_product_type

Grain: one row per produced product type

ColumnTypeKeys
product_codevarcharBK
product_namevarchar
phasevarchar
standard_uomvarchar

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • lnk_well_field.well_hk → hub_well (many-to-one)
  • lnk_well_field.field_hk → hub_field (many-to-one)
  • lnk_well_lease.well_hk → hub_well (many-to-one)
  • lnk_well_lease.lease_hk → hub_lease (many-to-one)
  • lnk_well_facility.well_hk → hub_well (many-to-one)
  • lnk_well_facility.facility_hk → hub_facility (many-to-one)
  • lnk_well_production.well_hk → hub_well (many-to-one)
  • lnk_well_production.facility_hk → hub_facility (many-to-one)
  • sat_well_details.well_hk → hub_well (many-to-one)
  • sat_field_details.field_hk → hub_field (many-to-one)
  • sat_lease_terms.lease_hk → hub_lease (many-to-one)
  • sat_facility_details.facility_hk → hub_facility (many-to-one)
  • sat_operator_details.operator_hk → hub_operator (many-to-one)
  • sat_well_status.well_hk → hub_well (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time