Logo

dev-resources.site

for different kinds of informations.

Auditoria massiva com Lineage Tables do UC no Databricks

Published at
12/10/2024
Categories
databricks
unitycatalog
pyspark
spark
Author
airton_lirajunior_2ddebd
Author
24 person written this
airton_lirajunior_2ddebd
open
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!

spark Article's
30 articles in total
Favicon
Like IDE for SparkSQL: Support Pycharm! SparkSQLHelper v2025.1.1 released
Favicon
Enhancing Data Security with Spark: A Guide to Column-Level Encryption - Part 2
Favicon
Time-saver: This IDEA plugin can help you write SparkSQL faster
Favicon
How to Migrate Massive Data in Record Time—Without a Single Minute of Downtime 🕑
Favicon
Why Is Spark Slow??
Favicon
Like IDE for SparkSQL: SparkSQLHelper v2024.1.4 released
Favicon
Mastering Dynamic Allocation in Apache Spark: A Practical Guide with Real-World Insights
Favicon
Auditoria massiva com Lineage Tables do UC no Databricks
Favicon
Platform to practice PySpark Questions
Favicon
Exploring Apache Spark:
Favicon
Big Data
Favicon
Dynamic Allocation Issues On Spark 2.4.8 (Possible Issue with External Shuffle Service?)
Favicon
Entendendo e aplicando estratégias de tunning Apache Spark
Favicon
[API Databricks como serviço interno] dbutils — notebook.run, widgets.getArgument, widgets.text e notebook_params
Favicon
Análise de dados de tráfego aéreo em tempo real com Spark Structured Streaming e Apache Kafka
Favicon
My journey learning Apache Spark
Favicon
Integrating Elasticsearch with Spark
Favicon
Advanced Deduplication Using Apache Spark: A Guide for Machine Learning Pipelines
Favicon
Journey Through Spark SQL
Favicon
Choosing the Right Real-Time Stream Processing Framework
Favicon
Top 5 Things You Should Know About Spark
Favicon
PySpark optimization techniques
Favicon
End-to-End Realtime Streaming Data Engineering Project
Favicon
Machine Learning with Spark and Groovy
Favicon
Hadoop/Spark is too heavy, esProc SPL is light
Favicon
Leveraging PySpark.Pandas for Efficient Data Pipelines
Favicon
Databricks - Variant Type Analysis
Favicon
Comprehensive Guide to Schema Inference with MongoDB Spark Connector in PySpark
Favicon
Troubleshooting Kafka Connectivity with spark streaming
Favicon
Apache Spark 101

Featured ones: