Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como criar e atualizar exibições materializadas 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 exibições materializadas?
No Databricks SQL, as exibições materializadas são tabelas gerenciadas do Catálogo do Unity que armazenam fisicamente os resultados de uma consulta. Ao contrário dos modos de exibição padrão, que calculam os resultados sob demanda, as exibições materializadas armazenam os resultados em cache e os atualizam conforme as tabelas de origem subjacentes mudam, seja em um agendamento ou automaticamente.
Visões materializadas são adequadas para cargas de trabalho de processamento de dados, como extração, transformação e carga (ETL). As exibições materializadas fornecem uma maneira simples e declarativa de processar dados para conformidade, correções, agregações ou CDC (captura geral de dados de alterações). As exibições materializadas também permitem transformações fáceis de usar limpando, enriquecendo e desnormalizando tabelas base. Ao pré-calcular consultas caras ou frequentemente usadas, as exibições materializadas reduzem a latência de consulta e o consumo de recursos. Em muitos casos, eles podem calcular incrementalmente as alterações das tabelas de origem, melhorando ainda mais a eficiência e a experiência do usuário final.
Estes são casos de uso comuns para exibições materializadas:
- Manter um painel de BI atualizado com latência mínima de consulta do usuário final.
- Reduzindo a orquestração de ETL complexa com lógica SQL simples.
- Criando transformações complexas em camadas.
- Todos os casos de uso que exigem um desempenho consistente com insights atualizados.
Quando você cria uma visão materializada em um Databricks SQL warehouse, um pipeline sem servidor é criado para processar a criação e as atualizações da visão materializada. Você pode monitorar o status das operações de atualização no Gerenciador de Catálogos. Veja Exibir detalhes da exibição materializada com DESCRIBE EXTENDED
.
Requisitos
As exibições materializadas criadas no DATAbricks SQL são apoiadas por um pipeline sem servidor. Seu workspace precisa dar suporte aos pipelines sem servidor para usar essa funcionalidade.
Requisitos para criar ou atualizar exibições materializadas:
Você deve usar um warehouse SQL Pro ou sem servidor habilitado para o Catálogo do Unity.
Para atualizar uma exibição materializada, você deve estar no workspace que a criou.
Para atualizar incrementalmente uma exibição materializada das tabelas Delta, as tabelas de origem devem ter o controle de linha habilitado.
O proprietário (o usuário que cria a exibição materializada) deve ter as seguintes permissões:
- Privilégio
SELECT
nas tabelas base referenciadas pela exibição materializada. - Privilégios
USE CATALOG
eUSE SCHEMA
no catálogo e no esquema que contém as tabelas de origem para a exibição materializada. - Privilégios
USE CATALOG
eUSE SCHEMA
no catálogo de destino e no esquema para a exibição materializada. - Privilégios
CREATE TABLE
eCREATE MATERIALIZED VIEW
no esquema que contém a exibição materializada.
- Privilégio
Para atualizar uma exibição materializada, você deve ter o
REFRESH
privilégio na exibição materializada.
- Seu workspace deve estar em uma região que dê suporte a SQL warehouses sem servidor.
Requisitos para consultar exibições materializadas:
Você deve ser o proprietário da exibição materializada ou ter
SELECT
nela, além deUSE SCHEMA
eUSE CATALOG
nos pais.Você deve usar um dos seguintes recursos de computação:
SQL Warehouse
Interfaces dos Pipelines Declarativas do Lakeflow
Computação no 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 superior, desde que o workspace esteja habilitado para computação sem servidor. Consulte o controle de acesso refinado na computação dedicada.
Se você for o proprietário da exibição materializada, poderá usar um recurso de computação de modo de acesso Dedicado que execute o Databricks Runtime entre a versão 14.3 e versões superiores.
Para saber mais sobre outras restrições ao uso de exibições materializadas, confira as Limitações.
Criar uma exibição materializada
As operações CREATE
de exibição materializadas do Databricks SQL usam um warehouse do Databricks SQL para criar e carregar dados na exibição materializada. A criação de uma exibição materializada é uma operação síncrona, o que significa que o comando CREATE MATERIALIZED VIEW
é bloqueado até que a exibição materializada seja criada e a carga de dados inicial termine. Um pipeline sem servidor é criado automaticamente para cada exibição materializada do Databricks SQL. Quando a exibição materializada é atualizada, o Lakeflow Declarative Pipelines a atualização.
Para criar uma exibição materializada, use a instrução CREATE MATERIALIZED VIEW
. Para enviar uma instrução create, use o editor do SQL na interface do usuário do Azure Databricks, a CLI do SQL do Databricks ou a API do SQL do Databricks.
O usuário que cria uma exibição materializada é o proprietário da exibição materializada.
O exemplo a seguir cria a exibição materializada mv1
da tabela 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 você cria uma exibição materializada usando a CREATE OR REPLACE MATERIALIZED VIEW
instrução, a atualização de dados inicial e a população começam imediatamente. Isso não consome a computação do SQL Warehouse. Em vez disso, os Pipelines Declarativos do Lakeflow sem servidor são usados para as criações e atualizações subsequentes.
Os comentários de coluna em uma tabela base são propagados automaticamente para a nova exibição materializada somente na criação. Para adicionar um agendamento, restrições de tabela ou outras propriedades, modifique a definição de exibição materializada (a consulta SQL).
A mesma instrução SQL atualizará uma exibição materializada se for chamada uma hora subsequente ou em um agendamento. Uma atualização feita dessa forma atua como qualquer outra atualização. Para obter detalhes, veja Atualizar uma exibição materializada.
Para saber mais sobre como configurar uma exibição materializada, consulte Configurar exibições materializadas no DATAbricks SQL. Para saber mais sobre a sintaxe completa para criar uma exibição materializada, consulte CREATE MATERIALIZED VIEW. Para saber mais sobre como carregar dados em diferentes formatos e em locais diferentes, consulte Carregar dados com Pipelines Declarativos do Lakeflow.
Carregar dados de locais externos
O Databricks recomenda o carregamento de dados externos usando a Federação lakehouse para fontes de dados com suporte. Para obter informações sobre como carregar dados de fontes sem suporte da Federação de Lakehouse, confira Opções de formato de dados. Para informações gerais sobre como carregar dados, incluindo exemplos, consulte Carregar dados com Pipelines Declarativos do Lakeflow.
Ocultar dados confidenciais
Importante
Esse recurso está em Visualização Pública.
Você pode usar exibições materializadas para ocultar dados confidenciais de 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 tax_id
coluna 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 visão materializada. Para obter mais informações, consulte Filtrar dados confidenciais da tabela usando filtros de linha e máscaras de coluna.
Atualizar uma exibição materializada
A atualização de uma exibição materializada atualiza a exibição para que ela reflita as últimas alterações na tabela base no momento da atualização.
Quando você define uma exibição materializada, a CREATE OR REPLACE MATERIALIZED VIEW
instrução é usada tanto para criar a exibição quanto para atualizá-la para qualquer atualização agendada. Você também pode usar a REFRESH MATERIALIZED VIEW
instrução para atualizar a exibição materializada sem precisar fornecer a consulta novamente. Consulte REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) para obter detalhes sobre a sintaxe sql e parâmetros para este comando. Para saber mais sobre os tipos de exibições materializadas que podem ser atualizadas de forma incremental, consulte Atualização incremental para exibições materializadas.
Para enviar uma instrução de atualização, use o editor de SQL na interface do usuário do Azure Databricks, um notebook anexado a um SQL Warehouse, a CLI do SQL do Databricks ou a API do SQL do Databricks.
O proprietário e qualquer usuário que tenha recebido o privilégio REFRESH
na tabela podem atualizar a exibição materializada.
O exemplo a seguir atualiza a exibição materializada mv1
:
REFRESH MATERIALIZED VIEW mv1;
A operação é síncrona por padrão, o que significa que o comando é bloqueado até a operação de atualização terminar. Para atualizar de forma assíncrona, você pode adicionar a ASYNC
palavra-chave:
REFRESH MATERIALIZED VIEW mv1 ASYNC;
Como as exibições materializadas do Databricks SQL são atualizadas?
As exibições materializadas criam e usam automaticamente Pipelines Declarativos do Lakeflow sem servidor para processar operações de atualização. A atualização é gerenciada pelo pipeline e a atualização é monitorada pelo warehouse do Databricks SQL usado para criar a exibição materializada. As exibições materializadas podem ser atualizadas usando um pipeline executado de acordo com uma agenda. As exibições materializadas criadas pelo Databricks SQL sempre são executadas no modo disparado. Confira Modo de pipeline disparado versus contínuo.
Visões materializadas são atualizadas usando um dos dois métodos.
- Atualização incremental – O sistema avalia a consulta do modo de exibição para identificar as alterações que ocorreram após a última atualização e mescla apenas os dados novos ou modificados.
- Atualização completa - Se uma atualização incremental não puder ser executada, o sistema executará toda a consulta e substituirá os dados existentes na exibição materializada pelos novos resultados.
A estrutura da consulta e o tipo de dados de origem determinam se há suporte para atualização incremental. Para dar suporte à atualização incremental, os dados de origem devem ser armazenados em tabelas Delta, com o acompanhamento de linhas e o feed de dados de alterações habilitados. Depois de criar uma exibição materializada, você pode monitorar seu comportamento de atualização para verificar se ele é atualizado incrementalmente ou por meio de uma atualização completa.
Para obter detalhes sobre tipos de atualização e como otimizar para atualizações incrementais, consulte Atualização incremental para exibições materializadas.
Atualizações assíncronas
Por padrão, as operações de atualização são executadas de forma síncrona. Você também pode definir uma operação de atualização para ocorrer de forma assíncrona. Isso pode ser definido usando o comando atualizar com a ASYNC
palavra-chave. Consulte REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) O comportamento associado a cada abordagem é o seguinte:
- Síncrona: uma atualização síncrona impede que outras operações prossigam até que a atualização seja concluída. Se o resultado for necessário para a próxima etapa, como ao sequenciar operações de atualização em ferramentas de orquestração como o Lakeflow Jobs, use uma atualização síncrona. Para orquestrar exibições materializadas com um trabalho, use o tipo de tarefa SQL. Consulte Trabalhos do Lakeflow.
- Assíncrona: uma atualização assíncrona inicia um trabalho em segundo plano na computação de Pipelines Declarativos do Lakeflow quando uma atualização de exibição materializada começa, permitindo que o comando retorne antes que o carregamento de dados termine. Esse tipo de atualização pode economizar nos custos porque a operação não necessariamente mantém a capacidade de computação no armazém em que o comando é iniciado. Se a atualização ficar ociosa e nenhuma outra tarefa estiver em execução, o warehouse poderá ser desligado enquanto a atualização usar outra computação disponível. Além disso, as atualizações assíncronas dão suporte ao início de múltiplas operações em paralelo.
Agendar as atualizações de exibição materializada
Você pode configurar uma exibição materializada do Databricks SQL para atualizar automaticamente com base em um agendamento definido. Para definir programação, siga um destes procedimentos:
- Configure o agendamento com a cláusula
SCHEDULE
ao criar a exibição materializada - Adicione um cronograma com a instrução ALTER MATERIALIZED VIEW.
Observação
Como alternativa, você pode criar uma tarefa em um trabalho que inclua a instrução CREATE OR REPLACE MATERIALIZED VIEW
ou uma instrução REFRESH
e orquestrá-la como faria com qualquer outro trabalho. Consulte Trabalhos do Lakeflow.
O exemplo a seguir cria a exibição mv1
materializada da tabela base_table1
base e um agendamento para atualizar a exibição materializada 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 a agenda após a criação, use a ALTER MATERIALIZED VIEW
instrução:
ALTER MATERIALIZED VIEW sales ALTER SCHEDULE EVERY 1 day;
Quando um agendamento é criado, um novo trabalho do Databricks é configurado automaticamente para processar a atualização.
Para ver a agenda, siga um destes procedimentos:
- Execute a instrução
DESCRIBE EXTENDED
no editor SQL da interface do usuário do Azure Databricks. Consulte DESCRIBE TABLE. - Use o Gerenciador de catálogos para ver a exibição materializada. O agendamento está na guia Visão geral em Status de atualização. Consulte O que é o Explorador de Catálogos?.
Quando há um agendamento para atualizações, você ainda tem a opção de executar uma atualização manual a qualquer momento, se precisar de dados atualizados.
Parar uma atualização ativa
Para interromper uma atualização ativa na interface do usuário do Lakeflow Declarative Pipelines, na página de detalhes do Pipeline , clique em Parar para interromper a atualização do pipeline. Você também pode interromper a atualização com a CLI do Databricks ou a operação POST /api/2.0/pipelines/{pipeline_id}/stop na API de Pipelines.
Excluir permanentemente registros de uma exibição materializada com vetores de exclusão habilitados
Importante
O suporte para a instrução REORG
em exibições materializadas está na Visualização Pública.
Observação
- Usar uma instrução
REORG
com uma exibição materializada requer o Databricks Runtime 15.4 e superior. - Embora você possa usar a
REORG
instrução com qualquer exibição materializada, ela só é necessária ao excluir registros de uma exibição materializada com vetores de exclusão habilitados. O comando não tem efeito quando usado com uma exibição materializada sem vetores de exclusão habilitados.
Para excluir fisicamente registros do armazenamento subjacente para uma exibição materializada com vetores de exclusão habilitados, como para conformidade com GDPR, etapas adicionais devem ser tomadas para garantir que uma VACUUM operação seja executada nos dados da exibição materializada.
Para excluir fisicamente os registros:
- Execute a instrução
REORG
na exibição materializada, especificando o parâmetroAPPLY (PURGE)
. Por exemplo,REORG TABLE <materialized-view-name> APPLY (PURGE);
. Consulte REORG TABLE. - Aguarde a passagem do período de retenção dos dados da exibição materializada. O período de retenção de dados padrão é de sete dias, mas pode ser configurado com a propriedade
delta.deletedFileRetentionDuration
tabela. Consulte Configurar retenção de dados para consultas de viagem no tempo. REFRESH
a exibição materializada. Veja Atualizar uma exibição materializada. Dentro de 24 horas após a operaçãoREFRESH
, as tarefas de manutenção do Lakeflow Declarative Pipelines, incluindo a operaçãoVACUUM
, que é necessária para garantir que os registros sejam excluídos permanentemente, são executadas automaticamente.
Remover uma exibição materializada
Observação
Para enviar o comando para remover uma exibição materializada, você deve ser o proprietário dessa exibição materializada ou ter o privilégio MANAGE
na exibição materializada.
Para remover uma exibição materializada, use a instrução DROP VIEW. Para enviar uma instrução DROP
, você pode usar o editor SQL na interface do usuário do Azure Databricks, a CLI do SQL do Databricks ou a API do SQL do Databricks. O exemplo a seguir descarta a exibição materializada mv1
:
DROP MATERIALIZED VIEW mv1;
Você também pode usar o Gerenciador de Catálogos para remover uma exibição materializada.
- Clique no
Catálogo na barra lateral.
- Na árvore do Gerenciador de Catálogos à esquerda, abra o catálogo e selecione o esquema em que a exibição materializada está localizada.
- Abra o item Tabelas no esquema selecionado e clique no modo de exibição materializado.
- No menu de kebab
, selecione Excluir.
Entender os custos de uma visão materializada
Como uma visualização materializada é executada em uma computação sem servidor, fora da computação que você configurou para um notebook ou tarefa, você pode se perguntar como entender os custos associados a ela. O uso da exibição materializada é acompanhado pelo consumo de DBU. Para saber mais, confira Qual é o consumo de DBU de uma exibição materializada ou tabela de streaming?
Como habilitar o acompanhamento de linhas
Para dar suporte a atualizações incrementais de tabelas Delta, o acompanhamento de linhas deve ser habilitado para essas tabelas de origem. Se você recriar uma tabela de origem, deverá habilitar novamente o acompanhamento de linhas.
O exemplo a seguir mostra como habilitar o acompanhamento de linhas em uma tabela:
ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);
Para obter mais detalhes, consulte Usar o acompanhamento de linhas para tabelas Delta
Limitações
- Para requisitos de computação e workspace, confira os Requisitos.
- Para obter requisitos de atualização incremental, consulte Atualização incremental para exibições materializadas.
- As exibições materializadas não dão suporte a colunas de identidade ou chaves substitutas.
- Se uma exibição materializada usar uma agregação de soma em uma coluna
NULL
-able e apenas os valoresNULL
permanecerem nessa coluna, o valor agregado resultante das exibições materializadas será zero em vez deNULL
. - Você não pode ler um feed de dados alterados de uma visualização materializada.
- Não há suporte para as consultas que envolvam viagem no tempo em exibições materializadas.
- Os arquivos subjacentes que dão suporte a exibições materializadas podem incluir dados de tabelas upstream (incluindo possíveis informações de identificação pessoal) que não aparecem na definição de exibição materializada. Esses dados são adicionados automaticamente ao armazenamento subjacente para dar suporte à atualização incremental de exibições materializadas. Como os arquivos subjacentes de uma exibição materializada podem correr o risco de expor dados de upstream tabelas que não fazem parte do esquema de exibição materializado, o Databricks recomenda não compartilhar o armazenamento subjacente com consumidores downstream não confiáveis. Por exemplo, suponha que a definição de uma exibição materializada inclua uma cláusula
COUNT(DISTINCT field_a)
. Embora a definição de exibição materializada inclua apenas a cláusula de agregaçãoCOUNT DISTINCT
, os arquivos subjacentes conterão uma lista dos valores reais defield_a
. - Você pode incorrer em alguns encargos de computação sem servidor, mesmo ao usar esses recursos na computação dedicada.
- Se você precisar usar uma conexão do Link Privado do Azure com sua exibição materializada, entre em contato com seu representante do Databricks.