Pular para o conteúdo principal

Use a visualização materializada no Databricks SQL

info

Visualização

Este recurso está em Visualização Pública.

Este artigo descreve como criar e refresh uma visualização materializada no Databricks SQL para melhorar o desempenho e reduzir o custo de suas cargas de trabalho de processamento e análise de dados.

O que são visões materializadas?

No Databricks SQL, as visualizações materializadas são tabelas gerenciais Unity Catalog que armazenam fisicamente os resultados de uma consulta. Diferentemente da visualização padrão, que compute resultados sob demanda, a visualização materializada armazena em cache os resultados e os atualiza conforme as tabelas de origem subjacentes mudam, seja por programa ou automaticamente.

As visualizações materializadas são adequadas para cargas de trabalho de processamento de dados, como processamento de extração, transformação e carregamento (ETL). A visualização materializada fornece uma maneira simples e declarativa de processar dados para compliance, correções, agregações ou captura geral de dados de alterações (CDC) (CDC). A visualização materializada também permite transformações fáceis de usar, limpando, enriquecendo e desnormalizando tabelas base. Ao pré-computar consultas caras ou usadas com frequência, o Materialized visualiza menor latência de consulta e consumo de recursos. Em muitos casos, eles podem compute incrementalmente alterações de tabelas de origem, melhorando ainda mais a eficiência e a experiência do usuário final.

A seguir estão alguns casos de uso comuns para visualização materializada:

  • Manter um painel de BI atualizado com latência mínima de consulta do usuário final.
  • Reduzindo a orquestração ETL complexa com lógica SQL simples.
  • Construindo transformações complexas e em camadas.
  • Quaisquer casos de uso que exijam desempenho consistente com percepções atualizadas.

Ao criar uma view materializada em um warehouse Databricks SQL , um pipelineserverless é criado para processar a criação e a atualização da view materializada. Você pode monitorar o status das operações refresh no Catalog Explorer. Veja os detalhes view materializada com DESCRIBE EXTENDED.

Requisitos

As visualizações materializadas criadas no Databricks SQL são apoiadas por um pipeline serverless . Seu workspace deve oferecer suporte ao pipeline serverless para usar essa funcionalidade.

Requisitos para criar ou refresh a visualização materializada:

  • Você deve usar um SQL warehouse pro ou serverless habilitado para Unity Catalog.

  • Para refresh uma view materializada, você deve estar no workspace que a criou.

  • Para refresh incrementalmente uma view materializada de tabelas Delta , as tabelas de origem devem ter o acompanhamento de linhas habilitado.

  • O proprietário (o usuário que cria a view materializada) deve ter as seguintes permissões:

    • SELECT privilégio nas tabelas base referenciadas pela view materializada.
    • USE CATALOG e privilégios USE SCHEMA no catálogo e esquema contendo as tabelas de origem para a view materializada.
    • USE CATALOG e privilégios USE SCHEMA no catálogo de destino e esquema para a view materializada.
    • CREATE TABLE e privilégios CREATE MATERIALIZED VIEW no esquema que contém a view materializada.
  • Para refresh uma view materializada, você deve ter o privilégio REFRESH na view materializada.

Requisitos para consultar a visualização materializada:

  • Você deve ser o proprietário da view materializada ou ter SELECT na view materializada, junto com USE SCHEMA e USE CATALOG em seus pais.

  • Você deve usar um dos seguintes recursos compute :

    • Armazém SQL

    • Interfaces de pipeline declarativas LakeFlow

    • compute em modo de acesso padrão (anteriormente modo de acesso compartilhado)

    • Modo de acesso dedicado (antigo modo de acesso de usuário único) no Databricks Runtime 15.4 e acima, desde que o workspace esteja habilitado para compute serverless . Veja Controle de acesso refinado em computededicada.

      Se você for o proprietário view materializada, poderá usar um recurso compute no modo de acesso dedicado que esteja executando Databricks Runtime entre 14.3 e acima.

Para saber mais sobre outras restrições ao uso da visualização materializada, consulte Limitações.

Crie uma viewmaterializada

As operações view materializada Databricks SQL CREATE usam um warehouse Databricks SQL para criar e carregar dados na view materializada. Criar uma view materializada é uma operação síncrona, o que significa que o comando CREATE MATERIALIZED VIEW bloqueia até que a view materializada seja criada e o carregamento inicial de dados seja concluído. Um pipeline serverless é criado automaticamente para cada view materializada Databricks SQL . Quando a view materializada é atualizada, o pipeline declarativo LakeFlow processa a refresh.

Para criar uma view materializada, use a instrução CREATE MATERIALIZED VIEW . Para enviar uma instrução create, use o editor SQL na interface do usuário Databricks , a CLIDatabricks SQL ou a APIDatabricks SQL.

O usuário que cria uma view materializada é o proprietário view materializada.

