Pular para o conteúdo principal

Visualização materializada

Assim como a visualização padrão, a visualização materializada é o resultado de uma consulta e o senhor a acessa da mesma forma que acessaria uma tabela. Diferentemente da visualização padrão, que recompõe os resultados a cada consulta, a visualização materializada armazena os resultados em cache e os atualiza em um intervalo especificado. Como um view materializado é pré-calculado, as consultas contra ele podem ser executadas muito mais rapidamente do que contra uma visualização regular.

Um view materializado é um objeto pipeline declarativo. Ele inclui uma consulta que o define, um fluxo para atualizá-lo e os resultados em cache para acesso rápido. Um view materializado:

  • Rastreia as mudanças nos dados upstream.
  • Quando acionado, processa de forma incremental 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 especificado em refresh.

As visualizações materializadas são uma boa opção para muitas transformações:

  • Você aplica o raciocínio em resultados em cache em vez de linhas. Na verdade, você simplesmente escreve uma consulta.
  • Eles estão sempre corretos. Todos os dados necessários são processados, mesmo que cheguem atrasados ou fora de ordem.
  • Eles geralmente são incrementais. Databricks tentará escolher a estratégia adequada que minimiza o custo de atualização de um materializado view.

Como funciona a visualização materializada

O diagrama a seguir ilustra o funcionamento da visualização materializada.

Diagrama que mostra como a visualização materializada funciona

A visualização materializada é definida e atualizada por um único DLT pipeline. Ao criar um DLT pipeline, o senhor pode definir explicitamente a visualização materializada no código-fonte do pipeline. As tabelas definidas por um pipeline não podem ser alteradas ou atualizadas por nenhum outro pipeline.

Quando o senhor cria um view materializado fora de um pipeline em Databricks SQL, Databricks cria um DLT pipeline oculto que é usado para atualizar esse view.

Databricks usa o site Unity Catalog para armazenar metadados sobre o site view, incluindo a consulta e a visualização adicional do sistema que são usadas para atualizações incrementais. Os dados em cache são materializados no armazenamento em nuvem.

O exemplo a seguir une duas tabelas e mantém o resultado atualizado usando um view materializado.

Python
import dlt

@dlt.table
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")
)

Se o senhor usar uma ou mais invocações de spark.readStream no método, ele transformará a view em uma tabela de transmissão em vez de uma view materializada.

Atualizações incrementais automáticas

Quando o pipeline que define um view materializado é acionado, o view é automaticamente atualizado, geralmente de forma incremental. Databricks tenta processar somente os dados que devem ser processados para manter o site materializado view atualizado. Um view materializado sempre mostra o resultado correto, mesmo que exija a recomputação completa do resultado da consulta a partir do zero, mas muitas vezes o Databricks faz apenas atualizações incrementais em um view materializado, o que pode ser muito menos dispendioso do que uma recomputação completa.

O diagrama abaixo mostra um view materializado chamado sales_report, que é o resultado da união de duas tabelas upstream 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. O sales_report materializado view é atualizado de forma incremental somente para os países que têm novos clientes ou transações correspondentes. Neste exemplo, vemos três linhas atualizadas em vez de todo o relatório de ventas.

Materialized view exemplo de atualização incremental

Para obter mais detalhes sobre como o refresh incremental funciona na visualização materializada, consulte Incremental refresh for materialized view.

Limitações da visualização materializada

A visualização materializada tem as seguintes limitações:

  • Como as atualizações criam consultas corretas, algumas alterações nas entradas exigirão uma recomputação completa de um materializado view, o que pode ser caro.
  • Eles não foram projetados para casos de uso de baixa latência. A latência da atualização de um site materializado view é em segundos ou minutos, não em milissegundos.
  • Nem todos os cálculos podem ser computados de forma incremental.