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.
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 visões materializadas?
No Databricks SQL, as exibições materializadas são tabelas gerenciadas pelo Unity Catalog que armazenam fisicamente os resultados de uma consulta. Ao contrário das visualizações padrão, que computam os resultados sob demanda, as exibições materializadas armazenam os resultados em cache e os atualizam à medida que as tabelas de origem subjacentes mudam, seja em um cronograma 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 carga (ETL). As visualizações materializadas fornecem uma maneira simples e declarativa de processar dados para conformidade, correções, agregações ou captura geral de dados de alteração (CDC). As visualizações materializadas também permitem transformações fáceis de usar, limpando, enriquecendo e desnormalizando tabelas base. Ao pré-calcular consultas caras ou usadas com frequência, as visualizações materializadas reduzem a latência da 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.
Os seguintes são casos de uso comuns para visões materializadas:
- Manter um painel de BI atualizado com latência mínima de consulta do usuário final.
- Reduzindo a orquestração complexa de ETL com lógica SQL simples.
- Construção de transformações complexas e estratificadas.
- Quaisquer casos de uso que exijam performance consistente com insights atualizados up-to.
Quando cria uma vista materializada num armazém de SQL Databricks, é criado um pipeline sem servidor para processar a criação e as atualizações da vista materializada. Você pode monitorar o status das operações de atualização no Gerenciador de Catálogos. Consulte Ver detalhes da vista materializada com DESCRIBE EXTENDED
.
Requisitos
As exibições materializadas criadas no Databricks SQL são apoiadas por um pipeline sem servidor. Seu espaço de trabalho deve oferecer suporte a pipelines sem servidor para usar essa funcionalidade.
Requisitos para criar ou atualizar exibições materializadas:
Você deve usar um SQL warehouse profissional com Catálogo Unity ativado ou um SQL warehouse sem servidor.
Para atualizar uma exibição materializada, você deve estar no espaço de trabalho que a criou.
Para atualizar incrementalmente uma exibição materializada a partir de tabelas Delta, as tabelas de origem devem ter o rastreamento de linhas habilitado.
O proprietário (o usuário que cria a exibição materializada) deve ter as seguintes permissões:
-
SELECT
privilégio sobre as tabelas base referenciadas pela vista materializada. -
USE CATALOG
eUSE SCHEMA
privilégios no catálogo e no esquema que contêm as tabelas de origem para a vista materializada. -
USE CATALOG
eUSE SCHEMA
privilégios no catálogo de destino e esquema para a exibição materializada. -
CREATE TABLE
eCREATE MATERIALIZED VIEW
privilégios no esquema que contém a visão materializada.
-
Para atualizar uma visão materializada, você deve ter o
REFRESH
privilégio na visão materializada.
- Seu espaço de trabalho deve estar em uma região que ofereça suporte a armazéns SQL sem servidor.
Requisitos para consultar visualizações materializadas:
Você deve ser o dono da visão materializada, ou ter
SELECT
sobre a visão materializada, junto comUSE SCHEMA
eUSE CATALOG
sobre seus pais.Você deve usar um dos seguintes recursos de computação:
Armazém SQL
Interfaces de Pipelines Declarativos do Lakeflow
Computação do modo de acesso padrão (anteriormente modo de acesso compartilhado)
Modo de acesso dedicado (anteriormente modo de acesso de usuário único) no Databricks Runtime 15.4 e superior, desde que o espaço de trabalho esteja habilitado para computação sem servidor. Consulte Controle de acesso refinado em computação dedicada.
Se for o proprietário da vista materializada, pode usar um recurso de computação em modo de acesso dedicado que esteja executando o Databricks Runtime da versão 14.3 ou superior.
Para saber mais sobre outras restrições ao uso de visões materializadas, consulte Limitações.
Criar uma vista materializada
As operações de vista CREATE
materializada do Databricks SQL utilizam um armazém de dados SQL do Databricks para criar e carregar dados na vista materializada. Criar uma visualização materializada é uma operação síncrona, o que significa que o CREATE MATERIALIZED VIEW
comando bloqueia até que a visualização materializada seja criada e a carga inicial de dados termine. Um pipeline sem servidor é automaticamente criado para cada vista materializada do Databricks SQL. Quando a visualização materializada é atualizada, o Lakeflow Declarative Pipelines processa a atualização.
Para criar uma visão materializada, use a instrução CREATE MATERIALIZED VIEW
. Para enviar uma instrução CREATE, use o editor SQL na interface do utilizador do Azure Databricks, a CLI SQL do Databricks ou a API SQL do Databricks.
O usuário que cria uma visão materializada é o proprietário da visão materializada.
O exemplo a seguir cria a exibição mv1
materializada a partir da tabela base_table1
base:
-- 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 inicial de dados e a população começam imediatamente. Isso não consome a computação do SQL warehouse. Em vez disso, o Lakeflow Declarative Pipelines sem servidor é usado para criação e atualizações subsequentes.
Os comentários das colunas numa tabela base são propagados automaticamente para a nova vista materializada apenas aquando da sua criação. Para adicionar uma agenda, 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 vista materializada se chamada novamente ou de acordo com um cronograma. Uma atualização feita desta forma funciona como qualquer outra atualização. Para obter detalhes, consulte 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 formatos diferentes e de locais diferentes, consulte Carregar dados com pipelines declarativos Lakeflow.
Carregar dados de sistemas externos
O Databricks recomenda o carregamento de dados externos usando a Lakehouse Federation para fontes de dados suportadas. Para obter informações sobre como carregar dados de fontes não suportadas pela Lakehouse Federation, consulte Opções de formato de dados. Para obter informações gerais sobre como carregar dados, incluindo exemplos, consulte Carregar dados com Lakeflow Declarative Pipelines.
Ocultar dados confidenciais
Você pode usar exibições materializadas 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 tax_id
coluna para usuários que não estão no grupo HumanResourcesDept
. Para fazer isto, use a sintaxe ROW FILTER
e MASK
durante a criação da vista materializada. Para obter mais informações, consulte Filtros de linha e máscaras de coluna.
Atualizar uma vista materializada
A atualização de um modo de exibição materializado atualiza o modo de exibição para refletir as alterações mais recentes na tabela base no momento da atualização.
Quando você define um modo de exibição materializado, a CREATE OR REPLACE MATERIALIZED VIEW
instrução é usada para criar o modo de exibição e para atualizá-lo para quaisquer atualizações agendadas. 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 os parâmetros para este comando. Para saber mais sobre os tipos de modos de exibição materializados que podem ser atualizados incrementalmente, consulte Atualização incremental para modos de exibição materializados.
Para enviar uma instrução de atualização, use o editor SQL na interface do utilizador do Azure Databricks, um caderno anexado a um armazém SQL, a CLI SQL do Databricks ou a API SQL do Databricks.
O proprietário e qualquer usuário que tenha recebido o REFRESH
privilégio na tabela pode atualizar a exibição materializada.
O seguinte exemplo atualiza a mv1
exibição materializada:
REFRESH MATERIALIZED VIEW mv1;
A operação é síncrona por padrão, o que significa que o comando bloqueia até que a operação de atualização seja concluída. 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 visualizações materializadas criam e utilizam automaticamente pipelines declarativos Lakeflow sem servidor para processar operações de atualização. A atualização é gerenciada pelo pipeline e a atualização é monitorada pelo armazém SQL Databricks usado para criar a exibição materializada. As visualizações materializadas podem ser atualizadas usando um pipeline que é executado em um cronograma. Databricks SQL cria sempre visualizações materializadas que são executadas no modo acionado. Consulte Modo de fluxo de trabalho acionado versus contínuo.
As visualizações materializadas são atualizadas usando um dos dois métodos.
- Atualização incremental - O sistema avalia a consulta da exibição para identificar alterações que aconteceram 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 visualização materializada pelos novos resultados.
A estrutura da consulta e o tipo de dados de origem determinam se a atualização incremental é suportada. Para oferecer suporte à atualização incremental, os dados de origem devem ser armazenados em tabelas Delta, com o rastreamento de linhas e o feed de dados de alteração habilitados. Depois de criar uma exibição materializada, você pode monitorar seu comportamento de atualização para verificar se ela é atualizada 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 refresh com a ASYNC
palavra-chave. Ver REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) O comportamento associado a cada abordagem é o seguinte:
- Síncrono: 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 Lakeflow Jobs, use uma atualização síncrona. Para orquestrar visões materializadas com uma tarefa, use o tipo de tarefa SQL. Veja Lakeflow Jobs.
- Assíncrona: uma atualização assíncrona inicia um trabalho em segundo plano no cálculo do Lakeflow Declarative Pipelines quando uma atualização de exibição materializada começa, permitindo que o comando retorne antes que a carga de dados seja concluída. Esse tipo de atualização pode economizar custos porque a operação não necessariamente mantém a capacidade de computação no depósito onde o comando é iniciado. Se a tarefa de atualização ficar ociosa e nenhuma outra tarefa estiver em execução, o depósito poderá ser desligado enquanto utiliza outro recurso de computação disponível. Além disso, as atualizações assíncronas suportam a inicialização de várias operações em paralelo.
Agendar atualizações de visões materializadas
Você pode configurar uma exibição materializada do Databricks SQL para atualizar automaticamente com base em uma agenda definida. Para definir uma agenda, siga um destes procedimentos:
- Configure o horário com a cláusula
ao criar a visão materializada - Adicione uma agenda com a instrução ALTER MATERIALIZED VIEW.
Observação
Como alternativa, pode-se criar uma tarefa num trabalho que inclua a CREATE OR REPLACE MATERIALIZED VIEW
instrução ou a REFRESH
e orquestrá-la como faria com qualquer outro trabalho. Veja Lakeflow Jobs.
O exemplo a seguir cria o modo de exibição mv1
materializado a partir da tabela base_table1
base e um agendamento para atualizar o modo de exibição materializado 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 cronograma após a criação, use a ALTER MATERIALIZED VIEW
instrução:
ALTER MATERIALIZED VIEW sales ALTER SCHEDULE EVERY 1 day;
Quando uma agenda é criada, um novo trabalho do Databricks é configurado automaticamente para processar a atualização.
Para exibir a agenda, siga um destes procedimentos:
- Execute a
DESCRIBE EXTENDED
instrução do editor SQL na interface do usuário do Azure Databricks. Consulte DESCRIBE TABLE. - Utilize o Catalog Explorer para exibir a vista materializada. A agenda está listada na guia Visão geral , em Status de atualização. Consulte O que é o Catalog Explorer?.
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 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 declaração REORG
com vistas materializadas está em Pré-visualização Pública.
Observação
- Usar uma instrução
REORG
com uma vista materializada requer o Databricks Runtime 15.4 ou 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 visualizaçã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 o GDPR, etapas adicionais devem ser tomadas para garantir que uma VACUUM operação seja executada nos dados da exibição materializada.
Para excluir registros fisicamente:
- Execute uma declaração
REORG
na vista materializada, especificando o parâmetroAPPLY (PURGE)
. Por exemplo,REORG TABLE <materialized-view-name> APPLY (PURGE);
. Consulte REORG TABLE. - Aguarde até que o período de retenção de dados da vista materializada passe. O período de retenção de dados padrão é de sete dias, mas pode ser configurado com a propriedade
delta.deletedFileRetentionDuration
table. Consulte Configuração de retenção de dados para consultas de viagem no tempo. -
REFRESH
a visão materializada. Ver Atualizar uma vista materializada. Dentro de 24 horas após a operação, asREFRESH
tarefas de manutenção do Lakeflow Declarative Pipelines, incluindo aVACUUM
operação necessária para garantir que os registros sejam excluídos permanentemente, são executadas automaticamente.
Elimine a visão materializada
Observação
Para enviar o comando para eliminar uma visão materializada, deve ser o proprietário dessa visão materializada ou ter o privilégio MANAGE
na visão materializada.
Para eliminar uma visão materializada, use a instrução DROP VIEW. Para enviar uma DROP
instrução, pode usar o editor SQL na interface do utilizador do Azure Databricks, a CLI SQL do Databricks ou a API SQL do Databricks. O exemplo a seguir descarta a mv1
visão materializada:
DROP MATERIALIZED VIEW mv1;
Você também pode usar o Catalog Explorer para eliminar uma exibição materializada.
- Clique no
Catálogo na barra lateral.
- Na árvore do Catalog Explorer à esquerda, abra o catálogo e selecione o esquema onde sua exibição materializada está localizada.
- Abra o item Tabelas sob o esquema selecionado e clique na vista materializada.
- No
, selecione Eliminar.
Compreender os custos de uma visão materializada
Como uma exibição materializada é executada em computação sem servidor, fora da computação que você configurou para um bloco de anotações ou trabalho, você pode se perguntar como entender os custos associados a ela. O uso da visualização materializada é rastreado pelo consumo de DBU. Para saber mais, consulte Qual é o consumo de DBU de uma visualização materializada ou tabela de streaming?
Ativando o rastreamento de linhas
Para oferecer suporte a atualizações incrementais de tabelas Delta, o rastreamento de linhas deve ser habilitado para essas tabelas de origem. Se você recriar uma tabela de origem, deverá reativar o rastreamento de linha.
O exemplo a seguir mostra como ativar o rastreio de linhas numa tabela:
ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);
Para obter mais detalhes, consulte Usar o rastreamento de linhas para tabelas Delta
Limitações
- Para requisitos de computação e espaço de trabalho, consulte Requisitos.
- Para requisitos de atualização incremental, consulte Atualização incremental para exibições materializadas.
- As visualizações materializadas não suportam colunas de identidade ou chaves substitutas.
- Se uma vista materializada usa uma soma agregada sobre uma coluna
NULL
-able e apenasNULL
valores permanecem nessa coluna, o valor agregado resultante da vista materializada é zero em vez deNULL
. - Não é possível ler um feed de dados de alterações a partir de uma exibição materializada.
- As consultas de deslocação no tempo não são suportadas em visões materializadas.
- Os arquivos subjacentes que suportam visualizações materializadas podem incluir dados de tabelas upstream (incluindo possíveis informações pessoalmente identificáveis) que não aparecem na definição de exibição materializada. Esses dados são adicionados automaticamente ao armazenamento subjacente para oferecer 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 tabelas upstream 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 visão materializada inclua uma
COUNT(DISTINCT field_a)
cláusula. Embora a definição de exibição materializada inclua apenas a cláusulaCOUNT DISTINCT
agregada, os arquivos subjacentes conterão uma lista dos valores reais defield_a
. - Você pode incorrer em algumas cobranças de computação sem servidor, mesmo ao usar esses recursos em computação dedicada.
- Se precisar usar uma ligação Azure Private Link com a sua vista materializada, contacte o seu representante da Databricks.