Skip to main content

OpenIngest — Usability and Observability

This document covers the monitoring, metadata, and notification capabilities of OpenIngest.


Metadata tables

Every pipeline execution writes to four PostgreSQL tables automatically created on first run.

pipeline_runs

One row per full pipeline execution.

Column Type Description
run_id TEXT Unique ID — format OI-YYYYMMDD-XXXXXX
status TEXT SUCCESS or FAILED
total_datasets INTEGER Datasets processed
total_rows BIGINT Total rows loaded
total_duration FLOAT Seconds
started_at TIMESTAMP Run start time
finished_at TIMESTAMP Run finish time

pipeline_dataset_runs

One row per dataset per execution.

Column Type Description
run_id TEXT Foreign key to pipeline_runs
dataset_name TEXT Dataset name from datasets.yaml
status TEXT SUCCESS or FAILED
rows_loaded BIGINT Rows loaded this run
duration_seconds FLOAT Seconds
target_table TEXT Staging table name
load_strategy TEXT replace, append, or incremental
load_mode TEXT FULL, APPEND, or INCREMENTAL
watermark_value TEXT Latest watermark (incremental only)
loaded_at TIMESTAMP Completion timestamp

pipeline_quality_runs

One row per dataset per execution with quality metrics.

Column Type Description
run_id TEXT Foreign key to pipeline_runs
dataset_name TEXT Dataset name
status TEXT PASS or FAIL
score FLOAT Quality score 0.0–100.0
checks_total INTEGER Total checks run
checks_passed INTEGER Checks that passed
checks_failed INTEGER Checks that failed

pipeline_incremental_state

Persists watermark state between runs for incremental datasets.

Column Type Description
dataset_name TEXT Primary key
target_table TEXT Staging table
incremental_column TEXT Watermark column name
last_watermark_value TEXT Last processed watermark
last_rows_loaded BIGINT Rows loaded on last run
last_source_rows BIGINT Total source rows on last run
last_loaded_at TIMESTAMP Timestamp of last successful run

CLI monitoring commands

# Latest execution report — one-line summary per dataset
openingest report

# Full run history
openingest history
openingest history --limit 10

# Full monitoring dashboard — KPIs, dataset health, quality trends
openingest dashboard

The dashboard shows:

  • Pipeline KPIs (latest run status, total rows, quality score, duration)
  • Dataset health snapshot (per-dataset rows, quality, watermark)
  • Dataset-level trends across the last 20 runs
  • Incremental loading statistics (new records, skipped, latest watermark)
  • Quality distribution (PASS / FAIL counts)
  • Slowest datasets by average duration

Notifications (v2.5)

Configure in configs/pipeline.yaml:

notifications:
  slack:
    webhook: ${SLACK_WEBHOOK_URL}
    on: [success, failure]      # which events trigger a notification

  email:
    smtp_host: smtp.gmail.com
    smtp_port: 587
    username: ${EMAIL_USERNAME}
    password: ${EMAIL_PASSWORD}
    from: openingest@company.com
    to:
      - data-team@company.com
      - oncall@company.com
    on: [failure]               # only alert on failure

Both channels support on: [success], on: [failure], or on: [success, failure] independently.

Slack message format

Uses Slack Block Kit. Example success notification:

✅ OpenIngest — Pipeline SUCCESS

Run ID   : OI-20260703-3BB09C
Status   : SUCCESS
Datasets : 8
Rows     : 174,777
Duration : 4.21s

Email format

Plain-text email via SMTP. Subject line:

✅ OpenIngest Pipeline: SUCCESS — OI-20260703-3BB09C

Data lineage (v3.0)

The lineage engine builds a directed graph of how data flows through the pipeline per dataset.

from core.lineage import LineageGraph

graph = LineageGraph()

# Build lineage for all datasets after a run
for dataset in datasets:
    graph.add_dataset_lineage(dataset)

# Terminal view
graph.print_ascii()

# Mermaid diagram (paste into any Mermaid renderer)
print(graph.to_mermaid())

# JSON for web UI or API
data = graph.to_dict()

ASCII output

  customers
  ├─ customers.csv                   [source]
  │
  ├─ Dataset Discovery
  │
  ├─ Schema Validation               [PASS]
  │
  ├─ Quality Engine                  [PASS]  100.0%
  │
  ├─ Ingest (replace)                174,777 rows
  │
  └─ stg_customers                   [staging]

Mermaid output

flowchart TD
    customers_source[("customers.csv")]
    customers_discovery[["Dataset Discovery"]]
    customers_schema_validation[["Schema Validation"]]
    customers_quality_check{{"Quality Engine"}}
    customers_ingest[["Ingest (replace)"]]
    customers_staging[("stg_customers")]

    customers_source --> customers_discovery
    customers_discovery --> customers_schema_validation
    customers_schema_validation --> customers_quality_check
    customers_quality_check --> customers_ingest
    customers_ingest --> customers_staging

Observability queries

Direct SQL examples against the metadata tables:

-- Latest run summary
SELECT run_id, status, total_datasets, total_rows, total_duration, started_at
FROM pipeline_runs
ORDER BY started_at DESC
LIMIT 1;

-- Quality score trend for orders
SELECT r.started_at, q.score, q.status
FROM pipeline_quality_runs q
JOIN pipeline_runs r USING (run_id)
WHERE q.dataset_name = 'orders'
ORDER BY r.started_at DESC
LIMIT 30;

-- Rows loaded per dataset on the latest run
WITH latest AS (SELECT run_id FROM pipeline_runs ORDER BY started_at DESC LIMIT 1)
SELECT dataset_name, rows_loaded, load_strategy, load_mode, watermark_value
FROM pipeline_dataset_runs
WHERE run_id = (SELECT run_id FROM latest)
ORDER BY dataset_name;

-- Datasets that failed quality checks in the last 7 days
SELECT r.started_at, q.dataset_name, q.score, q.checks_failed
FROM pipeline_quality_runs q
JOIN pipeline_runs r USING (run_id)
WHERE q.status = 'FAIL'
  AND r.started_at >= NOW() - INTERVAL '7 days'
ORDER BY r.started_at DESC;

-- Current watermark state for incremental datasets
SELECT dataset_name, incremental_column, last_watermark_value,
       last_rows_loaded, last_loaded_at
FROM pipeline_incremental_state
ORDER BY dataset_name;

Release files for openingest 3.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openingest 3.0.3
File Size Uploaded
openingest-3.0.3.tar.gz 85.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openingest 3.0.3
File Interpreter ABI Platform
openingest-3.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 189.1 kB

Release files / openingest-3.0.3.tar.gz

Download URL openingest-3.0.3.tar.gz
Size 85.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0c83612ab216dbadbdce23b509b597250a1bed4d111ce95bf6fb084ccf976c45
BLAKE2b-256 checksum
How to use checksums
52c63f0a1fa8ce9f7a7c624c7d355dc000075080a7a87abfbff1869c6739dd3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

Release files / openingest-3.0.3-py3-none-any.whl

Download URL openingest-3.0.3-py3-none-any.whl
Size 103.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
48eea90494c03b1515408681a5f2c03a67776500891ea6deb2109b7ac14b8eef
BLAKE2b-256 checksum
How to use checksums
86c6b1043063edede5c861fecd59d43eb1a170ad246247a7153a0a6ee65d7151
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

Release history Release notifications | RSS feed

3.0.7

2 release files

3.0.6

2 release files

3.0.5

2 release files

3.0.4

2 release files

This release

3.0.3 This release

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page