O exemplo a seguir cria a view materializada mv1 a partir da tabela base base_table1:

SQL
-- This query defines the materialized view:
CREATE OR REPLACE MATERIALIZED VIEW mv1
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;

Quando você cria uma view materializada usando a instrução CREATE OR REPLACE MATERIALIZED VIEW , a refresh inicial dos dados e o preenchimento começam imediatamente. Isso não consome compute SQL warehouse . Em vez disso, o pipeline declarativo LakeFlow serverless é usado para criação e atualização subsequente.

Os comentários de coluna em uma tabela base são propagados automaticamente para a nova view materializada somente na criação. Para adicionar um programa, restrições de tabela ou outras propriedades, modifique a definição view materializada (a consulta SQL ).

A mesma instrução SQL refresh uma view materializada se for chamada posteriormente ou em um programa. Uma refresh feita dessa maneira atua como qualquer outra refresh. Para obter detalhes, consulte atualizar uma viewmaterializada.

Para saber mais sobre como configurar uma view materializada, consulte Configurar visualização materializada no Databricks SQL. Para saber mais sobre a sintaxe completa para criar uma view materializada, consulte CREATE MATERIALIZED VIEW. Para saber mais sobre como carregar dados em diferentes formatos e de diferentes lugares, consulte Carregar dados com o pipeline declarativo LakeFlow.

Carregar dados de sistemas externos

Databricks recomenda carregar o uso de dados externo da Lakehouse Federation para fontes de dados suportadas. Para obter informações sobre o carregamento de dados de fontes não suportadas pela Lakehouse Federation, consulte Opções de formato de dados. Para obter informações gerais sobre o carregamento de dados, incluindo exemplos, consulte Carregar dados com o pipeline declarativo LakeFlow.

Ocultar dados confidenciais

info

Visualização

Este recurso está em Visualização Pública.

Você pode usar a visualização materializada para ocultar dados confidenciais de usuários que acessam a tabela. Uma maneira de fazer isso é criar a consulta de forma que ela não inclua esses dados em primeiro lugar. Mas você também pode mascarar colunas ou filtrar linhas com base nas permissões do usuário que faz a consulta. Por exemplo, você pode ocultar a coluna tax_id para usuários que não estão no grupo HumanResourcesDept. Para fazer isso, use a sintaxe ROW FILTER e MASK durante a criação da view materializada. Para mais informações, consulte Filtros de linha e máscaras de coluna.

atualizar uma viewmaterializada

Atualizar uma view materializada atualiza a view para refletir as últimas alterações na tabela base no momento da refresh.

Quando você define uma view materializada, a instrução CREATE OR REPLACE MATERIALIZED VIEW é usada para criar a view e para refresh la para qualquer atualização agendada. Você também pode usar a instrução REFRESH MATERIALIZED VIEW para refresh a view materializada sem precisar fornecer a consulta novamente. Consulte REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) para obter detalhes sobre a sintaxe SQL e os parâmetros deste comando. Para saber mais sobre os tipos de visualização materializada que podem ser atualizadas incrementalmente, consulte refresh incremental para visualização materializada.

Para enviar uma instrução de refresh , use o editor SQL na interface do usuário Databricks , um Notebook anexado a um SQL warehouse, a CLIDatabricks SQL ou a APIDatabricks SQL.

O proprietário e qualquer usuário que tenha recebido o privilégio REFRESH na tabela podem refresh a view materializada.

O exemplo a seguir atualiza a view materializada mv1 :

SQL
REFRESH MATERIALIZED VIEW mv1;

As operações são síncronas por default, o que significa que o comando bloqueia até que as operações refresh sejam concluídas. Para refresh de forma assíncrona, você pode adicionar a palavra-chave ASYNC :

SQL
REFRESH MATERIALIZED VIEW mv1 ASYNC;

Como a visualização materializada Databricks SQL é atualizada?

A visualização materializada cria e usa automaticamente o pipeline declarativo LakeFlow serverless para processar operações refresh . A refresh é gerenciada pelo pipeline e monitorada pelo Databricks SQL warehouse usado para criar a view materializada. A visualização materializada pode ser atualizada usando um pipeline que é executado em um programa. A visualização materializada criada Databricks SQL sempre é executada no modo acionado. Veja Modo de pipeline disparado vs. contínuo.

As visualizações materializadas são atualizadas usando um dos dois métodos.

  • refreshincremental - O sistema avalia a consulta da view para identificar alterações que ocorreram após a última atualização e mesclar apenas os dados novos ou modificados.
  • refreshcompleta - Se uma refresh incremental não puder ser realizada, o sistema executará a consulta inteira e substituirá os dados existentes na view materializada pelos novos resultados.

