Data

12 dez, 2024

Auditoria massiva com Lineage Tables do UC no Databricks

Publicidade

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? 🔍

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, elas 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>';

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;

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>';

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;

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;

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!

LEIA TAMBÉM