DEV Community

Cover image for Auditoria massiva com Lineage Tables do UC no Databricks
Airton Lira junior
Airton Lira junior

Posted on

Auditoria massiva com Lineage Tables do UC no Databricks

Explorando as Lineage Tables do Unity Catalog no Databricks 🚀

As Lineage Tables do Unity Catalog são uma das funcionalidades mais aguardadas pelos engenheiros de dados e analistas que utilizam o Databricks como plataforma de análise e processamento. Neste artigo, exploraremos as recentes atualizações disponíveis no repositório oficial do Databricks Brasil no GitHub, abordando como essas melhorias impactam o gerenciamento e rastreamento de metadados em pipelines de dados.

O que são Lineage Tables? 🔍

Lineage Tables são estruturas que registram o fluxo de dados entre tabelas, visualizações e outros objetos em um ambiente de dados. Elas fornecem informações valiosas sobre:

  • Origem e destino dos dados: permitindo entender de onde os dados vêm e para onde estão indo.
  • Dependências: identificando quais tabelas ou processos podem ser afetados por alterações.
  • Auditoria e conformidade: facilitando o rastreamento de alterações para fins de governança.

Com as Lineage Tables, você pode visualizar graficamente ou consultar diretamente a trajetória completa de um dado, desde sua origem até os relatórios ou dashboards finais.

Por que utilizar as Lineage Tables no Unity Catalog? 💡

O Unity Catalog é a solução de governança de dados do Databricks, e as Lineage Tables tornam essa solução ainda mais robusta. Entre os principais benefícios estão:

  1. Governança centralizada: Todas as informações de lineage são integradas ao Unity Catalog, garantindo uma gestão única e centralizada.
  2. Melhoria na colaboração: Times podem rastrear e documentar processos complexos com mais facilidade.
  3. Detecção de impactos: Ao planejar mudanças em pipelines, as Lineage Tables ajudam a prever quais partes do sistema serão afetadas.

Atualizações recentes 📦

As últimas atualizações disponíveis no repositório Databricks-BR introduziram:

  • Novas integrações: Suporte para mais fontes e destinos de dados.
  • Queries otimizadas: Melhorias no desempenho das consultas relacionadas às Lineage Tables.
  • Documentação aprimorada: Incluindo exemplos práticos e casos de uso detalhados.

Essas melhorias facilitam a adoção da funcionalidade e aumentam sua eficiência operacional.

Queries útéis para Lineage Tables 🧑‍💻

Aqui estão algumas queries práticas para explorar os recursos das Lineage Tables:

1. Qual foi o comando SQL executado em uma tabela específica?

SELECT 
    l.source_table_full_name,
    l.entity_type,
    q.statement_text,
    q.executed_by,
    q.end_time
FROM system.access.table_lineage l
JOIN system.query.history q
    ON l.entity_run_id = q.statement_id
WHERE source_table_full_name = '<nome_da_tabela>';
Enter fullscreen mode Exit fullscreen mode

2. Quais são as tabelas menos acessadas nos últimos 90 dias?

WITH used_tables AS (
    SELECT 
        source_table_catalog,
        source_table_schema,
        source_table_name,
        COUNT(DISTINCT created_by) AS downstream_users,
        COUNT(*) AS downstream_dependents
    FROM system.access.table_lineage
    WHERE event_time >= DATE_ADD(NOW(), -90)
    GROUP BY source_table_catalog, source_table_schema, source_table_name
)
SELECT 
    t.table_catalog,
    t.table_schema,
    t.table_name,
    t.table_type,
    t.table_owner,
    t.comment AS table_comment,
    t.created AS table_created_at,
    t.last_altered AS table_last_update_at
FROM system.information_schema.tables t
LEFT JOIN used_tables ut 
    ON ut.source_table_catalog = t.table_catalog 
    AND ut.source_table_schema = t.table_schema 
    AND ut.source_table_name = t.table_name
WHERE ut.downstream_dependents IS NULL;
Enter fullscreen mode Exit fullscreen mode

3. Qual a linhagem de uma tabela específica?

SELECT DISTINCT target_table_full_name
FROM system.access.table_lineage
WHERE source_table_full_name = '<nome_da_tabela>';
Enter fullscreen mode Exit fullscreen mode

4. Quem mais acessa uma tabela específica?

SELECT user_identity.email, COUNT(*) AS qnt_acessos
FROM system.access.audit
WHERE request_params.table_full_name = '<nome_da_tabela>'
GROUP BY user_identity.email
ORDER BY qnt_acessos DESC;
Enter fullscreen mode Exit fullscreen mode

5. Quais são as tabelas mais populares (mais acessadas)?

SELECT 
    access_table, 
    COUNT(access_table) AS qtde_acesso
FROM (
    SELECT COALESCE(request_params.full_name_arg, 'Non-specific') AS access_table
    FROM system.access.audit
    WHERE action_name = 'getTable'
)
WHERE access_table NOT LIKE '__databricks%'
GROUP BY access_table
ORDER BY qtde_acesso DESC
LIMIT 20;
Enter fullscreen mode Exit fullscreen mode

Como começar? 🛠️

Para utilizar as Lineage Tables no Unity Catalog, siga estes passos:

  1. Habilite o Unity Catalog no seu workspace. Certifique-se de que o Unity Catalog está configurado corretamente no seu ambiente.
  2. Consulte a documentação oficial. Verifique os exemplos e casos de uso no GitHub do Databricks-BR.
  3. Teste em um ambiente controlado. Realize experimentos com pequenos volumes de dados antes de aplicar em produção.

Conclusão ✨

As Lineage Tables do Unity Catalog são uma ferramenta poderosa para gerenciar dados de maneira eficiente e segura no Databricks. Com as melhorias recentes, a funcionalidade está mais acessível e prática para engenheiros de dados e analistas. Explore o repositório do Databricks-BR no GitHub e comece a integrar essa funcionalidade em seus projetos!


Gostou do conteúdo? 💬 Compartilhe suas experiências com Lineage Tables nos comentários e conecte-se comigo no LinkedIn!

Top comments (0)