evento
Junte-se a nós na FabCon Vegas
31/03, 23 - 2/04, 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registe-se hoje mesmoEste browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Este artigo descreve como criar e usar views materializados no Databricks SQL para melhorar o desempenho e reduzir o custo de suas cargas de trabalho de processamento e análise de dados.
Nota
Se você precisar usar uma conexão de Link Privado do Azure com sua exibição materializada, entre em contato com seu representante do Databricks.
Importante
Os views materializados que são criados no Databricks SQL são suportados por um pipeline Delta Live Tables sem servidor. Seu espaço de trabalho deve oferecer suporte a pipelines sem servidor para usar essa funcionalidade.
No Databricks SQL, os views materializados são tables gerenciados pelo Unity Catalog que permitem aos usuários pré-calcular resultados com base na versão mais recente dos dados na tablesde origem. Os views materializados no Azure Databricks diferem de outras implementações, pois os resultados retornados refletem o estado dos dados quando o modo de exibição materializado foi atualizado pela última vez, em vez de sempre atualizar os resultados quando o modo de exibição materializado é consultado. Você pode refresh manualmente views materializados ou agendar atualizações.
Os views materializados são poderosos para cargas de trabalho de processamento de dados, como processamento de extração, transformação e carga (ETL). Os views materializados fornecem uma maneira simples e declarativa de processar dados para conformidade, correções, agregações ou captura geral de dados de alteração (CDC). Materializadas views para reduzir custos e melhorar a latência de consultas através da pré-computação de consultas lentas e cálculos usados com frequência. Os views materializados também possibilitam transformações fáceis de usar, permitindo a limpeza, enriquecimento e desnormalização do tablesde base. O views materializado pode reduzir custos enquanto fornece uma experiência simplificada ao usuário final porque, em alguns casos, eles podem calcular incrementalmente as alterações a partir do tablesbase.
Os views materializados foram suportados pela primeira vez no Azure Databricks com o lançamento do Delta Live Tables. Quando você cria um modo de exibição materializado em um armazém SQL do Databricks, um pipeline sem servidor é criado para processar atualizações para o modo de exibição materializado. Você pode monitorar o status das operações de refresh na interface do usuário do Delta Live Tables ou nos pipelines API. Veja para ver o estado de uma vista materializada refresh.
Você deve usar um Unity Catalog-enabled pro ou um SQL warehouse sem servidor.
Para refresh uma vista materializada, tem de estar no espaço de trabalho que a criou.
Seu espaço de trabalho deve estar em uma região que ofereça suporte a armazéns SQL sem servidor.
SELECT
sobre a visão materializada, junto com USE SCHEMA
e USE CATALOG
sobre seus pais.Para saber mais sobre outras restrições ao uso de viewsmaterializado, consulte Limitações.
As operações de exibição CREATE
materializada do Databricks SQL usam um armazém SQL do Databricks para criar e carregar dados na exibição 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 Delta Live Tables sem servidor é automaticamente criado para cada vista materializada do Databricks SQL. Quando a visualização materializada é atualizada o pipeline Delta Live Tables processa o refresh.
Para criar uma exibição materializada, use a CREATE MATERIALIZED VIEW
instrução. Para enviar uma instrução create, use o editor SQL na interface do usuário do Azure Databricks, a CLI SQL do Databricks ou a API SQL do Databricks.
Nota
O usuário que cria uma exibição materializada é o proprietário da exibição materializada e precisa ter as seguintes permissões:
SELECT
privilégio na base tables referenciado pela visão materializada.USE CATALOG
e USE SCHEMA
privilégios no catalog e schema contendo a fonte tables para a visão materializada.USE CATALOG
e USE SCHEMA
privilégios no catalog de destino e schema para a visão materializada.CREATE TABLE
e CREATE MATERIALIZED VIEW
privilégios no schema que contém a visão materializada.O exemplo a seguir cria a visão materializada mv1
a partir da base tablebase_table1
.
CREATE MATERIALIZED VIEW mv1
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Column comentários em uma base de dados table são automaticamente propagados para a nova vista materializada. Para adicionar uma agenda, restrições de table ou outras propriedades, modifique a definição de exibição materializada. Para saber os detalhes da sintaxe para definir uma exibição materializada, consulte CREATE MATERIALIZED VIEW.
Os views materializados criados usando armazéns SQL são atualizados automaticamente usando um pipeline Delta Live Tables. Os pipelines Delta Live Tables usam o tempo de execução no canal current
por padrão. Consulte as notas de versão do Delta Live Tables e o processo de atualização da versão para entender o processo de lançamento.
A Databricks recomenda o uso do current
canal para cargas de trabalho de produção. Novos recursos são lançados pela primeira vez no preview
canal. Você pode set um pipeline para o canal de visualização Delta Live Tables para testar novos recursos ao especificar preview
como uma propriedade table. Você pode especificar essa propriedade ao criar o table ou depois que o table for criado usando uma instrução ALTER.
O exemplo de código a seguir mostra como set o canal para visualizar em uma instrução CREATE:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
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.
A operação REFRESH
atualiza a vista materializada para refletir as últimas alterações na base table. A operação é síncrona por padrão, o que significa que o comando bloqueia até que a operação refresh seja concluída. Para refresh uma visão materializada, use o comando REFRESH MATERIALIZED VIEW
. Consulte REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) para obter detalhes sobre a sintaxe SQL e parameters para este comando. Para saber mais sobre os tipos de views materializados que podem ser atualizados incrementalmente, consulte Incremental refresh para viewsmaterializados.
Para enviar uma instrução refresh, use o editor SQL na interface do usuário do Azure Databricks, um bloco de anotações anexado a um depósito SQL, o Databricks SQL CLIou o Databricks SQL API.
Só o proprietário pode REFRESH
a visão materializada.
O exemplo a seguir atualiza a mv1
exibição materializada:
REFRESH MATERIALIZED VIEW mv1;
Materializa views que cria e utiliza automaticamente pipelines sem servidor Delta Live Tables para processar operações refresh. O refresh é gerenciado pelo pipeline Delta Live Tables e o update é monitorado pelo armazém SQL Databricks usado para criar a exibição materializada. Os views materializados podem ser atualizados usando um pipeline Delta Live Tables que é executado em um cronograma. Consulte Modo de pipeline acionado versus contínuo.
Nota
O tempo de execução do Delta Live Tables não pode detetar alterações em fontes de dados não Delta. O table ainda é atualizado regularmente, mas com um intervalo de gatilho padrão mais alto para evitar que o recálculo excessivo retarde qualquer processamento incremental acontecendo na computação.
Por padrão, as operações refresh são realizadas sincronamente. Você também pode set uma operação refresh ocorrer de forma assíncrona. Isso pode ser set usando o comando refresh. Ver REFRESH (MATERIALIZED VIEW ou STREAMING TABLE) O comportamento associado a cada abordagem é o seguinte:
Algumas consultas podem ser atualizadas incrementalmente. Consulte refresh incremental para viewsmaterializada. Se não for possível executar uma refresh incremental, será executada uma refresh completa.
Você pode configurar uma exibição materializada do Databricks SQL para refresh automaticamente com base em uma agenda definida. Para set fazer um agendamento, siga um destes procedimentos:
SCHEDULE
cláusula ao criar a exibição materializadaQuando uma agenda é criada, uma nova tarefa do Databricks é configurada automaticamente para processar o update.
Para exibir a agenda, siga um destes procedimentos:
DESCRIBE EXTENDED
instrução do editor SQL na interface do usuário do Azure Databricks.Nota
Como um pipeline Delta Live Tables gerencia a atualização de vistas materializadas, há uma latência resultante do tempo de inicialização do pipeline. Esse tempo pode ser de segundos a minutos, além do tempo necessário para realizar o refresh.
Você pode visualizar o status de uma vista materializada
Você também pode exibir o histórico de refresh de uma exibição materializada consultando o log de eventos do Delta Live Tables. Consulte Exibir o histórico de refresh para obter uma exibição materializada.
Você pode usar a página de histórico de consultas para acessar detalhes de consulta e perfis de consulta que podem ajudá-lo a identificar consultas de baixo desempenho e gargalos no pipeline Delta Live Tables usado para executar suas atualizações de streaming table. Para obter uma visão geral do tipo de informações disponíveis para históricos de consultas e perfis de consulta, consulte Histórico de consultas e Perfil de consulta.
Importante
Esta funcionalidade está em Pré-visualização Pública. Os administradores do espaço de trabalho podem ativar esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.
Todas as declarações relacionadas ao views materializado aparecem no histórico de consultas. Você pode usar o filtro suspenso Statement para select qualquer comando e inspecionar as consultas relacionadas. Todas as instruções CREATE
são seguidas de uma instrução REFRESH
que se executa de forma assíncrona num pipeline Delta Live Tables. As REFRESH
instruções geralmente incluem planos de consulta detalhados que fornecem informações sobre a otimização do desempenho.
Para acessar REFRESH
instruções na interface do usuário do histórico de consultas, use as seguintes etapas:
Nota
Sua exibição materializada deve ser configurada para ser executada usando o canal de visualização . Consulte Set o canal de execução em tempo real.
Consulte CREATE MATERIALIZED VIEW.
Por padrão, o pipeline do Delta Live Tables que gerencia uma exibição materializada não é visível na interface do usuário do Delta Live Tables. Para visualizar o pipeline na interface Delta Live Tables, é necessário acessar diretamente o link para a página de detalhes do Pipeline. Para acessar o link:
DESCRIBE EXTENDED
.Para comandos REFRESH
assíncronos enviados usando o editor SQL na interface do usuário do Azure Databricks, você pode exibir o status do refresh seguindo o link mostrado no painel de Resultados .
Para interromper um
Para update a definição de uma visão materializada, você deve primeiro soltar e, em seguida, recriar a visão materializada.
Nota
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, você pode usar o editor SQL na interface do usuário 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;
Para recuperar os columns e os tipos de dados para uma exibição materializada, use a instrução DESCRIBE
. Para recuperar os columns, tipos de dados e metadados, como proprietário, local, hora de criação e status refresh para uma exibição materializada, use DESCRIBE EXTENDED
. Para enviar uma DESCRIBE
instrução, use o editor SQL na interface do usuário do Azure Databricks, a CLI SQL do Databricks ou a API SQL do Databricks.
Você pode alterar o proprietário de uma visualização materializada se for tanto um administrador de metastore quanto um administrador de espaço de trabalho. As visualizações materializadas views criam e usam automaticamente os pipelines Delta Live Tables para processar alterações. Use as seguintes etapas para alterar um proprietário materializado identificado por views:
Todos os ativos do gasoduto, incluindo os views materializados definidos no gasoduto, são de propriedade do novo proprietário do gasoduto. Todas as atualizações futuras são executadas usando a identidade do novo proprietário.
Os views materializados suportam controles de acesso avançados para dar suporte ao compartilhamento de dados, evitando a exposição de dados potencialmente privados. Um proprietário de exibição materializado ou um usuário com o privilégio MANAGE
pode grantSELECT
privilégios a outros usuários. Utilizadores com acesso SELECT
à vista materializada não necessitam de acesso SELECT
ao tables referenciado na vista materializada. Esse controle de acesso permite o compartilhamento de dados enquanto controla o acesso aos dados subjacentes.
Para grant aceder a uma vista materializada, use a instrução GRANT
.
GRANT
privilege_type [, privilege_type ] ...
ON <mv_name> TO principal;
O privilege_type pode ser:
SELECT
- o usuário pode SELECT
a visão materializada.REFRESH
- o usuário pode REFRESH
a visão materializada. As atualizações são executadas usando as permissões do proprietário.O exemplo a seguir cria uma exibição materializada e concede privilégios de select e refresh a um usuário:
CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;
Para aceder a revoke a partir de uma visão materializada, use a instrução REVOKE
.
REVOKE
privilege_type [, privilege_type ]
ON <name> FROM principal;
Quando os privilégios SELECT
numa base table são revogados do proprietário da vista materializada ou de qualquer outro utilizador que tenha recebido privilégios MANAGE
ou SELECT
sobre a vista materializada, ou se a base table for eliminada, o proprietário da vista materializada ou o utilizador com acesso concedido ainda podem consultar a vista materializada. No entanto, ocorre o seguinte comportamento:
REFRESH
essa visão materializada, e a visão materializada se tornará obsoleta.REFRESH
falha ou não é executada.O exemplo a seguir revoga o SELECT
privilégio de mv1
:
REVOKE SELECT ON mv1 FROM user1;
O feed de dados de alteração é necessário no tablesbase de views materializado, exceto para certos casos de uso avançados. Para ativar o feed de dados de alteração em uma tablebase, set a propriedade delta.enableChangeDataFeed
table usando a seguinte sintaxe:
ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Para exibir o status das operações de REFRESH
em uma exibição materializada, incluindo atualizações atuais e passadas, consulte o log de eventos do Delta Live Tables:
SELECT
*
FROM
event_log(TABLE(<fully-qualified-table-name>))
WHERE
event_type = "update_progress"
ORDER BY
timestamp desc;
Substitua <fully-qualified-table-name>
pelo nome totalmente qualificado da visão materializada, incluindo o catalog e schema.
Veja O que é o log de eventos do Delta Live Tables?.
NULL
e apenas NULL
values permanecem nesse column, o valor agregado materializado do views resultante é zero em vez de NULL
.COUNT(DISTINCT field_a)
cláusula. Embora a definição da vista materializada inclua apenas a cláusula agregada COUNT DISTINCT
, os arquivos subjacentes conterão um list do values real de field_a
.evento
Junte-se a nós na FabCon Vegas
31/03, 23 - 2/04, 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registe-se hoje mesmo