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.
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_pedidoalimentareceita_mensal.mêsatravésDATA_TRUNC, epedidos.quantidadealimentareceita_mensal.totalatravésSOMA. - Linhagem indireta — colunas que nunca chegam à saída, mas a moldam:
clientes.regiãofiltra as linhas epedidos.id_do_clienteunido aclientes.iddecide quais linhas correspondem. Alterar comoregiãoestá populado e cada número emreceita mensalmudanças, emboraregiãoNã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 tabela | linhagem em nível de coluna | |
|---|---|---|
| O que ele registra | receita mensal é construído a partir de pedidos e clientes | receita_mensal.total = SOMA(pedidos.quantidade), filtrado por clientes.região, ingressou em id_do_cliente = id |
| Análise de impacto | Aproximado: 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ípica | Metadados do orquestrador de tarefas, registros de consultas | Analisando 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.
| Abordagem | Como funciona | Forte em | Fraco em |
|---|---|---|---|
| Análise estática de SQL | Analise 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 consultas | Observe 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 manual | Os 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.