A estrutura da consulta e o tipo de dados de origem determinam se refresh incremental é suportada. Para dar suporte refresh incremental, os dados de origem devem ser armazenados em tabelas Delta , com acompanhamento de linhas e alimentação de dados alterados habilitados. Depois de criar uma view materializada, você pode monitorar seu comportamento refresh para verificar se ela é atualizada incrementalmente ou por meio de uma refresh completa.

Para obter detalhes sobre os tipos de refresh e como otimizar a atualização incremental, consulte refresh incremental para visualização materializada.

Atualização assíncrona

Por default, as operações refresh são executadas de forma síncrona. Você também pode definir que as operações refresh ocorram de forma assíncrona. Isso pode ser definido usando o comando refresh com a palavra-chave ASYNC . Veja REFRESH (MATERIALIZED VIEW ou STREAMING TABLE). O comportamento associado a cada abordagem é o seguinte:

  • Síncrono : uma refresh síncrona impede que outras operações prossigam até que a refresh seja concluída. Se o resultado for necessário para o próximo passo, como ao sequenciar operações refresh em ferramentas de orquestração como LakeFlow Jobs, use uma refresh síncrona. Para orquestrar uma visualização materializada com um Job, use o tipo tarefa SQL . Veja empregosLakeFlow.
  • Assíncrono : uma refresh assíncrona inicia um trabalho em segundo compute no pipeline declarativo LakeFlow quando uma refresh view materializada começa, permitindo que o comando retorne antes que o carregamento de dados seja concluído. Esse tipo de refresh pode economizar custos porque as operações não necessariamente mantêm capacidade compute no warehouse onde o comando é iniciado. Se a refresh ficar parada e nenhuma outra tarefa estiver em execução, o warehouse poderá ser desligado enquanto a refresh usa outros compute disponíveis. Além disso, a atualização assíncrona oferece suporte ao início de várias operações em paralelo.

programar atualização view materializada

Você pode configurar uma view materializada Databricks SQL para refresh automaticamente com base em um programa definido ou para disparar quando os dados upstream forem alterados.

info

Beta

O recurso TRIGGER ON UPDATE está em Beta. Para habilitar esse recurso no seu workspace, entre em contato com seu representante Databricks .

Para definir um programa ou gatilho, faça um dos seguintes:

  • Configure o programa com a cláusula SCHEDULE ao criar a viewmaterializada
  • Configure um gatilho com a cláusula TRIGGER ON UPDATE ao criar a view materializada.
  • Adicione ou modifique programas ou gatilhos com a instrução ALTER MATERIALIZED VIEW .
nota

Como alternativa, você pode criar uma tarefa em um Job que inclua a instrução CREATE OR REPLACE MATERIALIZED VIEW ou REFRESH e orquestrá-la como faria com qualquer outro Job. Veja empregosLakeFlow.

O exemplo a seguir cria a view materializada mv1 a partir da tabela base base_table1 e um programa para refresh a view materializada uma vez por hora:

SQL
CREATE OR REPLACE MATERIALIZED VIEW mv1
SCHEDULE EVERY 1 hour
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;

Para definir ou alterar o programa após a criação, use a instrução ALTER MATERIALIZED VIEW :

SQL
ALTER MATERIALIZED VIEW sales ALTER SCHEDULE EVERY 1 day;

Quando um programa é criado, um novo trabalho Databricks é configurado automaticamente para processar a atualização.

Para view o programa, faça um dos seguintes:

  • execute a instrução DESCRIBE EXTENDED do editor SQL na interface do usuário Databricks . Veja DESCRIBE TABLE.
  • Use o Catalog Explorer para view a view materializada. O programa está listado na tab Visão geral , em status de atualização . Veja O que é o Catalog Explorer?.

Quando há um programa para atualização, você ainda tem a opção de executar uma refresh manual a qualquer momento, caso precise de dados atualizados.

Parar uma refreshativa

Para interromper uma refresh ativa na interface do usuário do pipeline declarativo LakeFlow , na página de detalhes do pipeline , clique em Parar para interromper a atualização pipeline . Você também pode interromper a refresh com o CLIDatabricks ou o POST /api/2.0/pipeline/{pipeline_id}/stop operações na API do pipeline.

Tempo limite para atualização

Uma atualização de longa duração pode expirar. A visualização materializada criada ou atualizada após 14 de agosto de 2025 usará o tempo limite associado ao SQL warehouse usado para executar a refresh. Se o depósito não tiver um tempo limite definido, o default de 2 dias será usado.

nota

A view materializada só sincroniza o tempo limite quando você executa manualmente uma instrução CREATE OR REFRESH . As atualizações agendadas mantêm o tempo limite do CREATE OR REFRESH mais recente.

Você pode definir explicitamente o tempo limite com uma configuração STATEMENT_TIMEOUT no seu SQL para a refresh. Veja STATEMENT_TIMEOUT.

Excluir permanentemente registros de uma view materializada com vetores de exclusão habilitados

