Skip to main content

Daily production ingestion reference

Daily production ingestion reference​

Use this document when you ingest the WELL_PRODUCTION_VOLUMES_DAILY share view from a client Snowflake data share into ComboCurve.

1. Purpose​

WELL_PRODUCTION_VOLUMES_DAILY stores daily production volumes and operational measurements for a well.

This dataset supports daily-level production ingestion when the client provides detail at the calendar-day grain.

2. Source object​

Read from the client share view that exposes WELL_PRODUCTION_VOLUMES_DAILY.

Each row represents the desired current state for one well on one production date.

3. Record identity​

Treat the following fields as the uniqueness key:

  • CHOSEN_ID
  • DATASOURCE
  • PROJECT_NAME
  • PRODUCTION_DATE

Uniqueness rule:

  • Only one daily production record can exist for each (CHOSEN_ID, DATASOURCE, PROJECT_NAME, PRODUCTION_DATE) combination.

4. Required fields​

4.1 Identity​

  • CHOSEN_ID
  • DATASOURCE
  • PROJECT_NAME
  • PRODUCTION_DATE

4.2 Audit​

  • __RECORD_SOURCE
  • __UPDATED_AT
  • __SOFT_DELETE
  • __CREATED_AT

PRODUCTION_DATE is required for every daily production row.

5. Project scoping rule​

PROJECT_NAME follows the same rule as well headers:

  • Populate it for project wells.
  • Set it to NULL for company-level wells.

6. Audit field behavior​

6.1 __RECORD_SOURCE​

Use this field for lineage and source tracking.

6.2 __UPDATED_AT​

Use this field as the record-level change watermark.

Requirements:

  • It must be present.
  • It must change whenever the daily record changes.
  • The newest row wins based on __UPDATED_AT.

6.3 __SOFT_DELETE​

Use this field to delete an existing production row.

When __SOFT_DELETE = TRUE, ComboCurve should treat the daily production record as deleted.

For deletes, the source should still provide:

  • CHOSEN_ID
  • DATASOURCE
  • PROJECT_NAME
  • PRODUCTION_DATE
  • __RECORD_SOURCE
  • __UPDATED_AT
  • __SOFT_DELETE

Other production metrics can be omitted on delete rows.

7. Production measures​

Common daily production fields include:

7.1 Production volumes​

  • OIL
  • GAS
  • WATER
  • NGL

7.2 Injection volumes​

  • WATER_INJECTION
  • GAS_INJECTION
  • CO2_INJECTION
  • STEAM_INJECTION

7.3 Pressure and operating measurements​

  • BOTTOM_HOLE_PRESSURE
  • CASING_HEAD_PRESSURE
  • FLOWLINE_PRESSURE
  • GAS_LIFT_INJECTION_PRESSURE
  • TUBING_HEAD_PRESSURE
  • VESSEL_SEPARATOR_PRESSURE
  • CHOKE
  • HOURS_ON
  • OPERATIONAL_TAG

7.4 Custom client-defined measures​

The schema supports custom daily streams through:

  • CUSTOM_NUMBER_0 through CUSTOM_NUMBER_19

Use these when the client needs to provide additional daily metrics not covered by the standard columns.

8. Validation rules​

8.1 Required-field validation​

Reject or quarantine the row if any of these are missing:

  • CHOSEN_ID
  • DATASOURCE
  • PRODUCTION_DATE
  • __RECORD_SOURCE
  • __UPDATED_AT
  • __SOFT_DELETE

8.2 Date-grain validation​

PRODUCTION_DATE must resolve to a valid calendar date. For this dataset, the expected grain is one row per day.

8.3 Referential validation​

The (CHOSEN_ID, DATASOURCE, PROJECT_NAME) tuple should resolve to a valid well in the well header dataset. If the header is missing, hold the row for retry or route it to an exception process.

8.4 Delete validation​

Delete rows must include enough information to uniquely identify the production row:

  • CHOSEN_ID
  • DATASOURCE
  • PROJECT_NAME
  • PRODUCTION_DATE
  • __RECORD_SOURCE
  • __UPDATED_AT
  • __SOFT_DELETE

9. Operational notes​

  • Re-sending the same daily row should be safe and should not create duplicates.
  • Unless a narrower contract is explicitly agreed, expect each row to represent the full current state for that well-day.
  • Use the same business key structure as WELL_HEADERS, with PRODUCTION_DATE added for daily grain.
  • Preserve raw values for lineage and troubleshooting.