Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Como as visualizações padrão, as visualizações materializadas são os resultados de uma consulta e você as acessa da mesma forma que acessaria uma tabela. Ao contrário das vistas padrão, que recalculam resultados em cada consulta, as visualizações materializadas armazenam os resultados em cache e atualizam-nos num intervalo especificado. Como uma exibição materializada é pré-calculada, as consultas em relação a ela podem ser executadas muito mais rapidamente do que em exibições regulares.
Para obter orientações sobre quando utilizar vistas materializadas em vez de tabelas ou vistas de streaming, consulte O que são pipelines?.
Uma visão materializada é um objeto de pipeline declarativo. Ele inclui uma consulta que o define, um fluxo para atualizá-lo e os resultados armazenados em cache para acesso rápido. Uma visão materializada:
- Rastreia alterações em dados upstream.
- No trigger, processa incrementalmente os dados alterados e aplica as transformações necessárias.
- Mantém a tabela de saída, em sincronia com os dados de origem, com base em um intervalo de atualização especificado.
As visões materializadas são uma boa escolha para muitas transformações:
- Você aplica raciocínio sobre resultados armazenados em cache em vez de linhas. Na verdade, você simplesmente escreve uma consulta.
- Eles estão sempre corretos no momento da sua atualização. Todos os dados necessários são processados, mesmo que cheguem atrasados ou fora de ordem.
- São muitas vezes incrementais. O Databricks tenta escolher a estratégia adequada que minimize o custo de atualização de uma vista materializada.
Como funcionam as visualizações materializadas
O diagrama a seguir ilustra como as exibições materializadas funcionam.
As visualizações materializadas são definidas e atualizadas por um único pipeline. Você pode definir explicitamente visões materializadas no código-fonte do pipeline. As tabelas definidas por um pipeline não podem ser alteradas ou atualizadas por nenhum outro pipeline.
Note
Quando crias uma visualização materializada autónoma, fora dos Lakeflow Spark Declarative Pipelines, o Azure Databricks cria um pipeline que é usado para atualizar a vista. Você pode ver o pipeline selecionando Jobs & Pipelines da barra de navegação à esquerda em seu espaço de trabalho. Você pode adicionar a coluna Tipo de pipeline à sua exibição. As visualizações materializadas definidas num pipeline têm um tipo de ETL. As vistas materializadas independentes são do tipo MV/ST. Ver Usar vistas materializadas independentes.
O Databricks utiliza o Unity Catalog para armazenar metadados sobre a visualização, incluindo a consulta e vistas adicionais do sistema para atualizações incrementais. O Databricks materializa os dados em cache no armazenamento na cloud.
Note
O Databricks cria tabelas internas para suportar a atualização incremental da vista materializada. Estas tabelas aparecem em system.information_schema.tables, mas não são visíveis no Explorador de Catálogos e noutras superfícies da interface do espaço de trabalho.
O exemplo a seguir une duas tabelas e mantém o resultado atualizado usando uma exibição materializada.
Python
from pyspark import pipelines as dp
@dp.materialized_view
def regional_sales():
partners_df = spark.read.table("partners")
sales_df = spark.read.table("sales")
return (
partners_df.join(sales_df, on="partner_id", how="inner")
)
SQL
CREATE OR REPLACE MATERIALIZED VIEW regional_sales
AS SELECT *
FROM partners
INNER JOIN sales ON
partners.partner_id = sales.partner_id;
Atualizações incrementais automáticas
Quando o pipeline que define uma exibição materializada é acionado, a exibição é automaticamente mantida atualizada, muitas vezes de forma incremental. O Databricks tenta processar apenas os dados que devem ser processados para manter a visualização materializada atualizada. Uma exibição materializada sempre mostra o resultado correto, mesmo que exija recalcular totalmente o resultado da consulta do zero, mas muitas vezes o Databricks faz apenas atualizações incrementais em uma exibição materializada, o que pode ser muito menos dispendioso do que uma recomputação completa.
O diagrama abaixo mostra uma visão materializada chamada sales_report, que é o resultado da junção de duas tabelas a montante chamadas clean_customers e clean_transactions, e do agrupamento por país. Um processo upstream insere 200 linhas em clean_customers em três países (EUA, Holanda, Reino Unido) e atualiza 5.000 linhas em clean_transactions correspondentes a esses novos clientes. A sales_report visão materializada é atualizada incrementalmente apenas para os países que têm novos clientes ou transações correspondentes. Neste exemplo, três linhas atualizam-se em vez de todo o relatório de vendas.
Para obter mais detalhes sobre como a atualização incremental funciona em exibições materializadas, consulte Atualização incremental para exibições materializadas.
Limitações da vista materializada
As visões materializadas têm as seguintes limitações:
- Como as atualizações criam consultas corretas, algumas alterações nas entradas exigirão um recálculo completo de uma visão materializada, o que pode ser caro.
- Eles não são projetados para casos de uso de baixa latência. A latência de atualização de uma visualização materializada está em segundos ou minutos, não em milissegundos.
- Nem todos os cálculos podem ser calculados incrementalmente.
- O Azure Databricks tenta detetar quando um UDF usado numa visualização materializada altera o comportamento e realizar uma atualização completa para aplicar o UDF atualizado. No entanto, UDFs que chamam outras funções ou bibliotecas podem alterar o comportamento de formas que o Azure Databricks não reconhece. Um exemplo disto é quando uma biblioteca denominada é atualizada. Quando o comportamento de uma UDF muda, é da sua responsabilidade realizar uma atualização total de qualquer vista materializada que a utilize.
- As vistas materializadas não suportam
CLONE. Não é possível usar uma vista materializada como origem ou destino de uma clonagem profunda ou superficial. Para obter mais informações, consulte Limitações. - Para visualizar o pipeline que suporta uma vista materializada, um utilizador não administrador necessita do privilégio
REFRESHna vista materializada, além das permissões sobre o pipeline. Veja Quem pode visualizar um pipeline e a sua saída?.