数据的起源
数据源(Lineage)
1)什么是lineage,为什么需要
Data Lineage是"数据来自何处,如何转换,在何处以及由谁使用"的正式记录。结果-具有属性(时间,版本,所有者,转换,访问策略,质量)的依赖项的定向图形,使数据系统可以解释和可审计。
业务价值:- 透明度(财务、产品、风险)指标:"为什么数字X=1,234?».
- 快速影响分析变化(电路/乔布):"如果……会破裂。"
- 合规性和审计(GDPR/ISO/SOC):可验证的字段路径。
- 加速爬坡和减少爬坡(自助知识)。
- 质量改进:在风险较高的地方进行有针对性的检查。
2)涂层区域和细节水平
流媒体(pipeline/job):哪些乔巴/管弦乐队产生了datasetes。
Dataset级别(table/view/topic/file):输入→输出、版本/快照。
列级别(column/feature-level):如何计算每个字段,从哪个源字段。
消耗层:BI,API报告,ML模型,行车记录仪和警报。
对于关键实体(金钱,调节),必须进行专栏级别的详细说明。
3)线性数据模型: 关键实体
Dataset: `{urn, type, schema, owners, pii_class, retention, tags}`
Job/Task: `{urn, code_ref, version, runtime, schedule, owners}`
Run/Execution: `{run_id, job_urn, start/end, status, inputs[], outputs[], code_sha, infra}`
Field: '{dataset_urn, name, type, derivation}(派生-表达式/AST/语句)。
Policy: `{dataset_urn/field, access_rules, masking, consent_scope}`
Quality Check: `{check_id, scope, rule, severity, result}`
4)线性来源: 主动vs被动装配
活动(基于事件):指导编排器/引擎(Spark/DBT/SQL engines/Kafka)发射事件"job started/finished,inputs/outputs,column-mapping"。
优点:精度、相关性、最小化后解析。
被动(inference): DAG'i、SQL/DDL/log查询、目录/存储日志;追溯地建立依赖关系。
优点:遗产的快速覆盖;缺点:小号级别的精度较低。
通常应用混合体:在可能的情况下主动事件和被动分析作为"保险网格"。
5)解决方桉架构(基准)
生产商(编排器/引擎)→线性事件总管→归一化器→图存储库→索引/搜索→ UI/API/alerta →导出/目录。
事件:统一(job/run/dataset/column-lineage),带有URN ID和语义版本。
图存储:column-level图形(例如,基于图DB或关系+inverted索引)。
UI:最短路径的交互式可视化,影响/根原因,肋骨和节点上的"质量信号"。
集成:数据目录,质量体系(DQ),访问控制(ABAC),审计(仅适用于日志)。
6)ID和转换
每个Dataset/Joba/Field的URN/Global ID:稳定,人性化,包括平台/内通/名称/版本。
方案版本(SchemaVersion)和代码版本(SHA代码,图像文稿)。
时间图快照(时间旅行线):调查的可重复性。
7) Column-level lineage: 如何获得可信度
具有AST构造和alias/STE/wyuch正常化的SQL解析。
转换代码中的注释(DBT测试,注释原语,UDF-metadata)。
引擎中的事件: 指定"目标"表达式。col = f(src.a, src.b)».
语义规则:聚合的UDF/ops被标记为"lossy"(粒度丧失)或"sensitive-preserving"(携带PII标签)。
8)线性与隐私和安全的联系
Privacy by Design:字段标签"pii_class"、"consent_scope"、"retention"。在宣传扬声器时,标签会根据规则传递(例如"电子邮件→ hash_email'保留为PII-derived)。
PII令牌化:线性存储令牌化/退化和令牌服务节点的事实;任何分解都是经过审核的事件。
加密:对于AEAD/FPE字段,lineage捕获"加密状态"和关键区域(tenant/scope)-不公开密钥。
审核和WORM:线性事件和策略更改存储在不变的日志(仅带有哈希链的附录)中。
9)基于线性的数据质量和SLO
肋骨上的支票:新鲜(freshness),饱满(completeness),独特/键,分布漂移。
SLO/SLI: "在UTC 06:00之≤完成了95%的Finotchet指标乔布。"
根原因:图+运行时给出了"第一个断节点"的快速定义。
10)影响分析和变更管理
计划中的模式/逻辑更改:下游图(downstream)-受影响的报告/模型/API客户端列表。
"突破改变"政策:强制通知下游文物的所有者,宽限期,平行版本("v1"/"v2")和"日落日期"标志。
带有消费者清单和迁移支票单的自动PR/提卡。
11)与管弦乐队和引擎集成
Orchestrators: "RunStarted/RunCompleted"事件在job之前/之后发布,带有inputs/outputs。
SQL/ELT:引擎连接器(仓库,湖屋),以获取实际的执行计划和列映射。
流处理:线性消息(topic→topic,键/头部),Avro/Protobuf电路,通过注册的电路演变。
ML:线性fichs/dataset,模型版本,训练工件,特征来源。
12)模拟标签宣传规则(数据合同)
数据集合同:电路+字段语义(键、PII、聚合性、许可证/法律依据、保留)。
宣传规则:- "SELECT a, b FROM T" →携带"a, b"标签。
- "hash(电子邮件)"→标签"PII-derived(pseudonymized)"禁止排毒。
- "SUM(amount)"→个性的丧失;禁止在结果字段中加入。
- 合同在CI中得到验证(不合格时被阻止),违规行为在审计中发生。
13)性能和规模
增量线性事件注入;重复数据消除(run_id、job_urn)。
图的存储:热索引(过去30至90天)和存档的分离;狙击手。
缓存频繁查询的路径(通往"黄金"度量的短路径)。
按室内空间/租户排序;防护"怪物节点"(粉丝限制)。
14)可视化和UX
模式是:- 到度量的路径:"从中收集指标"。
- 来自源的冲击:"谁将受到更改的影响"。
- Field lineage:"如何计算字段"。
- 霸道:乔布斯状态,质量,PII标签,回避,业主。
- 行动:打开合同,创建迁移滴答声,订阅变更变量。
15)访问图的安全性
ABAC:节点/肋可见性仅限于租户/角色。
Redaction:将UI中敏感字段名称(或其别名)隐藏为未准备好的角色。
用于API的mTLS/OIDC;lineage事件由服务标识签名。
WORM和读取控制:读取关键图段也是日志。
16)运营: SLO,监视,Alertes
图的SLO:事件出现延迟<5分钟;覆盖面完整性>98%的关键管道;100%的"金度量"具有圆柱线。
Alerts:断链,没有完成事件,方案不一致,"孤儿"日历,粉丝外向/周期增长。
报告:每周"线路覆盖状态",十大风险节点。
17)隐私和合规性(捆绑)
GDPR/PbD:将加工和修饰基础存储为标签;线路通过级联加密删除相应段提供快速DSAR路径搜索和"删除权限"。
秘密管理:获取原材料的来源永远不会作为开放的信用而在线上;仅存储角色/策略链接。
审计/不变日志:所有在线事件均已签名并固定在唯一的append存储中(请参阅相关文章)。
18)支票单
发射前:- 为datasets/jobs/fields定义了URN约定。
- 包括从编排器和引擎发射线性事件。
- 运行SQL/DDL解析器和电路归一化器。
- 已批准数据合同和PII/请求宣传规则。
- 已配置WORM事件日志和图形备份。
- BI/ML作为线性消费者(报告,模型,fici)连接。
- 关键域的线性覆盖率≥ 98%,"金钱"的专栏等级=100%。
- Alerta对破裂,"孤儿"datasetes,模式漂移包括在内。
- PII标签和合同的季度审核。
- 更改的文档处理(打破)和发送给消费者。
19)迷你食谱
RunCompleted事件(伪JSON):json
{
"event": "RunCompleted",
"run": {
"id": "run_2025-10-31T14:20:00Z_42",
"job": "urn:job:etl:finance:close_books_v3",
"status": "SUCCESS",
"code_sha": "b3f9…",
"started_at": "2025-10-31T14:05:00Z",
"ended_at": "2025-10-31T14:19:52Z"
},
"inputs": [
"urn:dataset:lake:bank_txn_v2",
"urn:dataset:warehouse:fx_rates_d+1"
],
"outputs": [
"urn:dataset:warehouse:pnl_daily_v3"
],
"column_lineage": [
{
"output": "pnl_daily_v3. pnl_usd",
"expr": "SUM(txn. amount_local fx. rate)",
"inputs": ["bank_txn_v2. amount_local", "fx_rates_d+1. rate"],
"lossy": true
}
]
}
PII宣传规则(想法):
if input. field. pii in {email, phone, id} and transform in {hash, tokenize}:
output. field. pii = "pseudonymized"
elif transform in {aggregate, anonymize_k}:
output. field. pii = "anonymous"
else:
output. field. pii = input. field. pii
Impact Quaris"会打破":
affected = downstream(urn:"urn:dataset:warehouse:users_v4", depth=4)
filter affected where kind in {"dashboard","model","api"} and owner not in {"team-exp"}
20)频繁的错误以及如何避免错误
没有正式模型的"按图片"行驶。需要事件/模式/URN,否则图不会缩放。
没有"金钱"的专栏级别。没有列级别,就无法解释计算。
不完整的事件(没有code_sha/versii模式)。不可能再现。
忽略隐私。PII标签必须与字段一起生活和携带。
一个没有障碍的大型计数器DB。在Neyspace上共享,存储snapshots。
对解雇者的盲目信仰。在有争议的情况下-引擎中的活动事件。
21) Runbook’и
事件:指标"跳跃"。
1.打开"路径到度量"→检查路径中最新的"运行"节点。
2.验证代码/方案的版本,边缘支票的DQ状态。
3.如果找到了断断续续的链接-为所有者创建一个tiket,则启用指标的临时"hold"发布。
4.小说之后-标记RCA并链接到图节点。
更改源模式。
1.请求下游影响。
2.向业主发出通知,创建迁移公关。
3.举起平行的"v_next",将两个版本保持在日落日期之前。
4.关闭"v_prev",更新合同和线性图。
- «Privacy by Design (GDPR)»
- "PII数据令牌化"
- "秘密管理"
- "审核和不变日志"
- "At Rest/In Transit加密"
- "密钥管理和旋转"