[Feature Request]: [Python/YAML] Add native Expect / data quality PTransform with tagged DLQ outputs
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- python, yaml
- Bereich
- data-engineering
Rechercherichtung
Start by reading the Python transform patterns in apache_beam.transforms and the Beam YAML transform registration and configuration paths. Then check how schema-aware transforms, tagged outputs, and standard Beam metrics are implemented. The issue describes the required rules and violation actions; done means the native transform and YAML registration support them with the requested main and DLQ outputs and metrics.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
In production data pipelines (e.g. Bronze -> Silver -> Gold), validating records against declarative data quality rules is a fundamental requirement.
Currently in Apache Beam, implementing validation requires writing custom multi-output DoFns and branching logic. In Beam YAML, there is no declarative way to specify data quality rules with automated quarantine actions.
Proposed Architecture
Add an Expect Schema-Aware PTransform in apache_beam.transforms.expect (and register type: Expect in Beam YAML):
pipeline:
transforms:
- type: ReadFromCsv
config: {path: 'gs://bucket/raw/*.csv'}
- type: Expect
config:
rules:
- name: positive_amount
expression: 'amount > 0.0'
on_violation: dlq
- name: non_null_customer
expression: 'customer_id IS NOT NULL'
on_violation: fail
- name: valid_email
expression: "email LIKE '%@%'"
on_violation: drop
dlq_output: InvalidRecords
- type: WriteToParquet
input: Expect
config: {path: 'gs://bucket/silver/'}
- type: WriteToJson
input: Expect.InvalidRecords
config: {path: 'gs://bucket/dlq/'}
Key Capabilities
- Tagged Outputs: Emits
Tag("main")for passed records andTag("dlq")for quarantined records. - Standard Beam Metrics: Emits
beam:metric:user:expectation_passed:{rule}andexpectation_quarantined:{rule}for real-time monitoring on Dataflow/Flink. - Pluggable Violation Actions:
dlq,drop, orfail(aborts worker).
- Vorherrschende Sprache
- Java
- Sterne
- 8.7k
- Forks
- 4.8k
- Ø Merge
- 2 T. 12 Std.
- Gemergte PRs (30 T.)
- 371
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/beam
-
Release notes links wrongEvtl. vergeben @schizophrenicmaniac hat das heute übernommen. Offenbug P3
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 67/100
apache/beam#41197 · 3 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
apache/beam#39624 · 2 Reaktionen ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug]: PubsubIO used in batch incorrect batch cutoff sizeEvtl. vergeben @1fanwang hat das vor 79 Tagen übernommen. Offenbug io P3 pinned pubsub
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
apache/beam#28011 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
build P3 sub-task
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug gcp io java P3
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 65/100
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
bug emitter:client:csharp
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
microsoft/typespec#12572 · 1 Kommentar · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug] RemotingHelper.connect swaps the socket send and receive buffer configurationEvtl. vergeben @amalsaidov hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
needs-area-label
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
area/ai area/backend component/zeebe kind/task
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag