Linhagem de dados do Azure SQL É um mapa coluna por coluna de como os dados fluem pelo código T-SQL em execução no Banco de Dados SQL do Azure, na Instância Gerenciada de SQL do Azure e no Synapse SQL: quais colunas de origem alimentam cada coluna de destino e por meio de quais exibições, procedimentos armazenados, junções e funções. A maneira mais precisa de criá-lo é analisando o próprio T-SQL. Gudu SQLFlow Faz exatamente isso com um analisador de dialeto SQL do Azure dedicado e pode enviar a linhagem resultante em nível de coluna para o Microsoft Purview, para que apareça junto com o restante do seu ambiente Azure.
Experimente em 30 segundos: Cole qualquer consulta SQL do Azure ou procedimento armazenado no Visualizador de linhagem SQLFlow gratuitoSelecione o dialeto Azure SQL e obtenha um diagrama de linhagem interativo em nível de coluna. A edição Cloud possui um nível gratuito.
Por que a linhagem de dados do Azure SQL é um problema de análise sintática?
No Azure, a lógica de transformação que realmente molda seus dados raramente reside em uma definição de pipeline. Ela reside em T-SQL: visualizações sobrepostas a visualizações, procedimentos armazenados chamados a partir de atividades do Azure Data Factory, FUSÃO Instruções, tabelas temporárias e SQL dinâmico montados em tempo de execução. Uma visão de linhagem construída apenas a partir de metadados do pipeline vê as caixas, mas não o que acontece dentro delas.
Saber que relatório.receita_mensal é calculado como SOMA(pedidos.quantidade) filtrado por pedidos.status, algo precisa ler o SQL da mesma forma que o mecanismo do banco de dados: resolver cada referência de coluna por meio de CTEs, subconsultas, visualizações e SELECIONE * A expansão consiste em rastrear o fluxo de dados das colunas de origem para as colunas de destino. Isso é análise estática de SQL, e é para isso que o SQLFlow foi desenvolvido. Ele lê apenas o código SQL e os metadados do esquema; nunca altera as linhas das suas tabelas.
Onde termina o escopo do Microsoft Purview e como a análise sintática preenche essa lacuna.
O Microsoft Purview é realmente bom no que uma plataforma focada em catálogo deve fazer: escanear e classificar ativos em todo o ambiente Azure, mapear dados confidenciais e exibir a linhagem para as ferramentas de movimentação de dados com as quais se integra, como o Azure Data Factory e os pipelines do Synapse. Se você utiliza o Azure em qualquer escala, o Purview é uma opção razoável para armazenar a linhagem de dados. exibido.
A lacuna reside em como a linhagem é estabelecida. calculadoA linhagem SQL automatizada do Purview apresenta lacunas em T-SQL complexo: procedimentos armazenados com fluxo de controle, tabelas temporárias de preparação e SQL dinâmico construído com sp_executesql São precisamente os locais onde a cobertura automatizada se esgota e as linhas de base desaparecem. São também nesses locais que ocorrem as transformações de maior risco.
A divisão de trabalho que funciona: o SQLFlow analisa o T-SQL e calcula a linhagem em nível de coluna, incluindo procedimentos e SQL dinâmico, e então exporta os dados por meio de seu adaptador Microsoft Purview. O SQLFlow realiza os cálculos; o Purview cuida da exibição em toda a propriedade. Você mantém um único catálogo, e as áreas com grande volume de SQL deixam de estar em branco.
O que o SQLFlow extrai do código do Azure SQL
O SQLFlow fornece 39 analisadores sintáticos específicos para cada dialeto, em vez de uma gramática ANSI genérica, e o Azure SQL é um deles, pertencente à família T-SQL juntamente com o SQL Server. Os pools de SQL dedicados do Synapse também utilizam T-SQL, portanto, a mesma análise se aplica aos scripts SQL do Synapse. Para código Azure SQL, o SQLFlow gera:
- Linhagem em nível de coluna: Para cada coluna de saída, são apresentadas as colunas de origem exatas que a alimentam, bem como as funções, conversões, subconsultas, junções e operadores de conjunto intermediários. As referências são resolvidas por meio de CTEs, views, subconsultas e expansão de asteriscos.
- Linhagem direta versus indireta: uma coluna usada em um
ONDEcláusula,JUNTARcondição, ouAGRUPAR PORNunca aparece na saída, mas ainda assim a influencia. O SQLFlow modela isso como um tipo de relacionamento separado e alternável, de modo que a análise de impacto detecta colunas de filtro que a maioria das ferramentas de linhagem ignora. - Linhagem do procedimento armazenado: Um analisador sintático procedural dedicado para a família T-SQL rastreia o fluxo de dados através dos parâmetros do procedimento e tabelas temporárias, e renderiza um gráfico de chamadas interativo mostrando quais procedimentos invocam quais outros.
- Resolução dinâmica de SQL: SQL montado dentro de um procedimento e executado com
EXECUTIVOousp_executesqlé resolvido e analisado em vez de ser ignorado. Este é o ponto cego mais comum na análise automatizada de linhagens. - Diagramas ER da DDL: Relações de chave primária e chave estrangeira inferidas a partir das definições da sua tabela, representadas em um diagrama de entidade-relacionamento.
A entrada pode ser SQL colado, arquivos de script carregados ou metadados em tempo real obtidos via JDBC, permitindo que você direcione o SQLFlow para um banco de dados SQL do Azure e deixe que ele colete automaticamente as definições de visualização e procedimento.
Exemplo: um procedimento T-SQL com SQL dinâmico
Este é o tipo de procedimento que impede o funcionamento de analisadores de linhagem automatizados. Ele armazena dados em uma tabela temporária e, em seguida, constrói a tabela final. INSERIR como uma string e a executa:
CREATE PROCEDURE dbo.usp_refresh_regional_sales @region NVARCHAR(50) AS BEGIN SELECT o.customer_id, SUM(o.amount) AS total_amount INTO #staged FROM dbo.orders AS o WHERE o.region = @region GROUP BY o.customer_id; DECLARE @sql NVARCHAR(MAX) = N' INSERT INTO dbo.regional_sales (customer_id, customer_name, total_amount) SELECT s.customer_id, c.customer_name, s.total_amount FROM #staged AS s JOIN dbo.customers AS c ON c.customer_id = s.customer_id;'; EXEC sp_executesql @sql; END
Um scanner que para no limite do procedimento não reporta nada útil: a tabela de destino aparece apenas dentro de uma string literal. O SQLFlow analisa o corpo do procedimento, resolve o SQL dinâmico e segue o fluxo de dados pela tabela temporária, produzindo:
vendas_regionais.valor_total←SOMA(pedidos.quantidade), via#staged.total_amount(linhagem direta).vendas_regionais.nome_do_cliente←clientes.nome_do_cliente(linhagem direta).pedidos.regiãoe as chaves de junçãoclientes.id_do_cliente/pedidos.id_do_clienteSinalizadas como linhagem indireta: elas filtram e conectam o resultado sem aparecer nele.
Renomear pedidos.região E uma visão do mundo baseada em metadados de pipeline diz que nada depende disso. A visão analisada diz que esse procedimento inicia silenciosamente a atualização de uma tabela vazia. Essa é a diferença que a linhagem em nível de coluna faz.
Incorporando a linhagem ao âmbito da Microsoft
As implementações do SQLFlow para empresas incluem adaptadores de exportação para Microsoft Purview, DataHub e OpenMetadata. O fluxo de trabalho para um ambiente Azure é simples: o SQLFlow realiza varreduras em lote nos bancos de dados (ele é escalável para conjuntos de mais de 100 bancos de dados e mais de um milhão de colunas, com varreduras incrementais e um repositório de linhagem persistente), calcula a linhagem em nível de coluna a partir do T-SQL e a publica no Purview. Analistas e administradores continuam trabalhando no catálogo que já utilizam; a linhagem subjacente é de nível de análise sintática, em vez de ser baseada em melhor esforço.
Se preferir criar sua própria integração, a mesma linha de dados está disponível para exportação em JSON ou CSV e por meio de uma API REST.
Opções de implantação para ambientes Azure
| Edição | Ideal para | Como funciona |
|---|---|---|
| Nuvem SQLFlow | Testando em consultas reais hoje | SaaS com versão gratuita; a versão premium custa $49,99/mês. Cole o código T-SQL ou conecte as fontes no navegador. |
| SQLFlow no local | Cargas de trabalho regulamentadas em que o texto SQL deve permanecer dentro da rede. | Docker/Kubernetes em sua própria assinatura do Azure ou data center, isolado da internet, se necessário. $500/mês ou $4.800 (pagamento único) por tipo de banco de dados selecionado, instalável em dois servidores. |
| API REST / Biblioteca Java / CLI | Automatizando a linhagem dentro de CI ou de uma plataforma de dados | O mesmo mecanismo de análise, que pode ser chamado a partir de pipelines e aplicações JVM. |
Independentemente da versão que você utilize, a postura em relação à privacidade é a mesma: o SQLFlow realiza apenas análises estáticas do código SQL e nunca lê os dados das linhas da tabela.
Azure SQL, SQL Server ou outra coisa?
O Azure SQL e o SQL Server local compartilham a família T-SQL, mas são dialetos separados no SQLFlow, cada um com seu próprio analisador sintático. Se sua infraestrutura estiver hospedada em um SQL Server auto-hospedado, o linhagem de dados do SQL Server A página aborda esse aspecto em detalhes; propriedades híbridas podem analisar ambas em um único repositório. E se você ainda estiver comparando abordagens (linhagem nativa do catálogo, linhagem baseada em logs de tempo de execução, analisadores de código aberto), a pesquisa do melhores ferramentas de linhagem de dados Explica onde cada categoria se encaixa e quando a análise sintática SQL é a resposta certa.
Por baixo dos panos, tudo isso funciona com o mecanismo General SQL Parser, desenvolvido comercialmente desde meados dos anos 2000 e validado com aproximadamente 13.600 conjuntos de teste SQL por dialeto. O produto é a profundidade no SQL complexo.
Perguntas frequentes
O SQLFlow é compatível com o Azure Synapse SQL?
Sim. Os pools SQL dedicados do Synapse usam T-SQL, e o analisador de dialetos SQL do Azure do SQLFlow abrange a família T-SQL. Você pode analisar scripts SQL, exibições e procedimentos armazenados do Synapse da mesma forma que o código do Banco de Dados SQL do Azure.
O SQLFlow consegue rastrear a linhagem por meio de SQL dinâmico em procedimentos armazenados?
Sim. SQL montado dentro de um procedimento e executado com EXECUTIVO ou sp_executesql é resolvido e analisado em vez de ignorado, e a linhagem é rastreada por meio de parâmetros de procedimento e tabelas temporárias. O SQLFlow também desenha um gráfico de chamadas de invocações de procedimento para procedimento.
Como a linhagem do SQLFlow entra no âmbito da Microsoft?
Por meio de um adaptador de exportação integrado, disponível em implantações corporativas, o SQLFlow calcula a linhagem em nível de coluna analisando seu T-SQL e, em seguida, publica-a no Purview para que apareça no catálogo junto com as próprias análises do Purview. Saídas em JSON, CSV e API REST estão disponíveis para integrações personalizadas.
O SQLFlow precisa acessar os dados nas minhas tabelas do Azure SQL?
Não. O SQLFlow realiza análise estática do código SQL e, opcionalmente, lê metadados do esquema (definições de tabelas, visualizações e procedimentos) via JDBC. Ele nunca lê linhas. A edição On-Premise mantém até mesmo o texto SQL dentro da sua rede.
O que a linhagem em nível de coluna adiciona em relação à visualização em nível de ativo do Purview?
Precisão. A linhagem em nível de ativo indica que uma tabela alimenta um relatório; a linhagem em nível de coluna indica quais colunas específicas alimentam quais, por meio de quais transformações e, adicionalmente, sinaliza colunas que influenciam os resultados apenas por meio de filtros e junções. Essa é a granularidade que a análise de impacto e as questões de auditoria realmente exigem.
Qual o preço do SQLFlow?
O SQLFlow Cloud é gratuito a partir de um primeiro mês; contas premium custam £49,99/mês. O SQLFlow 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.
Veja agora sua linhagem do Azure SQL.
Cole seu procedimento T-SQL mais complexo no visualizador gratuito ou fale conosco sobre como analisar seu ambiente Azure e exportá-lo para o Purview.