O que é linhagem de dados? Definição, exemplos e como funciona.

O que é linhagem de dados?? Linhagem de dados É o caminho documentado que os dados percorrem desde suas fontes originais até seus destinos finais, incluindo cada tabela, visualização, tarefa e transformação pela qual passam ao longo do processo. Ele responde a duas perguntas que toda equipe de dados faz: “De onde veio esse valor?” (proveniência) e “O que depende disso rio abaixo?” (análise de impacto). Em sistemas baseados em SQL, a linhagem geralmente é extraída automaticamente por meio da análise do código SQL que move e remodela os dados.

39dialetos SQL, cada um com um analisador sintático dedicado.
Nível da colunagranularidade, não apenas em nível de tabela
Direto + indiretorelações de linhagem
Estáticoanálise, nunca lê dados da tabela

Esta página apresenta uma definição prática para profissionais da área: o que a linhagem realmente registra, a diferença entre granularidade em nível de tabela e em nível de coluna, relacionamentos diretos versus indiretos, as três maneiras pelas quais a linhagem é construída e quem realmente precisa dela. Os exemplos utilizam SQL, pois na maioria dos data warehouses reside a lógica de transformação em SQL.

Veja a linhagem em vez de ler sobre ela: Cole qualquer consulta SQL no Visualizador de linhagem SQLFlow gratuito e obtenha um diagrama de linhagem interativo em nível de coluna em segundos.

As duas questões que a linhagem responde: proveniência e análise de impacto.

A linhagem de dados é um gráfico lido em duas direções. Leia-o. a montante E assim se obtém a proveniência: partindo de um número em um relatório, percorre-se cada visualização, junção e cálculo até chegar às colunas de origem do dado. Essa é a direção que auditores, reguladores e qualquer pessoa que esteja depurando um número incorreto consideram importante.

Leia a jusante E assim você obtém uma análise de impacto: começando por uma coluna que você deseja renomear, alterar o tipo ou excluir, enumere todas as tabelas, visualizações, procedimentos e relatórios que seriam afetados. Essa é a direção que os engenheiros consideram antes de uma alteração de esquema ou migração, quando a alternativa é vasculhar milhares de scripts na esperança de que algo dê certo.

Os termos às vezes são usados de forma imprecisa. Estritamente falando, procedência é o traço reverso, análise de impacto é o traço direto, e linhagem de dados é o grafo de dependência subjacente que torna possíveis ambas as travessias.

Um exemplo concreto

Considere um extrato de armazém de rotina:

INSERT INTO monthly_revenue (month, total) SELECT DATE_TRUNC('month', o.order_date) AS month, SUM(o.amount) AS total FROM orders o JOIN customers c ON o.customer_id = c.id WHERE c.region = 'EMEA' GROUP BY DATE_TRUNC('month', o.order_date);

A linhagem extraída dessa única declaração já apresenta dois tipos distintos de relacionamento:

  • Linhagem direta — os dados fluem efetivamente para a saída: pedidos.data_do_pedido alimenta receita_mensal.mês através DATA_TRUNC, e pedidos.quantidade alimenta receita_mensal.total através SOMA.
  • Linhagem indireta — colunas que nunca chegam à saída, mas a moldam: clientes.região filtra as linhas e pedidos.id_do_cliente unido a clientes.id decide quais linhas correspondem. Alterar como região está populado e cada número em receita mensal mudanças, embora região Não aparece em nenhum lugar no resultado.

Um pipeline real consiste em milhares de instruções como esta, intercaladas em views, stored procedures e modelos dbt. As ferramentas de linhagem existem porque nenhum ser humano consegue manter esse grafo mentalmente. Para mais exemplos práticos, incluindo linhagem de múltiplos saltos e stored procedures, consulte nosso [link para o artigo/recurso]. exemplos de linhagem de dados passo a passo.

Linhagem em nível de tabela versus linhagem em nível de coluna

A linhagem vem em dois níveis de granularidade, e a diferença entre eles determina o que você realmente pode fazer com ela.

