Databricks Data Lineage: Linhagem em nível de coluna para Spark SQL e Delta

Linhagem de dados do Databricks é o mapa em nível de coluna de como os dados fluem pelo seu código Spark SQL e Delta Lake: quais colunas de origem alimentam cada tabela de destino em suas camadas bronze, prata e ouro, e quais transformações — junções, agregações, FUSÃO A lógica — acontece ao longo do processo. O Unity Catalog captura automaticamente a linhagem das cargas de trabalho que passam por ele; Gudu SQLFlow Abrange tudo o mais analisando o próprio SQL, o que o torna a ferramenta ideal para migrações para o Databricks, SQL executado fora do Unity Catalog e ambientes que abrangem o Databricks e outras plataformas.

Experimente em 30 segundos: Cole um Databricks MESCLAR EM ou consulta de caderno no Visualizador de linhagem SQLFlow gratuitoSelecione o dialeto Databricks e obtenha imediatamente o diagrama de linhagem em nível de coluna. Não é necessário acesso a cluster nem a espaço de trabalho.

Quando você precisa de algo além da linhagem do Catálogo da Unity?

O Unity Catalog é realmente muito bom no que faz: para consultas e tarefas executadas por meio dele, o Databricks captura a linhagem automaticamente, sem a necessidade de ferramentas adicionais. Se toda a sua infraestrutura reside em uma única conta do Databricks e todas as cargas de trabalho são executadas pelo Unity Catalog, comece por lá.

A lacuna é estrutural, não um bug: a linhagem capturada em tempo de execução só existe para o código que já foi executado no ambiente que realiza a captura. Isso deixa quatro situações em que as equipes recorrem a uma abordagem de análise sintática de SQL:

  • Antes da execução do código no Databricks. Você está migrando do Oracle, Teradata ou SQL Server e precisa do gráfico de dependências do SQL legado — e do SQL reescrito do Databricks — antes que qualquer coisa seja executada em produção.
  • SQL que nunca interage com o Catálogo do Unity. SQL de notebooks exportado para arquivos, scripts em um repositório Git, SQL gerado por agendadores externos ou ferramentas ETL, código em espaços de trabalho ainda não atualizados para o Catálogo Unity.
  • Propriedades multiplataforma. Pipelines que começam no SQL Server, se transformam no Databricks e chegam ao Snowflake precisam de um único grafo de linhagem que abranja os três. O SQLFlow fornece analisadores sintáticos específicos para cada dialeto em 39 bancos de dados — Databricks e Spark SQL entre eles — portanto, toda a cadeia é analisada com um único mecanismo.
  • Linhagem em um catálogo que você já utiliza. Se sua organização padroniza o uso do DataHub, Microsoft Purview ou OpenMetadata em vez da interface do Databricks, você precisa de uma linhagem de dados que seja exportada para essas plataformas. O SQLFlow inclui adaptadores de exportação para todas as três.

As duas abordagens são complementares. O Unity Catalog informa o que foi executado; a análise estática de SQL informa o que o código faz — incluindo o código que ainda não foi executado.

Como o SQLFlow analisa o SQL do Databricks

Gudu SQLFlow é um automatizado Ferramenta de linhagem de dados SQL Baseado no General SQL Parser, um front-end de compilador SQL comercial desenvolvido desde meados dos anos 2000 e validado com aproximadamente 13.600 conjuntos de testes por dialeto, o Spark SQL inclui um analisador sintático dedicado ao dialeto Databricks da família Spark SQL — e não uma gramática ANSI genérica —, portanto, as construções específicas do Databricks são analisadas como sintaxe de primeira classe, em vez de aproximadas.

A análise é inteiramente estática. O SQLFlow lê o texto SQL e, opcionalmente, os metadados do esquema; ele nunca lê as linhas das suas tabelas Delta, e com o Edição On-Premise O próprio texto SQL nunca sai da sua rede: ele é implantado em Docker ou Kubernetes e executado em um ambiente isolado da internet. Para cada instrução, o analisador sintático constrói um modelo semântico completo, resolvendo cada referência de coluna por meio de CTEs, subconsultas, visualizações e SELECIONE * Após a expansão, o analisador de fluxo de dados extrai as relações de origem para destino com granularidade de coluna.

