Origem dos dados
Origem dos dados (Lineage)
1) O que é lineage e o que é necessário
O Data Lineage é uma gravação formal «de onde os dados vieram, como eles se transformaram, onde e quem foram usados». O resultado é um gráfico orientado de dependências com atributos (tempo, versões, proprietários, transformações, políticas de acesso, qualidade) que torna o sistema de dados compreensível e audível.
Valor de negócio:- Transparência das métricas (finanças, produto, risco): "Por que o número X = 1.234? ».
- Análise rápida de impactos de mudanças (padrão/se): «o que vai quebrar se»....
- Conformidade e auditoria (GDPR/ISO/SOC): caminho de campo comprovado.
- Agilizar e reduzir toil (auto-serviço de conhecimento).
- Melhor qualidade: Verificações de metas onde o risco é maior.
2) Áreas de cobertura e níveis de detalhe
Nível de streaming (pipeline/job): Quais jobs/orquestradores geraram datasets.
Nível de dataset (mesa/view/topic/arquivo): entradas → saídas, versões/saques.
Nível de coluna (column/função-level): como cada campo é calculado, a partir de quais origens.
Camada de consumo: relatórios BI, API, ML, dashboard e alertas.
Para entidades críticas (dinheiro, regulação), é obrigatório um detalhe column-level.
3) Modelo de dados lineage: entidades-chave
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: 'a.daploot _ urn, name, tipo, derivation a.' (derivação - expressão/AST/operador).
Policy: `{dataset_urn/field, access_rules, masking, consent_scope}`
Quality Check: `{check_id, scope, rule, severity, result}`
4) Fontes lineage: montagem passiva vs ativa
Ativo (event-based): ferramenta orquestradores/motores (Spark/DBT/SQL engines/Kafka) para emitir eventos «job started/finished, inputs/outputs, column-maping».
Os benefícios são precisão, relevância, minimização do pós-parsing.
Passivo (inference): parsim DAG 'i, SQL/DDL/logs de solicitação, logs de diretório/armazenamento; construímos dependências de forma retroativa.
Benefícios: abrangência rápida da herança; contras: menos precisão em column-level.
Normalmente aplicam híbrido, eventos ativos onde você pode e análises passivas como «grade de seguro».
5) Arquitetura de solução (referência)
Producers (orquestradores/motores) → Pneu de eventos lineage → Normalizador → Armazenamento de conde → Índice/pesquisa → UI/API/alertas → Exportação/catálogo.
Eventos: unificado (job/run/datse/column-lineage), com URN e versões semânticas.
Armazenamento de gráficos: grafo column-level (por exemplo, baseado em BB de gráficos ou relatório + inverted index).
UI: visualização interativa dos caminhos mais curtos, impacto/raiz-causa, «sinais de qualidade» nas costelas e nódulos.
Integração: diretório de dados, sistema de qualidade (DQ), controle de acesso (ABAC), auditoria (append-only revistas).
6) Identificadores e versionização
URN/Global ID para cada dataset/jobs/campo: estável, humano, incluindo plataforma/neimspace/nome/versão.
Versões de padrão (SchemaVersion) e de código (código SHA, imagem digest).
Imagens de tempo do gráfico (time-travel lineage): reprodução de investigação.
7) Column-level lineage: como obter fielmente
SQL-parsing com ASTT e normalização de aliass/STE/uch.
Anotações em código de transformação (DBT tests, comentes primitivos, UDF-metadata).
Eventos dos motores: especifica as expressões "target. col = f(src. a, src. b)».
Regras semânticas: UDF/ops de agregação são marcados como «lossy» (com perda de granularidade) ou «sensitivo-reserving» (remetendo marcas PII).
8) Comunicação lineage com privacidade e segurança
Private by Design: marcas dos campos "pii _ class'," consent _ scope "," retenção ". Quando você promove colunas, as marcas são transmitidas de acordo com as regras (por exemplo, «email → hash _ email» fica PII-derived).
O tocening PII: lineage armazena o torneamento/detonação e os nódulos do serviço de token; Qualquer detecção é um evento de auditoria.
Criptografia: para campos AEAD/FPE lineage registra «estado cripto» e área-chave (tenant/scope) sem divulgação de chaves.
Auditoria e WORM: Eventos lineage e alterações de políticas são armazenados em um registro imutável (append-only com cadeias de hash).
9) Qualidade de dados e SLO baseado em lineage
Cheques nas costelas: frescura (freshness), totalidade (completeness), exclusividade/chaves, à deriva das distribuições.
SLO/SLI: «95% dos DVDs que alimentam as métricas finotchet estão concluídos ≤ 06:00 UTC».
Root-causa: O gráfico + os tempos de execução fornecem uma definição rápida do «primeiro nó quebrado».
10) Análise e gerenciamento de alterações
Quando você está programado para alterar o padrão/lógica: por gráfico para baixo em fluxo (downstream), uma lista de relatórios/modelos/clientes API afetados.
Política «breaking changes»: aviso obrigatório aos donos de artefatos downstream, período grace, versões paralelas («v1 »/« v2») e bandeira «sunset-data».
PR/tíquetes automáticos com lista de consumidores e folha de migração.
11) Integração com orquestradores e motores
Orquestradores: antes/depois do job, os eventos 'RunStarted/RunCompleted' com inputs/outputs são emitidos.
SQL/ELT: Conectores a motores (warehouse, lakehouse) para obter o plano real de execução e mapping das colunas.
Stream-processing: lineage de mensagens (topic→topic, key/headers), esquemas Avro/Protobuf, evolução dos circuitos através de registry.
ML: lineagem de fichas/datasets, versões do modelo, artefatos de treino, fontes de sinais.
12) Simulação de regras de enunciação de marcas (data contracts)
Contrato de conjunto de dados: esquema + semântica de campos (chaves, PII, agregabilidade, licenças/bases legais, retenção).
Regras de enaltecimento:- 'SELECT a, b FROM T' → mover as marcas 'a, b'.
- 'hash (email)' → marca 'PII-derived (pseudonymized)', impedindo a detonação.
- 'SUM (amount)' → perda de personalidade; não são permitidos os join's no campo de resultados.
- Os contratos são validados em CI (blocker em caso de inadimplência) e as violações são eventos de auditoria.
13) Desempenho e escala
Injeção de eventos lineage aumentada; Deduplicação por '(run _ id, job _ urn)'.
Armazenamento do gráfico: divisão do índice quente (últimos 30 a 90 dias) e do arquivo; Os rapazes.
Armazenamento de caminhos em dinheiro para consultas frequentes (caminhos curtos para métricas douradas).
Charding por neymspace/locatários; proteção contra «nódulos monstros» (limite de fã-out).
14) Visualização e UX
Modos:- Path to metric: «De onde se compõe a métrica».
- «Quem será afetado pela alteração».
- Field lineage: «como o campo foi calculado».
- Overlay: estatais, qualidade, marcas PII, reticências, proprietários.
- Acção: abrir um contrato, criar um tíquete de migração, inscrever-se em alertas de mudança.
15) Segurança de acesso ao grafo
ABAC: A visibilidade dos nódulos/costelas é limitada por locatários/papéis.
Redaction: esconde os nomes de campos sensíveis (ou o seu pseudônimo) na UI para papéis não preparados.
mTLS/OIDC para API; os eventos lineage são assinados por identidades de serviço.
WORM e controle de leitura: a leitura dos segmentos críticos do gráfico também é revista.
16) Operação: SLO, monitoramento, alertas
SLO grafo: atraso na chegada do evento <5 min; A totalidade da cobertura> 98% dos piplins críticos; 100% das «metricas de ouro» têm column-level lineage.
Alerts: ruptura da cadeia, run sem eventos de conclusão, incoerência dos circuitos, datasets «órfãos», crescimento do fã-out/ciclos.
Relatórios: «state of lineage coverage» semanal, top 10 nós de risco.
17) Privacidade e complacência (laços)
GDPR/PbD: Armazenar as bases de processamento e retenção como marcas de formatação; lineagem permite uma rápida busca DSAR de caminhos e «direito de remoção» através da criptato em cascata-remoção de segmentos relevantes.
Gerenciamento de segredos: fontes de acesso a matérias-primas nunca entram no lineage como créditos abertos; apenas um link para o papel/política é armazenado.
Arquivos/registros inalterados: Todos os eventos lineage estão assinados e fixados no armazenamento append-only (consulte o artigo apropriado).
18) Folhas de cheque
Antes de começar:- Acordos URN definidos para datasets/jobs/fields.
- Está ativada a emissão de eventos lineage de orquestradores e motores.
- Funciona o parser SQL/DDL e o normalizador de circuitos.
- Aprovados data-contracts e regras de enunciação PII/retenções.
- O registro de eventos do WORM e as cópias de segurança do gráfico foram configuradas.
- BI/ML estão conectados como consumidores lineage (relatórios, modelos, fichas).
- A cobertura lineage para domínios críticos ≥ 98%, column-level para «dinheiro» = 100%.
- Alertas para quebras, datasetes «órfãos», à deriva de esquemas incluídos.
- Auditoria trimestral de marcas PII e contratos.
- Processamento de alterações (breaking) e distribuição aos consumidores.
19) Mini-receitas
Evento RunCompleted (pseudo-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
}
]
}
Regra PII (ideia):
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
«O que vai quebrar»
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) Erros frequentes e como evitá-los
Lineage «por imagem» sem modelo formal. Você precisa de eventos/esquemas/URN, senão o conde não é escalado.
Não há column-level onde «dinheiro». Sem nível de coluna, os cálculos não podem ser explicados.
Eventos incompletos (sem código _ sha/versão de circuitos). Não é possível reproduzir.
Ignorando a privacidade. As marcas PII devem ser vividas e transportadas com os campos.
Um grande BB de gráficos sem charding. Divida-se por neymspace, guarde-os.
Fé cega nos parsers. Em casos controversos, eventos ativos de motores.
21) Runbook’и
O incidente é que a métrica saltou.
1. Abrir «Path to metric» → verificar os últimos 'Run' nós no caminho.
2. Comparar versões de código/padrão, status de cheques DQ nas costelas.
3. Se você encontrar um elo quebrado, criar um tíquete para o proprietário, incluir a publicação temporária «hold» da métrica.
4. Depois do fixe, marcar RCA e associar aos nódulos do grafo.
Altera o padrão de origem.
1. Solicitar impacto downstream.
2. Enviar notificações aos proprietários, criar um PR's de migração.
3. Elevar o paralelo 'v _ next', manter as duas versões até a data sunset.
4. Fechar 'v _ v', atualizar contratos e um gráfico lineage.
- «Privacy by Design (GDPR)»
- «Toquenizar dados PII»
- «Gestão de segredos»
- «Auditar e Registos Imutáveis»
- Criptografia At Rest/In Transit
- Gerenciamento de chaves e rotação