[Feature Request]: [Python/YAML] Add native Expect / data quality PTransform with tagged DLQ outputs
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 35/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- python, yaml
调研方向
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.
由索引模型根据 Issue 内容生成。
描述
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).
- 主要语言
- Java
- 星标
- 8.7k
- 派生
- 4.8k
- 平均合并
- 2 天 12 小时
- 30 天内合并 PR
- 371
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
apache/beam 的其他 Issue
-
awaiting triage bug P3
难度 1/5 1 小时以内 新手友好度 67/100
维护者通常 1 天内回复
-
[Bug]: [Python] WriteToJson silently rounds floats to 10 decimal places可能已有人在做 @Abhi2939 于 2 天前认领。 未关闭io P2 python yaml
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
apache/beam#39624 · 2 个 reaction ·
维护者通常 1 天内回复
-
[Bug]: PubsubIO used in batch incorrect batch cutoff size可能已有人在做 @1fanwang 于 79 天前认领。 未关闭bug io P3 pinned pubsub
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
build P3 sub-task
难度 1/5 1 小时以内 新手友好度 68/100
维护者通常 1 天内回复
相似的 Issue
-
[Bug] RemotingHelper.connect swaps the socket send and receive buffer configuration可能已有人在做 @amalsaidov 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 1 天内回复
-
area/ai area/backend component/zeebe kind/task
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
spAnser/reacharound#38 ·
-
status: Ready
难度 2/5 1-3 小时 新手友好度 78/100
MobilityData/gtfs-validator#2254 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 89/100
维护者通常 1 天内回复