Você pode fornecer SQL de qualquer forma que ele exista em seu ambiente: instruções coladas, arquivos carregados, metadados de banco de dados via JDBC ou um manifesto dbt para projetos dbt direcionados ao Databricks. A saída é um diagrama interativo e explorável, além de dados de linhagem estruturados em formato JSON, CSV, PNG ou uma resposta de API REST.

Exemplo: linhagem em nível de coluna por meio de uma mesclagem Delta

MESCLAR EM é a ferramenta principal dos pipelines do Delta Lake, e uma instrução onde a linhagem em nível de tabela é quase inútil, porque uma única operação de merge lê, compara, atualiza e insere em uma única execução. Considere um upsert na camada de ouro:

MERGE INTO gold.customer_ltv AS t USING ( SELECT o.customer_id, SUM(o.amount) AS lifetime_value, MAX(o.order_ts) AS last_order_ts FROM silver.orders o WHERE o.status = 'completed' GROUP BY o.customer_id ) AS s ON t.customer_id = s.customer_id WHEN MATCHED THEN UPDATE SET t.lifetime_value = s.lifetime_value, t.last_order_ts = s.last_order_ts WHEN NOT MATCHED THEN INSERT (customer_id, lifetime_value, last_order_ts) VALUES (s.customer_id, s.lifetime_value, s.last_order_ts);

O SQLFlow resolve isso em relações precisas ao nível da coluna. valor vitalício do cliente gold deriva de quantidade de pedidos de prata através SOMA(), através de ambos os ATUALIZAR e o INSERIR filial. último_pedido_ts deriva de silver.orders.order_ts através MÁXIMO()O alias da subconsulta e é resolvido; a linhagem aponta para a tabela de origem real, não para a intermediária.

Tão importante quanto isso é o que o SQLFlow classifica como linhagem indireta: silver.orders.status nunca acerta o alvo, mas o ONDE O filtro molda cada valor mesclado, e id_do_cliente conduz ambos os AGRUPAR POR e a condição de correspondência. O SQLFlow modela o fluxo de dados direto e a influência indireta como tipos de relacionamento distintos e alternáveis separadamente. A maioria das ferramentas concorrentes não faz essa distinção, e é exatamente disso que você precisa quando alguém pergunta "alterar o status "Quebra de vocabulário, valor vitalício do cliente?" A resposta honesta é sim, e somente uma linhagem com foco no impacto demonstra isso.

Migrando para (ou de) Databricks

A migração é um dos motivos mais comuns pelos quais as equipes analisam o SQL do Databricks fora da plataforma. O Unity Catalog não pode ajudar no planejamento de uma migração, pois a linhagem necessária descreve um código que nunca foi executado no Databricks. Um fluxo de trabalho baseado em analisador sintático, por outro lado, permite isso:

  1. Mapeie a propriedade de origem. Execute o SQL legado — Oracle, Teradata, SQL Server, incluindo procedimentos armazenados e o SQL dinâmico dentro deles — por meio do SQLFlow para obter o verdadeiro gráfico de dependências. Isso indica o que migrar primeiro e o que é código morto.
  2. Valide a reescrita. Analise o SQL reescrito do Databricks com o analisador de dialetos do Databricks e compare os gráficos de linhagem. Se as fontes de uma coluna de destino mudaram entre a versão do Teradata e a versão Delta, você encontrou um bug de reescrita antes do lançamento.
  3. Verifique se não há nada órfão. Após a migração, execute uma varredura em lote de ambos os ambientes — o SQLFlow lida com ambientes de mais de 100 bancos de dados e mais de um milhão de colunas, com varreduras incrementais em um repositório de linhagem persistente.

A mesma capacidade de compatibilidade entre dialetos funciona ao contrário ou lateralmente: se parte do seu data warehouse estiver migrando para o Snowflake, Fluxo de trabalho de linhagem Snowflake Utilizam o mesmo motor gráfico, portanto as duas plataformas acabam em um gráfico comparável.

