Skip to content

feat(blueprints): add automated OpenLineage metadata extraction and Marquez governance pipeline - #501

Merged
MartinRst merged 3 commits into
kestra-io:mainfrom
somuai:feat-openlineage-marquez-governance
Oct 5, 2026
Merged

MartinRst merged 3 commits into
kestra-io:mainfrom
somuai:feat-openlineage-marquez-governance

Conversation

@somuai

@somuai somuai commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Overview

This pull request adds an enterprise data governance and metadata tracking blueprint to the Kestra blueprints library: flows/openlineage-marquez-data-governance.yaml.

It automates end-to-end data lineage extraction during DuckDB analytical SQL transformations, formatting standard OpenLineage 1-0-0 run event payloads (schema facets, input and output datasets, parent job facets) and emitting them to a Marquez metadata backend with automated quality gating and Slack alerting.


Architectural Highlights

  1. Dual-Trigger Automation:
    • io.kestra.plugin.core.trigger.Schedule: Runs automated nightly compliance sweeps (04:00 UTC).
    • io.kestra.plugin.core.trigger.Webhook: Supports real-time upstream CDC or ingestion pipeline gating via LINEAGE_WEBHOOK_KEY.
  2. In-Process Analytical Transformation:
    • io.kestra.plugin.jdbc.duckdb.Queries: Curates raw transaction streams into aggregated customer revenue marts.
  3. OpenLineage Facet Generation:
    • io.kestra.plugin.scripts.python.Commands in python:3.11-slim: Constructs compliant OpenLineage 1-0-0 JSON run events with schema facets, input/output dataset definitions, nominal time, and execution run IDs.
  4. Governance Backend Emitter:
    • io.kestra.plugin.core.http.Request: Dispatches POST payloads to the Marquez lineage ingestion endpoint (/api/v1/lineage).
  5. Interactive Flowable Quality Gating:
    • io.kestra.plugin.core.flow.If: Evaluates lineage registration status.
    • then: Dispatches success notifications via io.kestra.plugin.notifications.slack.SlackIncomingWebhook.
    • else: Emits Slack failure alerts and activates an interactive io.kestra.plugin.core.flow.Pause gate requiring compliance officer sign-off before downstream pipelines proceed.

Track 02 Compliance Checklist

  • Runnable Tasks: 6 runnable tasks (setup_governance_context, run_duckdb_transformation, extract_openlineage_facets, emit_openlineage_to_marquez, verify_marquez_ingestion, notify_slack_success).
  • Flowable Tasks: 2 flowable tasks (check_governance_guardrail [If], require_compliance_officer_approval [Pause]).
  • Triggers: 2 triggers (schedule_trigger, webhook_trigger).
  • Non-Core Plugins: 3 non-core plugins (plugin-jdbc-duckdb, plugin-scripts-python, plugin-notifications).
  • Full Extend Block: Complete catalog metadata block including title, shortDescription, metaTitle, metaDescription, description (with all standard sub-headings), tags, subTags, ee: false, and demo: false.
  • Tag Compliance: extend.tags: ['Data', 'Infrastructure'] (strictly compliant with validate-blueprint-tags.yml, <= 3 allowed tags).
  • YAML Integrity: 0 tabs, pure ASCII, 100% emoji-free, passes PyYAML safe load.

@kestrabot kestrabot Bot added this to Pull Requests Oct 5, 2026
@MartinRst

Copy link
Copy Markdown
Member

Hello your workflow miss all the extend part otherwise the workflow seems ok!

@somuai

somuai commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Hi @MartinRst, thank you for pointing that out!

I have updated the blueprint with the complete extend: catalog metadata block including title, metaTitle, shortDescription, metaDescription, tags, subTags, ee: false, demo: false, and comprehensive documentation sections (How it works, Who it's for, Prerequisites, Inputs, Quick start runbook, How to extend, Links) matching the standard blueprint catalog schema.

Commit: 297a95d. Ready for your review whenever convenient!

@MartinRst MartinRst left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good thanks for the update!

@MartinRst
MartinRst merged commit 74ac4b5 into kestra-io:main Oct 5, 2026
@MilosPaunovic MilosPaunovic added the kind/external Pull requests raised by community contributors label Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/external Pull requests raised by community contributors

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants