Skip to main content

Monthly production ingestion reference

Monthly production ingestion reference​

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

1. Purpose​

WELL_PRODUCTION_VOLUMES_MONTHLY stores monthly production volumes and operational measurements for a well.

Use this dataset when the client provides production at monthly grain instead of daily grain, or when monthly delivery is the agreed source for operational simplicity.

2. Source object​

Read from the client share view that exposes WELL_PRODUCTION_VOLUMES_MONTHLY.

Each row represents the desired current state for one well and one production month.

3. Record identity​

Treat the following fields as the uniqueness key:

  • CHOSEN_ID
  • DATASOURCE
  • PROJECT_NAME
  • PRODUCTION_DATE

Uniqueness rule:

  • Only one monthly 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 monthly production row.

5. Month convention​

Use one consistent convention for PRODUCTION_DATE in monthly data.

Recommended convention:

  • Set PRODUCTION_DATE to the 15th day of the production month.
  • For example, use 2025-01-15 for January 2025.

If the client uses a different convention, map it consistently, but do not mix conventions inside the same dataset. Mixing month-date conventions can create duplicate logical records.

6. Project scoping rule​

PROJECT_NAME follows the same scope rule as the other datasets:

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

7. Audit field behavior​

7.1 __RECORD_SOURCE​

Use this field for lineage and source tracking.

7.2 __UPDATED_AT​

Use this field as the record-level watermark.

Requirements:

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

7.3 __SOFT_DELETE​

Use this field to delete an existing monthly production row.

When __SOFT_DELETE = TRUE, ComboCurve should treat the monthly 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 monthly measures can be omitted on delete rows.

8. Production measures​

Common monthly production fields include:

8.1 Production volumes​

  • OIL
  • GAS
  • WATER
  • NGL

8.2 Operational measures​

  • DAYS_ON
  • CHOKE
  • OPERATIONAL_TAG

8.3 Injection volumes​

  • WATER_INJECTION
  • GAS_INJECTION
  • CO2_INJECTION
  • STEAM_INJECTION

8.4 Custom client-defined measures​

The schema supports custom monthly streams through:

  • CUSTOM_NUMBER_0 through CUSTOM_NUMBER_19

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

9. Validation rules​

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

9.2 Month-date validation​

Require PRODUCTION_DATE to follow the single agreed convention for the monthly dataset. The recommended convention is the 15th day of the month.

9.3 Referential validation​

The (CHOSEN_ID, DATASOURCE, PROJECT_NAME) tuple should resolve to a valid well in the well header dataset.

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

10. Operational notes​

  • Re-sending the same monthly row should be idempotent.
  • Use a single production-month date convention everywhere in the pipeline.
  • Do not allow mixed conventions such as first-of-month and mid-month for the same logical dataset.
  • Preserve raw-source lineage for reconciliation and troubleshooting.