Exportando a linhagem de dados do Databricks para o DataHub, Purview ou OpenMetadata.

Plataformas com foco em catálogo são bons sistemas de registro para metadados, e muitas organizações exigem um sistema desse tipo em todas as plataformas de dados. O SQLFlow atua como o mecanismo de linhagem subjacente: ele analisa o SQL, calcula a linhagem em nível de coluna e a linhagem indireta, e envia o resultado por meio de adaptadores de exportação dedicados para DataHub, Microsoft Purview e OpenMetadataExportações em JSON e CSV, além de uma API REST, atendem a qualquer necessidade de personalização.

Esta é também a resposta prática para o problema multiplataforma: a linhagem produzida por dois extratores diferentes com dois modelos diferentes é difícil de integrar em um único grafo. Um único analisador sintático que produza um grafo para todos os 39 dialetos, exportado para o catálogo que você já utiliza, evita esse problema.

Formas de executá-lo

OpçãoIdeal paraNotas
Nuvem SQLFlowTestando hoje em um banco de dados SQL real do Databricks.Plano gratuito no navegador; versão premium por $49,99/mês.
SQLFlow no localAmbientes regulamentados; SQL deve permanecer interno.Docker/Kubernetes, compatível com isolamento de rede (air-gapped); $500/mês ou $4.800 (pagamento único) por tipo de banco de dados, instalável em dois servidores.
API REST / CLI / Biblioteca JavaAutomatizando a linhagem em CI ou em sua própria plataforma.Mesmo mecanismo, sem interface gráfica; widget JavaScript incorporável com uma API de mais de 30 métodos para renderizar diagramas em seu produto.

Perguntas frequentes

O SQLFlow substitui a linhagem do Unity Catalog?

Não, ele o complementa. O Unity Catalog captura automaticamente a linhagem das cargas de trabalho que passam por ele. O SQLFlow analisa o SQL estaticamente, abrangendo o código antes de sua execução (migrações), o SQL executado fora do Unity Catalog e ambientes que abrangem o Databricks e outras plataformas, exportando o resultado para o DataHub, Purview ou OpenMetadata.

O SQLFlow precisa acessar meu espaço de trabalho ou meus dados do Databricks?

Não. O SQLFlow realiza análise estática do código SQL, opcionalmente usando metadados de esquema para resolver referências. Ele nunca lê linhas em suas tabelas Delta. Na edição On-Premise, até mesmo o texto SQL permanece dentro da sua rede.

O SQLFlow consegue rastrear a linhagem através de instruções MERGE INTO?

Sim. Para um Delta MESCLAR EMO SQLFlow resolve o USANDO A subconsulta mapeia cada coluna de destino para suas colunas de origem reais por meio de ambas as... ATUALIZAR e INSERIR ramifica e classifica as condições de correspondência e os filtros como linhagem indireta (de impacto).

O Databricks é um dialeto distinto do Spark SQL no SQLFlow?

Sim. Os 39 dialetos suportados pelo SQLFlow listam Databricks e Spark SQL separadamente, cada um com seu próprio analisador sintático na família Spark SQL. Selecione Databricks para SQL escrito em Databricks; também existe um analisador sintático dedicado. Página de linhagem do Spark SQL para cargas de trabalho Spark de código aberto.

Funciona com projetos dbt no Databricks?

Sim. Importe o manifesto dbt e o SQLFlow produzirá a linhagem em nível de coluna em seus modelos, usando o dialeto Databricks para analisar o SQL compilado.

Qual o custo do SQLFlow?

O SQLFlow Cloud é gratuito a partir do início; a versão premium custa £49,99/mês. A versão On-Premise custa £500/mês ou £4.800 (pagamento único) por tipo de banco de dados selecionado. Mais detalhes estão disponíveis em [link para o site]. página de preços.

Agora você pode rastrear sua linhagem do Databricks.

Cole uma consulta Spark SQL ou um Delta MERGE no visualizador gratuito ou fale conosco sobre a possibilidade de analisar todo o seu ambiente de migração.