info

Visualização

O suporte para a instrução REORG com visualização materializada está em Visualização Pública.

nota
  • Usar uma instrução REORG com uma view materializada requer Databricks Runtime 15.4 e acima.
  • Embora você possa usar a instrução REORG com qualquer view materializada, ela só é necessária ao excluir registros de uma view materializada com vetores de exclusão habilitados. O comando não tem efeito quando usado com uma view materializada sem vetores de exclusão habilitados.

Para excluir fisicamente registros do armazenamento subjacente para uma view materializada com vetores de exclusão habilitados, como para compliance GDPR , passos adicionais devem ser tomados para garantir que uma operação vacuum seja executada nos dados da view materializada.

Para excluir registros fisicamente:

  1. executa uma instrução REORG na view materializada, especificando o parâmetro APPLY (PURGE) . Por exemplo REORG TABLE <materialized-view-name> APPLY (PURGE);. Veja REORG TABLE.
  2. Aguarde o período de retenção de dados da view materializada passar. O período default de retenção de dados é de sete dias, mas pode ser configurado com a propriedade da tabela delta.deletedFileRetentionDuration . Consulte Configurar retenção de dados para consultas de viagem do tempo.
  3. REFRESH a view materializada. Veja atualizar uma viewmaterializada. Dentro de 24 horas das operações REFRESH , a tarefa de manutenção do pipeline declarativo LakeFlow , incluindo as operações VACUUM necessárias para garantir que os registros sejam excluídos permanentemente, são executadas automaticamente.

Solte uma viewmaterializada

nota

Para enviar o comando para remover uma view materializada, você deve ser o proprietário dessa view materializada ou ter o privilégio MANAGE na view materializada.

Para descartar uma view materializada, use a instrução DROP VIEW . Para enviar uma instrução DROP , você pode usar o editor SQL na interface do usuário Databricks , a CLIDatabricks SQL ou a APIDatabricks SQL. O exemplo a seguir descarta a view materializada mv1 :

SQL
DROP MATERIALIZED VIEW mv1;

Você também pode usar o Catalog Explorer para soltar uma view materializada.

  1. Clique Ícone de dados. Catálogo na barra lateral.
  2. Na árvore do Catalog Explorer à esquerda, abra o catálogo e selecione o esquema onde sua view materializada está localizada.
  3. Abra o item Tabelas no esquema selecionado e clique na view materializada.
  4. No menu de kebab Ícone do menu de kebab., selecione Excluir .

Entenda os custos de uma viewmaterializada

Como uma execução view materializada em compute serverless , fora da compute que você configura para um Notebook ou Job, você pode se perguntar como entender os custos associados a ela. O uso view materializada é rastreado pelo consumo DBU . Para saber mais, consulte Qual é o consumo DBU de uma view materializada ou tabela de transmissão?

Habilitando o acompanhamento de linha

Para dar suporte à atualização incremental de tabelas Delta , o acompanhamento de linhas deve ser habilitado para essas tabelas de origem. Se você recriar uma tabela de origem, deverá reativar o acompanhamento de linhas.

O exemplo a seguir mostra como habilitar o acompanhamento de linhas em uma tabela:

SQL
ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);

Para mais detalhes, consulte Usar acompanhamento de linha para tabelas Delta

Limitações

  • Para requisitos de compute e workspace , consulte Requisitos.
  • Para requisitos refresh incremental, consulte refresh incremental para visualização materializada.
  • A visualização materializada não suporta colunas de identidade ou chaves substitutas.
  • Se uma view materializada usar uma agregação de soma sobre uma coluna NULLe somente valores NULL permanecerem nessa coluna, o valor agregado resultante da visualização materializada será zero em vez de NULL.
  • Não é possível ler um feed de dados de alterações de uma view materializada.
  • Consultas de viagem do tempo não são suportadas na visualização materializada.
  • Os arquivos subjacentes que dão suporte à visualização materializada podem incluir dados de tabelas upstream (incluindo possíveis informações de identificação pessoal) que não aparecem na definição view materializada. Esses dados são adicionados automaticamente ao armazenamento subjacente para dar suporte à atualização incremental da visualização materializada. Como os arquivos subjacentes de uma view materializada podem correr o risco de expor dados de tabelas upstream que não fazem parte do esquema view materializada, Databricks recomenda não compartilhar o armazenamento subjacente com consumidores downstream não confiáveis. Por exemplo, suponha que a definição de uma view materializada inclua uma cláusula COUNT(DISTINCT field_a) . Embora a definição view materializada inclua apenas a cláusula agregada COUNT DISTINCT , os arquivos subjacentes conterão uma lista dos valores reais de field_a.
  • Você pode incorrer em algumas cobranças compute serverless , mesmo ao usar esses recursos em compute dedicada.

Artigos relacionados