Views no Databricks: Stored, Temporary e Global Temporary Views
- Michel Souza Santana
- 1 de out.
- 5 min de leitura
Na engenharia e análise de dados com Databricks, a eficiência e a organização do código são fundamentais. Entre as diversas ferramentas que a plataforma oferece, as Views se destacam como um recurso poderoso para simplificar consultas, reutilizar lógicas complexas e controlar o acesso aos dados. No entanto, existem diferentes tipos de Views, cada uma com seu propósito e escopo específicos: Stored Views, Temporary Views e Global Temporary Views. Compreender a diferença entre elas é crucial para construir pipelines de dados robustos e otimizados.

Neste artigo, vamos explorar em detalhes cada um desses tipos de Views, com exemplos práticos para ilustrar seus casos de uso e facilitar a compreensão.
O que são Views? Uma Visão Geral
Antes de mergulharmos nas especificidades, é importante entender o conceito central de uma View. De forma simplificada, uma View é uma tabela virtual baseada no resultado de uma consulta SQL. Ela não armazena os dados fisicamente, mas sim a consulta que a define. Toda vez que uma View é acessada, a consulta subjacente é executada, garantindo que os dados retornados estejam sempre atualizados em relação às tabelas de origem.
As principais vantagens de utilizar Views incluem:
Simplificação de Consultas Complexas: Encapsulam lógicas de joins, agregações e filtros, tornando as consultas finais mais limpas e legíveis.
Reutilização de Código: Permitem que a mesma lógica seja aproveitada por múltiplos usuários e notebooks, promovendo a consistência.
Segurança e Controle de Acesso: Podem ser usadas para expor apenas um subconjunto de dados de uma tabela, ocultando colunas sensíveis ou filtrando linhas específicas.
Agora, vamos às particularidades de cada tipo no Databricks.
1. Stored Views (Views Permanentes)
As Stored Views, também conhecidas como Views permanentes, são as mais tradicionais. Elas são registradas no metastore do Databricks (seja o Hive Metastore ou o Unity Catalog) e persistem entre as sessões e clusters. Isso significa que, uma vez criada, uma Stored View estará disponível para qualquer usuário com as devidas permissões, até que seja explicitamente excluída.
Características Principais:
Persistência: Permanecem no metastore após o término da sessão.
Escopo: Acessíveis por diferentes usuários, notebooks e clusters, respeitando as permissões de acesso.
Gerenciamento: São objetos de banco de dados que podem ser gerenciados com comandos CREATE VIEW, ALTER VIEW e DROP VIEW.
Exemplo Prático:
Vamos imaginar um cenário onde temos uma tabela de vendas (vendas_raw) e frequentemente precisamos analisar os dados de vendas consolidados por produto e por dia.
Explicação:
Primeiro, criamos uma Stored View chamada vw_vendas_diarias_produto que encapsula a lógica de agregação.
Exemplo:
CREATE VIEW vw_vendas_diarias_produto AS
SELECT
data_venda,
id_produto,
SUM(valor) AS total_vendido,
COUNT(DISTINCT id_transacao) AS quantidade_transacoes
FROM
vendas_raw
GROUP BY
data_venda,
id_produto;
Análise do Resultado:
Após a criação, a vw_vendas_diarias_produto pode ser consultada como uma tabela comum por qualquer analista ou processo que precise dessa informação consolidada, simplificando a análise e garantindo a consistência da lógica de negócio.
SELECT * FROM vw_vendas_diarias_produto WHERE data_venda = '2025-10-01';
2. Temporary Views (Views Temporárias)
As Temporary Views, como o nome sugere, têm um ciclo de vida limitado. Elas existem apenas no escopo da sessão do Spark na qual foram criadas. Ao final da sessão (por exemplo, quando um notebook é desanexado do cluster), a View é automaticamente descartada.
Características Principais:
Persistência: Existem apenas durante a sessão atual.
Escopo: Visíveis apenas para a sessão que as criou. Não podem ser compartilhadas entre diferentes notebooks ou usuários em sessões distintas.
Isolamento: Úteis para armazenar resultados intermediários em um processo de ETL ou análise, sem poluir o metastore com objetos de dados temporários.
Exemplo Prático:
Suponha que estamos desenvolvendo um notebook para uma análise exploratória específica e precisamos de um conjunto de dados filtrado e transformado em várias etapas.
Explicação:
Criamos uma Temporary View a partir de um DataFrame do PySpark para facilitar a manipulação com SQL.
Exemplo:
# Supondo que 'df_logs' seja um DataFrame existente
df_logs.createOrReplaceTempView("temp_vw_logs_filtrados")
Ou utilizando SQL diretamente:
CREATE TEMPORARY VIEW temp_vw_logs_filtrados AS
SELECT
timestamp,
user_id,
action
FROM
logs
WHERE
date(timestamp) = '2025-10-01' AND action = 'login';
Análise do Resultado:
A temp_vw_logs_filtrados pode agora ser consultada diversas vezes dentro do mesmo notebook para diferentes análises. Ao final da sessão, ela deixará de existir, mantendo o ambiente limpo.
SELECT user_id, COUNT(*) AS num_logins
FROM temp_vw_logs_filtrados
GROUP BY user_id;
3. Global Temporary Views (Views Temporárias Globais)
As Global Temporary Views são um meio-termo interessante. Elas também são temporárias, mas seu escopo é ligado ao cluster do Spark, e não a uma sessão específica. Isso significa que uma Global Temporary View criada em um notebook pode ser acessada por outros notebooks que estejam anexados ao mesmo cluster.
Características Principais:
Persistência: Descartadas quando o cluster é desligado.
Escopo: Visíveis para todas as sessões em um mesmo cluster.
Namespace Específico: São criadas em um banco de dados temporário do sistema chamado global_temp. Para acessá-las, é necessário prefixar o nome da view com global_temp..
Exemplo Prático:
Imagine um cenário de desenvolvimento onde dois engenheiros de dados estão trabalhando em notebooks diferentes, mas precisam compartilhar um conjunto de dados intermediário para testes, sem a necessidade de persistir uma tabela.
Explicação:
No primeiro notebook, criamos uma Global Temporary View.
Exemplo (Notebook 1):
# Supondo que 'df_usuarios_ativos' seja um DataFrame
df_usuarios_ativos.createOrReplaceGlobalTempView("global_temp_vw_usuarios_ativos")
Ou com SQL:
CREATE GLOBAL TEMPORARY VIEW global_temp_vw_usuarios_ativos AS
SELECT * FROM usuarios WHERE status = 'ativo';
Análise do Resultado:
No segundo notebook, anexo ao mesmo cluster, podemos acessar essa View.
Exemplo (Notebook 2):
SELECT
COUNT(*) AS total_usuarios_ativos
FROM
global_temp.global_temp_vw_usuarios_ativos;
Tabela Comparativa: Stored vs. Temp vs. Global Temp Views
Característica | Stored View | Temporary View | Global Temporary View |
Persistência | Permanente (até ser excluída) | Sessão do Spark | Ciclo de vida do cluster |
Escopo | Entre sessões e clusters | Apenas na sessão de criação | Todas as sessões do mesmo cluster |
Visibilidade | Todos com permissão | Apenas o criador da sessão | Todos no mesmo cluster |
Namespace | Definido pelo usuário | Sessão local | global_temp |
Caso de Uso | Lógicas de negócio reutilizáveis | Resultados intermediários em um notebook | Compartilhamento de dados temporários entre notebooks |
Conclusão e Próximos Passos
A escolha do tipo de View a ser utilizada no Databricks depende diretamente do seu objetivo. Para lógicas de negócio consolidadas e que precisam ser compartilhadas e persistidas, as Stored Views são a escolha ideal. Para análises exploratórias e passos intermediários dentro de um mesmo notebook, as Temporary Views oferecem a agilidade e o isolamento necessários. Já as Global Temporary Views se mostram úteis em cenários de desenvolvimento colaborativo e compartilhamento de dados temporários em um mesmo ambiente computacional.
Dominar o uso desses diferentes tipos de Views é um passo importante para escrever códigos mais limpos, eficientes e sustentáveis no Databricks, alinhando-se com as melhores práticas de engenharia de dados e aproveitando ao máximo o potencial da plataforma.
Como próximos passos, explore a integração das Views com o Unity Catalog para um gerenciamento de permissões ainda mais granular e descubra como elas podem ser um componente fundamental na sua arquitetura de dados, seja ela no modelo Medalhão ou em qualquer outra estruturação que sua organização adote.




Comentários