linhagem em nível de tabelalinhagem em nível de coluna
O que ele registrareceita mensal é construído a partir de pedidos e clientesreceita_mensal.total = SOMA(pedidos.quantidade), filtrado por clientes.região, ingressou em id_do_cliente = id
Análise de impactoAproximado: sinaliza todos os consumidores da tabela, incluindo aqueles que a coluna alterada nunca toca.Preciso: sinaliza apenas os consumidores que a coluna realmente alimenta.
Respostas da auditoria“Este relatório utiliza estas tabelas”“Este valor é calculado exatamente a partir destes campos de origem, através destas transformações.”
Fonte típicaMetadados do orquestrador de tarefas, registros de consultasAnalisando o próprio SQL

A coleta de dados de linhagem em nível de tabela é barata e útil para um primeiro mapeamento de um pipeline. Mas a maioria das perguntas reais são sobre colunas: quais relatórios usam... e-mail, cujos campos de origem alimentam esse valor regulamentado, é qualquer coisa a jusante que leia a coluna que queremos descartar. Isso requer a resolução de cada coluna de saída por meio de junções, subconsultas, CTEs, visualizações e SELECIONE * Expansão: trabalho de análise sintática, não extração de logs. Os mecanismos são abordados em detalhes em nosso guia para linhagem de dados em nível de coluna.

Como a linhagem de dados é construída: três abordagens

Todas as ferramentas de genealogia disponíveis no mercado utilizam alguma combinação dessas três técnicas.

AbordagemComo funcionaForte emFraco em
Análise estática de SQLAnalise o código SQL (views, procedures, scripts ETL, modelos dbt) e derive o grafo de dependências a partir da sintaxe e da semântica.Precisão em nível de coluna; abrange todos os caminhos de código, incluindo aqueles que não foram executados recentemente; não requer acesso aos dados.Necessita de um analisador sintático que compreenda genuinamente cada dialeto SQL; transformações não-SQL (Python, Spark DataFrames) estão fora do escopo.
Tempo de execução / baseado em log de consultasObserve o que foi efetivamente executado — histórico de consultas ao data warehouse, eventos do orquestrador (o modelo OpenLineage/Marquez)Captura de execuções reais em trabalhos heterogêneos, incluindo trabalhos não-SQL; verdade fundamental sobre "o que foi executado e quando".Exibe apenas os caminhos executados durante o período de observação; a granularidade geralmente é em nível de tabela; os logs ainda contêm SQL que precisa ser analisado para obter detalhes das colunas.
Documentação manualOs analistas registram os mapeamentos em planilhas ou em um catálogo manualmente.Contexto e definições de negócios que nenhum analisador sintático consegue inferir.Obsoleto no dia seguinte à sua escrita; propenso a erros em qualquer escala real.

Essas ferramentas são complementares, não rivais: a linhagem de tempo de execução informa o que foi executado, a curadoria manual adiciona significado comercial e a análise estática de SQL fornece o mapa lógico em nível de coluna. Como a maior parte da lógica de transformação do data warehouse é SQL, a análise estática realiza o trabalho mais pesado, e sua qualidade é exatamente a qualidade do seu analisador sintático. Gudu SQLFlow Adota essa abordagem com 39 analisadores sintáticos específicos para dialetos (Snowflake, BigQuery, Oracle, SQL Server, Teradata e mais 34), construídos sobre uma interface de compilador SQL desenvolvida desde meados dos anos 2000 e validada com aproximadamente 13.600 conjuntos de testes por dialeto. Essa abrangência é o que permite lidar com o SQL que quebra analisadores sintáticos mais simples: procedimentos armazenados em PL/SQL e T-SQL do Oracle, SQL dinâmico montado em tempo de execução, tabelas temporárias e pilhas de visualização.

Para que serve a linhagem de dados?

Quatro casos de uso são responsáveis por quase toda a adoção de linhagens na prática:

  • Conformidade regulamentar. A norma BCBS 239 exige que os bancos demonstrem como os dados de risco são agregados a partir dos dados de origem; as obrigações de mapeamento de dados do GDPR exigem o conhecimento de quais sistemas e tabelas derivadas recebem os dados pessoais. A proveniência em nível de coluna é o artefato que satisfaz ambos os requisitos: “estes campos de origem exatos, por meio destas transformações”.
  • Governança de dados. Catálogos e glossários ficam desatualizados quando a linhagem é mantida manualmente. A extração automática de linhagem mantém o mapa de dependências atualizado conforme o código muda e pode alimentar diretamente plataformas de catálogo; o SQLFlow, por exemplo, fornece adaptadores de exportação para DataHub, Microsoft Purview e OpenMetadata.
  • Depuração e análise da causa raiz. Quando um painel exibe um número incorreto, a linhagem transforma "pesquisar todos os scripts que mencionam esta tabela" em "percorrer o caminho inverso a partir desta coluna". Horas em vez de dias.
  • Migração e modernização. Antes de migrar do Oracle ou Teradata para o Snowflake, BigQuery ou Databricks, o gráfico de dependências mostra o que deve ser migrado em conjunto, em que ordem e quais objetos não são mais lidos e podem ser descartados em vez de migrados.

Uma heurística útil: Se sua equipe já atrasou uma alteração de esquema porque ninguém tinha certeza do que ela quebraria, vocês já precisam de linhagem de dados — só que estão calculando isso manualmente, lentamente e com erros.

Analise seu próprio SQL, não apenas o exemplo.

Cole uma consulta e obtenha um diagrama de linhagem interativo em nível de coluna em segundos.

Perguntas frequentes

O que é linhagem de dados em termos simples?

É o mapa da origem e do destino dos seus dados: quais fontes alimentam cada tabela ou relatório e quais transformações ocorrem no processo. Pense nisso como um gráfico de dependência de dados, navegável para trás (proveniência) e para frente (análise de impacto).

Qual a diferença entre linhagem de dados e proveniência de dados?

A proveniência é o rastreamento reverso de uma saída até sua origem. A linhagem é o grafo de dependência completo, que dá suporte à proveniência em uma direção e à análise de impacto na outra. No uso cotidiano, os termos se sobrepõem, mas a distinção entre grafo e percurso é a mais precisa.

O que é linhagem de dados indireta?

A linhagem indireta abrange colunas que influenciam um resultado sem aparecerem nele — colunas usadas em ONDE filtros, JUNTAR condições e AGRUPAR POR cláusulas. Elas alteram todos os valores de saída, portanto, a análise de impacto que as ignora fica incompleta. O SQLFlow modela a linhagem indireta como um tipo de relacionamento separado e alternável; a maioria das ferramentas de linhagem não faz essa distinção.

A rastreabilidade dos dados é um requisito para a conformidade com o GDPR ou com o BCBS 239?

Nenhuma das estruturas menciona "linhagem" como uma tecnologia obrigatória, mas ambas exigem o que a linhagem proporciona: a BCBS 239 exige que os bancos demonstrem como os dados de risco são agregados a partir de suas fontes, e o mapeamento de dados do GDPR exige saber por onde os dados pessoais fluem. A linhagem em nível de coluna é a maneira padrão de produzir essa evidência em larga escala.

Como criar uma linhagem de dados automaticamente?

Alimente seu SQL com uma ferramenta de análise estática de linhagem. Com o SQLFlow, você pode colar SQL, carregar arquivos, conectar-se a um banco de dados via JDBC, importar um manifesto dbt ou ingerir o histórico de consultas do Snowflake ou logs de consultas do Redshift; ele analisa o código e produz diagramas interativos em nível de coluna, além de exportações em JSON/CSV e uma API REST. Implantações corporativas realizam varreduras em lote em ambientes com mais de 100 bancos de dados e mais de um milhão de colunas.

A criação de uma árvore genealógica requer acesso aos meus dados reais?

Não com análise estática. A análise sintática de SQL requer o código e, opcionalmente, os metadados do esquema (definições de tabelas e colunas) — nunca as linhas das suas tabelas. A edição On-Premise do SQLFlow mantém o próprio texto SQL dentro da sua rede, razão pela qual é adequada para bancos e outros ambientes regulamentados.

Veja a linhagem oculta em seu SQL.

Cole uma consulta no visualizador gratuito e obtenha imediatamente um diagrama de linhagem em nível de coluna ou explore a versão completa. Ferramenta de linhagem de dados SQL para digitalização de toda a propriedade.