Usar a visualização materializada em Databricks SQL
Visualização
Esse recurso está em Public Preview.
Este artigo descreve como criar e refresh materialized view em Databricks SQL para melhorar o desempenho e reduzir o custo de suas cargas de trabalho de análise e processamento de dados.
O que são visualizações materializadas?
Em Databricks SQL, as visualizações materializadas são Unity Catalog tabelas gerenciais que armazenam fisicamente os resultados de uma consulta. Diferentemente da visualização padrão, que compute os resultados sob demanda, a visualização materializada armazena os resultados em cache e os atualiza à medida que as tabelas de origem subjacentes são alteradas, seja em um programa ou automaticamente.
A visualização materializada é adequada para cargas de trabalho de processamento de dados, como o processamento de extração, transformação e carregamento (ETL). A visualização materializada oferece 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 de base. Ao pré-computar consultas caras ou usadas com frequência, a visualização materializada reduz a latência das consultas e o consumo de recursos. Em muitos casos, eles podem incrementar compute as alterações das tabelas de origem, melhorando ainda mais a eficiência e a experiência do usuário final.
Os casos de uso comuns da visualização materializada são os seguintes:
- Manter um painel de BI atualizado com o mínimo de latência de consulta do usuário final.
- Reduzir a orquestração complexa de ETL com lógica SQL simples.
- Construir transformações complexas e em camadas.
- Quaisquer casos de uso que exijam desempenho consistente com percepções atualizadas.
Quando o senhor cria um view materializado em um depósito Databricks SQL, é criado um serverless pipeline é criado para processar a criação e atualização para o view materializado. O senhor pode monitorar o status de refresh operações no Catalog Explorer. Consulte a visualização materializada view details with DESCRIBE EXTENDED
.
Requisitos
As visualizações materializadas criadas em Databricks SQL são apoiadas por um serverless DLT pipeline. Seu site workspace deve ser compatível com o pipeline serverless para usar essa funcionalidade.
Requisitos para criar ou refresh materialized view:
-
O senhor deve usar um profissional habilitado para o Unity Catalog ou serverless SQL warehouse.
-
Para refresh um view materializado, o senhor deve estar no workspace que o criou.
-
Para refresh incrementar uma view materializada a partir de tabelas Delta, as tabelas de origem devem ter o acompanhamento de linhas ativado.
-
O proprietário (o usuário que cria o site materializado view) deve ter as seguintes permissões:
SELECT
privilégio nas tabelas de base referenciadas pelo site materializado view.USE CATALOG
eUSE SCHEMA
privilégios no catálogo e no esquema que contêm as tabelas de origem para o materializado view.USE CATALOG
eUSE SCHEMA
privilégios no catálogo e no esquema de destino para o materializado view.CREATE TABLE
eCREATE MATERIALIZED VIEW
privilégios no esquema que contém o materializado view.
-
Para refresh um materializado view, o senhor deve ter o privilégio
REFRESH
no materializado view.
Requisitos para consultar a exibição materializada:
-
O senhor deve ser o proprietário do materializado view, ou ter
SELECT
no materializado view, juntamente comUSE SCHEMA
eUSE CATALOG
em seus pais. -
O senhor deve usar um dos seguintes compute recurso:
-
Armazém SQL
-
Interfaces DLT
-
Modo de acesso padrão compute (anteriormente, modo de acesso compartilhado)
-
Modo de acesso dedicado (antigo modo de acesso de usuário único) em Databricks Runtime 15.4 e acima, desde que o workspace esteja habilitado para serverless compute. Consulte Controle de acesso refinado em compute dedicado (anteriormente, usuário único compute).
Se o senhor for o proprietário do materializado view, poderá usar um recurso compute de 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 um arquivo materializado view
Databricks SQL Materialized view CREATE
operações usam um Databricks SQL warehouse para criar e carregar dados no materialized view. A criação de um view materializado é uma operação síncrona, o que significa que o CREATE MATERIALIZED VIEW
comando bloqueia até que o view materializado seja criado e a carga de dados inicial seja concluída. Um serverless DLT pipeline é criado automaticamente para cada Databricks SQL materializado view. Quando o view materializado é atualizado, o DLT pipeline processa o refresh.
Para criar um view materializado, use a instrução CREATE MATERIALIZED VIEW
. Para enviar uma instrução de criação, use o editor SQL na interface do usuário do Databricks, a CLI do Databricks SQL ou a API do Databricks SQL.
O usuário que cria um view materializado é o proprietário do view materializado.
O exemplo a seguir cria a tabela materializada view mv1
a partir da tabela de base base_table1
:
-- 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 o senhor cria um view materializado usando a instrução CREATE OR REPLACE MATERIALIZED VIEW
, os dados iniciais refresh e a população começam imediatamente. Isso não consome SQL warehouse compute. Em vez disso, o site serverless DLT é usado para criação e atualização subsequente.
Os comentários de coluna em uma tabela base são automaticamente propagados para a nova tabela materializada view somente na criação. Para adicionar um programar, restrições de tabela ou outras propriedades, modifique a definição materializada do view (a consulta SQL ).
A mesma instrução SQL refresh um view materializado se for chamada posteriormente ou em um programa. Um refresh feito dessa forma funciona como qualquer outro refresh. Para obter detalhes, consulte atualizar um site materializado view.
Para saber mais sobre a configuração de um view materializado, consulte Configure materialized view in Databricks SQL. Para saber mais sobre a sintaxe completa de criação de um site materializado view, consulte CREATE MATERIALIZED VIEW. Para saber mais sobre como carregar dados em diferentes formatos e de diferentes lugares, consulte Carregar dados com DLT.
Carregar dados de sistemas externos
Databricks recomenda o carregamento da Federação de uso externo de dados lakehouse para fontes de dados suportadas. Para obter informações sobre o carregamento de dados de fontes não compatíveis com a 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 DLT.
Ocultar dados confidenciais
Visualização
Esse recurso está em Public Preview.
O senhor pode usar a visualização materializada para ocultar dados confidenciais dos usuários que acessam a tabela. Uma maneira de fazer isso é criar a consulta para 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 está consultando. 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 do view materializado. Para obter mais informações, consulte Filtro sensível à tabela uso de dados filtros de linha e máscaras de coluna.
atualizar um arquivo materializado view
A atualização de uma tabela materializada view atualiza a view para refletir as últimas alterações na tabela base no momento da refresh.
Quando o senhor define um view materializado, a instrução CREATE OR REPLACE MATERIALIZED VIEW
é usada tanto para criar o view quanto para refresh para qualquer atualização programada. O senhor também pode usar a instrução REFRESH MATERIALIZED VIEW
para refresh o view materializado sem precisar fornecer a consulta novamente. Consulte REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) para obter detalhes sobre a sintaxe e os parâmetros SQL desse comando. Para saber mais sobre os tipos de visualização materializada que podem ser atualizados de forma incremental, consulte Incremental refresh for materialized view.
Para enviar uma declaração refresh, use o editor SQL na interface do usuário Databricks, um Notebook anexado a um SQL warehouse, o Databricks SQL CLIou o Databricks SQL API.
O proprietário e qualquer usuário que tenha recebido o privilégio REFRESH
na tabela podem refresh a tabela materializada view.
O exemplo a seguir atualiza o mv1
materializado view:
REFRESH MATERIALIZED VIEW mv1;
As operações são síncronas pelo site default, o que significa que o comando bloqueia até que as operações do site refresh sejam concluídas. Para refresh de forma assíncrona, o senhor pode adicionar a palavra-chave ASYNC
:
REFRESH MATERIALIZED VIEW mv1 ASYNC;
Como a visualização materializada Databricks SQL é atualizada?
A visualização materializada cria e usa automaticamente o serverless DLT pipeline para processar refresh operações. O refresh é gerenciado pelo DLT pipeline e a atualização é monitorada pelo Databricks SQL warehouse usado para criar o view materializado. A visualização materializada pode ser atualizada por meio do site DLT pipeline que é executado em um programa. Databricks SQL A visão materializada criada sempre é executada no modo acionado. Consulte Modo de pipeline acionado vs. contínuo.
A visualização materializada é atualizada usando um dos dois métodos.
- Incremental refresh - O sistema avalia a consulta do view para identificar as alterações que ocorreram após a última atualização e mesclar apenas os dados novos ou modificados.
- Full refresh - Se não for possível realizar uma refresh incremental, 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 há suporte para o refresh incremental. Para dar suporte ao refresh incremental, os dados de origem devem ser armazenados em tabelas Delta, com acompanhamento de linha e feed de dados de alteração ativados. Depois de criar um view materializado, o senhor pode monitorar seu comportamento refresh para verificar se ele é atualizado de forma incremental ou por meio de um refresh completo.
Para obter detalhes sobre os tipos de refresh e como otimizar a atualização incremental, consulte Incremental refresh for materialized view.
Atualização assíncrona
Em default, refresh operações são realizadas de forma síncrona. O senhor também pode definir uma refresh operação para ocorrer de forma assíncrona. Isso pode ser definido usando o comando refresh com a palavra-chave ASYNC
. Consulte REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) O comportamento associado a cada abordagem é o seguinte:
- Síncrono : Um refresh síncrono impede que outras operações prossigam até que o refresh seja concluído. Se o resultado for necessário para a próxima etapa, por exemplo, ao sequenciar refresh operações em ferramentas de orquestração como Databricks Jobs, use um refresh síncrono. Para orquestrar a visualização materializada com um trabalho, use o tipo SQL tipo tarefa. Veja a orquestração usando Databricks Jobs.
- Assíncrono : Um refresh assíncrono começa um trabalho em segundo plano no DLT compute quando um view refresh materializado é iniciado, permitindo que o comando retorne antes que a carga de dados seja concluída. Esse tipo de refresh pode economizar custos porque as operações não necessariamente mantêm a capacidade compute no armazém onde o comando é iniciado. Se o refresh ficar parado e nenhuma outra tarefa estiver em execução, o armazém poderá ser desligado enquanto o refresh utiliza outros compute disponíveis. Além disso, a atualização assíncrona suporta o início de várias operações em paralelo.
programar materializado view refresh
O senhor pode configurar uma Databricks SQL materializada view para refresh automaticamente com base em um programa definido. Para definir uma programação, siga um destes procedimentos:
- Configure o programar com a
SCHEDULE
cláusula quando o senhor criar o materialized view - Adicione um programador com a instrução ALTER MATERIALIZED VIEW.
Como alternativa, o senhor pode criar uma tarefa em um trabalho que inclua a declaração CREATE OR REPLACE MATERIALIZED VIEW
ou REFRESH
e orquestrá-la como faria com qualquer outro trabalho. Veja a orquestração usando Databricks Jobs.
O exemplo a seguir cria a tabela materializada view mv1
a partir da tabela base base_table1
e programa para refresh a tabela materializada view uma vez por hora:
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 programar após a criação, use a instrução ALTER MATERIALIZED VIEW
:
ALTER MATERIALIZED VIEW sales ALTER SCHEDULE EVERY 1 day;
Quando um programar é criado, um novo Databricks Job é automaticamente configurado para processar a atualização.
Para view o programar, faça uma das seguintes ações:
- Execute a declaração
DESCRIBE EXTENDED
do editor SQL na interface do usuário Databricks. Consulte DESCRIBE TABLE. - Use o Catalog Explorer para view o site materializado view. O programa está listado em Overview tab, em refresh status (status de atualização ). Consulte O que é o Catalog Explorer?.
Quando há um programar para atualização, o senhor ainda tem a opção de executar um refresh manual a qualquer momento, se precisar de dados atualizados.
Interromper um refresh
Para interromper um refresh ativo na interface do usuário do DLT, na página de detalhes do pipeline , clique em Stop (Parar ) para interromper a atualização do pipeline. O senhor também pode interromper o refresh com o comando Databricks CLI ou o POST /api/2.0/pipeline/{pipeline_id}/stop operações em andamento API.
Excluir permanentemente registros de um site materializado view com vetores de exclusão ativados
Visualização
O suporte para a declaração REORG
com visualização materializada está em Public Preview.
- O uso de uma declaração
REORG
com um view materializado requer o Databricks Runtime 15.4 e o acima. - Embora seja possível usar a instrução
REORG
com qualquer view materializado, ela só é necessária ao excluir registros de um view materializado com vetores de exclusão ativados. O comando não tem efeito quando usado com um view materializado sem vetores de exclusão ativados.
Para excluir fisicamente os registros do armazenamento subjacente de um view materializado com vetores de exclusão ativados, como no caso do GDPR compliance, é necessário tomar medidas adicionais para garantir que uma vacuum operações executadas nos dados do viewmaterializado.
Para excluir registros fisicamente:
- Executar uma instrução
REORG
contra o materializado view, especificando o parâmetroAPPLY (PURGE)
. Por exemplo,REORG TABLE <materialized-view-name> APPLY (PURGE);
. Consulte REORG TABLE. - Aguarde o término do período de retenção de dados do site viewmaterializado. O período de retenção de dados do default é de sete dias, mas pode ser configurado com a propriedade da tabela
delta.deletedFileRetentionDuration
. Consulte Configurar a retenção de dados para consultas de viagem do tempo. REFRESH
O site materializado view. Consulte atualizar um site materializado view. Dentro de 24 horas após asREFRESH
operações, DLT tarefas de manutenção, incluindo asVACUUM
operações necessárias para garantir que os registros sejam permanentemente excluídos, são executadas automaticamente.
Solte um arquivo materializado view
Para enviar o comando para eliminar um materializado view, o senhor deve ser o proprietário desse materializado view ou ter o privilégio MANAGE
no materializado view.
Para descartar um site materializado view, use a declaração DROP VIEW declaração. Para enviar uma instrução DROP
, o senhor pode usar o editor SQL na interface do usuário do Databricks, a CLI do Databricks SQL ou a API do Databricks SQL. O exemplo a seguir elimina o mv1
materializado view:
DROP MATERIALIZED VIEW mv1;
O senhor também pode usar o Catalog Explorer para soltar um materializado view.
- Clique em
Catálogo na barra lateral.
- Na árvore Catalog Explorer, à esquerda, abra o catálogo e selecione o esquema em que o site view materializado está localizado.
- Abra o item Tables (Tabelas ) no esquema que o senhor selecionou e clique na página materializada view.
- No menu kebab,
selecione Excluir.
Compreender os custos de um sistema materializado view
Como uma view materializada é executada em serverless compute, fora do compute que o senhor configurou para um Notebook ou Job, o senhor pode se perguntar como entender os custos associados a ela. O uso do view materializado é monitorado pelo consumo do DBU. Para saber mais, consulte Qual é o consumo DBU de uma tabela materializada view ou de transmissão?
Ativação do acompanhamento de linha
Para oferecer suporte à atualização incremental das tabelas Delta, o acompanhamento de linhas deve estar ativado para essas tabelas de origem. Se o senhor recriar uma tabela de origem, deverá reativar o acompanhamento de linhas.
O exemplo a seguir mostra como ativar o acompanhamento de linhas em uma tabela:
ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);
Para obter mais detalhes, consulte Usar acompanhamento de linha para Delta tables
Limitações
- Para obter os requisitos dos sites compute e workspace, consulte Requisitos.
- Para obter os requisitos do refresh incremental, consulte Incremental refresh for materialized view.
- A visualização materializada não oferece suporte a colunas de identidade ou chave substituta.
- Se uma visualização materializada view usar um agregado de soma em uma coluna
NULL
-able e somente os valoresNULL
permanecerem nessa coluna, o valor agregado resultante da visualização materializada será zero em vez deNULL
. - O viewsenhor não pode ler um feed de dados de alteração em um site materializado.
- As consultas de viagem do tempo não são compatíveis com a 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 da 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 um view materializado podem expor dados de tabelas upstream que não fazem parte do esquema view materializado, o site Databricks recomenda não compartilhar o armazenamento subjacente com consumidores downstream não confiáveis. Por exemplo, suponha que a definição de um site materializado view inclua uma cláusula
COUNT(DISTINCT field_a)
. Embora a definição materializada view inclua apenas a cláusula agregadaCOUNT DISTINCT
, os arquivos subjacentes conterão uma lista dos valores reais defield_a
. - O senhor poderá incorrer em algumas cobranças do serverless compute , mesmo quando usar esses recursos no compute dedicado.