Usar a visualização materializada em Databricks SQL
Observação
Se precisar usar uma conexão AWS PrivateLink com o seu view materializado, entre em contato com o seu representante Databricks.
Este artigo descreve como criar e usar a visualização materializada em Databricks SQL para melhorar o desempenho e reduzir o custo de suas cargas de trabalho de análise e processamento de dados.
Importante
As visualizações materializadas criadas em Databricks SQL são apoiadas por um serverless Delta Live Tables pipeline. Seu site workspace deve ser compatível com o pipeline serverless para usar essa funcionalidade.
O que são visualizações materializadas?
Em Databricks SQL, a visualização materializada é Unity Catalog gerenciar tabelas que permitem aos usuários pré-calcular resultados com base na versão mais recente dos dados nas tabelas de origem. A visualização materializada em Databricks difere de outras implementações, pois os resultados retornados refletem o estado dos dados quando a visualização materializada view foi atualizada pela última vez, em vez de sempre atualizar os resultados quando a visualização materializada view é consultada. O senhor pode acessar manualmente refresh materialized view ou programar a atualização.
A visualização materializada é poderosa 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 reduz o custo e melhora a latência da consulta ao pré-computar consultas lentas e cálculos usados com frequência. A visualização materializada também permite transformações fáceis de usar, limpando, enriquecendo e desnormalizando tabelas de base. A visualização materializada pode reduzir os custos e, ao mesmo tempo, proporcionar uma experiência simplificada ao usuário final, pois, em alguns casos, ela pode incrementar compute alterações nas tabelas de base.
A visualização materializada foi suportada pela primeira vez em Databricks com o lançamento do Delta Live Tables. Quando o senhor cria um view materializado em um depósito Databricks SQL, é criado um serverless pipeline é criado para processar a atualização para o view materializado. O senhor pode monitorar o status de refresh operações na UI Delta Live Tables ou no pipeline API. Veja a visualização do status de um site materializado view refresh .
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.
Seu workspace deve estar em uma região que ofereça suporte a serverless SQL warehouse.
O senhor deve ter aceitado os termos de uso do serverless.
Para consultar a exibição materializada:
O senhor deve ser o proprietário do site materializado view, ou ter
SELECT
no site materializado view, juntamente comUSE SCHEMA
eUSE CATALOG
em seus pais.O senhor deve usar um dos seguintes compute recurso:
Armazém SQL
Delta Live Tables interfaces
Modo de acesso compartilhado compute
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 computação de usuário único.
Somente se o senhor for o proprietário do materializado view: um recurso compute de modo de acesso de usuário único que esteja executando o Databricks Runtime entre as versões 14.3 e 15.3.
Para saber mais sobre outras restrições ao uso da visualização materializada, consulte Limitações.
Criar uma visualização materializada
Databricks SQL As operações materializadas view CREATE
usam um armazém Databricks SQL para criar e carregar dados no view materializado. A criação de um view materializado é uma operação síncrona, o que significa que o comando CREATE MATERIALIZED VIEW
bloqueia até que o view materializado seja criado e a carga inicial de dados seja concluída. Um serverless Delta Live Tables pipeline é criado automaticamente para cada Databricks SQL materializado view. Quando o view materializado é atualizado, o Delta Live Tables 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.
Observação
O usuário que cria um view materializado é o proprietário do view materializado e precisa 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 esquema de destino para o materializado view.CREATE TABLE
eCREATE MATERIALIZED VIEW
privilégios no esquema que contém o materializado view.
O exemplo a seguir cria o site materializado view mv1
a partir da tabela base base_table1
:
CREATE MATERIALIZED VIEW mv1
AS SELECT
date, sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Definir o canal de tempo de execução
A visualização materializada criada usando o warehouse SQL é atualizada automaticamente usando um Delta Live Tables pipeline. Delta Live Tables O pipeline usa o tempo de execução no canal current
por default. Consulte Delta Live Tables notas sobre a versão e o processo de upgrade de versão para saber mais sobre o processo de versão.
A Databricks recomenda o uso do canal current
para cargas de trabalho de produção. Os novos recursos são liberados primeiro no canal preview
. O senhor pode definir um pipeline para a visualização do canal Delta Live Tables para testar o novo recurso especificando preview
como uma propriedade de tabela. Você pode especificar essa propriedade ao criar a tabela ou após a criação da tabela usando uma instrução ALTER.
O exemplo de código a seguir mostra como definir o canal para visualização em uma instrução CREATE:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
Carregar dados de sistemas externos
Databricks recomenda o carregamento de dados de uso externo lakehouse Federation para fontes de dados compatíveis. Para obter informações sobre o carregamento de dados de fontes não suportadas pela lakehouse Federation, consulte Opções de formato de dados.
Atualizar uma visão materializada
As operações REFRESH
atualizam o site materializado view para refletir as últimas alterações na tabela base. As operações são síncronas pelo default, o que significa que o comando bloqueia até que as operações do refresh sejam concluídas. Para refresh um view materializado, use a instrução REFRESH MATERIALIZED VIEW
. 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.
Somente o proprietário pode REFRESH
o materializado view.
O exemplo a seguir atualiza o mv1
materializado view:
REFRESH MATERIALIZED VIEW mv1;
Como a visualização materializada Databricks SQL é atualizada?
A visualização materializada cria e usa automaticamente o serverless Delta Live Tables pipeline para processar refresh operações. O refresh é gerenciado pelo Delta Live Tables 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 Delta Live Tables pipeline que é executado em um programa. Consulte Modo de pipeline acionado vs. contínuo.
Observação
O tempo de execução do Delta Live Tables não consegue detectar alterações em fontes de dados que não sejamDelta. A tabela ainda é atualizada regularmente, mas com um intervalo de acionamento default mais alto para evitar que a recomputação excessiva diminua a velocidade de qualquer processamento incremental que esteja ocorrendo em compute.
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. 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 o próximo passo, 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 programar e orquestrar fluxo de trabalho.
Assíncrono: Um refresh assíncrono começa um trabalho em segundo plano no Delta Live Tables 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.
Algumas consultas podem ser atualizadas de forma incremental. Consulte Incremental refresh para visualização materializada. Se não for possível executar um refresh incremental, será executado um refresh completo.
programar materializado view refresh
O senhor pode configurar uma Databricks SQL materializada view para refresh automaticamente com base em um programa definido. Para definir um programar, faça uma das seguintes opções:
Configure o programar com a cláusula
SCHEDULE
quando o senhor criar o arquivo materializado viewAdicione um programador com a instrução ALTER MATERIALIZED VIEW.
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:
Executar a instrução
DESCRIBE EXTENDED
do editor SQL na UI Databricks.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?.
view O status de um site materializado view refresh
Observação
Como um Delta Live Tables pipeline gerenciar materializado view refresh, há uma latência incorrida pelo startup tempo para o pipeline. Esse tempo pode ser de segundos a minutos, além do tempo necessário para executar o refresh.
O senhor pode view o status de um materializado view refresh visualizando o pipeline que gerenciar o materializado view na interface do usuário Delta Live Tables ou visualizando as informaçõesrefresh retornadas pelo comando DESCRIBE EXTENDED
para o materializado view.
O senhor também pode view a refresh história de uma view materializada consultando o evento Delta Live Tables log. Consulte view a refresh história para uma viewmaterializada.
Monitorar a execução usando o histórico de consultas
O senhor pode usar a página de histórico de consultas para acessar detalhes e perfis de consultas que podem ajudá-lo a identificar consultas com baixo desempenho e gargalos no site Delta Live Tables pipeline usado para executar as atualizações da tabela de transmissão. Para obter uma visão geral do tipo de informação disponível para histórico de consultas e perfis de consultas, consulte Histórico de consultas e Perfil de consultas.
Prévia
Este recurso está em Visualização pública. Os administradores do espaço de trabalho podem ativar esse recurso na página Pré-visualizações. Consulte Manage Databricks Previews.
Todas as declarações relacionadas à visualização materializada aparecem no histórico de consultas. O senhor pode usar o filtro suspenso Statement (Declaração ) para selecionar qualquer comando e inspecionar as consultas relacionadas. Todas as instruções CREATE
são seguidas por uma instrução REFRESH
que é executada de forma assíncrona em um pipeline do Delta Live Tables. As declarações do REFRESH
normalmente incluem planos de consulta detalhados que fornecem percepções sobre a otimização do desempenho.
Para acessar REFRESH
statements na UI do histórico de consultas, use os seguintes passos:
Clique em na barra lateral esquerda para abrir a Query History UI.
Selecione a caixa de seleção REFRESH no filtro suspenso Statement (Declaração ).
Clique no nome da instrução de consulta para acessar view detalhes resumidos, como a duração da consulta e as métricas agregadas.
Clique em Ver perfil de consulta para abrir o perfil de consulta. Para obter detalhes sobre como navegar pelo perfil de consulta, consulte Perfil de consulta.
Opcionalmente, use os links na seção Fonte da consulta para abrir a consulta ou o pipeline relacionado.
Observação
Seu view materializado deve ser configurado para execução usando o canal de visualização. Consulte Definir o canal de tempo de execução.
Consulte CREATE MATERIALIZED VIEW.
Visualize o status de atualização na UI do Delta Live Tables
Por default, o Delta Live Tables pipeline que gerencia um view materializado não é visível na interface do usuário Delta Live Tables. Para view o pipeline na interface do usuário Delta Live Tables, o senhor deve acessar diretamente o link para a página de detalhes pipeline 'spipeline. Para acessar o link:
Copie e cole o link mostrado na linha Latest refresh (Última atualização) da tabela retornada pela instrução
DESCRIBE EXTENDED
.Na linhagem tab para o view materializado, clique em pipeline e, em seguida, no link pipeline.
Para comandos assíncronos REFRESH
enviados usando o editor SQL na interface do usuário Databricks, o senhor pode view o status refresh seguindo o link mostrado no painel Results (Resultados ).
Interromper uma atualização ativa
Para interromper um refresh ativo na interface do usuário do Delta Live Tables, na página de detalhes dopipeline , 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}/stop operações em andamento API.
Atualizar a definição de uma visualização materializada
Para atualizar a definição de um site materializado view, o senhor deve primeiro descartar e depois recriar o site materializado view.
Soltar uma visualização materializada
Observação
Para enviar o comando para eliminar um view materializado, o senhor deve ser o proprietário desse view materializado.
Para eliminar uma visualização materializada, use a instrução DROP VIEW. 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;
Descrever uma visualização materializada
Para recuperar as colunas e os tipos de dados de um site materializado view, use a instrução DESCRIBE
. Para recuperar as colunas, os tipos de dados e os metadados, como proprietário, local, hora de criação e status refresh de um site materializado view, use DESCRIBE EXTENDED
. Para enviar uma instrução DESCRIBE
, use o editor SQL na interface do usuário do Databricks, a CLI do Databricks SQL ou a API do Databricks SQL.
Alterar o proprietário de uma visão materializada
O senhor pode alterar o proprietário de um view materializado se for um administrador do metastore e um administrador do workspace. A visualização materializada cria e usa automaticamente o pipeline Delta Live Tables para processar alterações. Use os seguintes passos para alterar o proprietário de uma visualização materializada:
Na linhagem tab para o view materializado, clique em pipeline e, em seguida, no link pipeline.
Clique no menu kebab à direita do nome do pipeline e clique em Permissions (Permissões). Isso abre a caixa de diálogo de permissões.
Clique no x à direita do nome do proprietário atual para remover o proprietário atual.
comece a digitar para filtrar a lista de usuários disponíveis. Clique no usuário que deve ser o novo proprietário do pipeline.
Clique em Save para salvar as alterações e fechar a caixa de diálogo.
Todos os pipeline ativos, incluindo a visualização materializada definida no pipeline, são de propriedade do novo proprietário do pipeline. Todas as atualizações futuras serão executadas usando a identidade do novo proprietário.
Controle o acesso à visualização materializada
As visualizações materializadas oferecem suporte a controles de acesso avançados para o compartilhamento de dados, evitando a exposição de dados potencialmente privados. Um proprietário de view materializado pode conceder SELECT
privilégios a outros usuários. Os usuários com acesso SELECT
ao site materializado view não precisam de acesso SELECT
às tabelas referenciadas pelo site materializado view. Esse controle de acesso permite o compartilhamento de dados e, ao mesmo tempo, controla o acesso aos dados subjacentes.
Conceder privilégios a uma visão materializada
Para conceder acesso a um site materializado view, use a instrução GRANT
:
GRANT
privilege_type [, privilege_type ] ...
ON <mv_name> TO principal;
O privilege_type pode ser:
SELECT
- O usuário podeSELECT
o materializado view.REFRESH
- O usuário podeREFRESH
o materializado view. As atualizações são executadas usando as permissões do proprietário.
O exemplo a seguir cria um site materializado view e concede privilégios 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;
Revogar privilégios de uma visualização materializada
Para revogar o acesso de um site materializado view, use a instrução REVOKE
:
REVOKE
privilege_type [, privilege_type ]
ON <name> FROM principal;
Quando SELECT
privilégios em uma tabela de base são revogados do proprietário da view materializada ou de qualquer outro usuário que tenha recebido SELECT
privilégios para a view materializada, ou a tabela de base é descartada, o proprietário da view materializada ou o usuário ao qual foi concedido acesso ainda pode consultar a view materializada. No entanto, ocorre o seguinte comportamento:
O proprietário do view materializado ou outras pessoas que perderam o acesso a um view materializado não podem mais
REFRESH
esse view materializado, e o view materializado se tornará obsoleto.Se automatizado com um programar, o próximo
REFRESH
programado falha ou não é executado.
O exemplo a seguir revoga o privilégio SELECT
de mv1
:
REVOKE SELECT ON mv1 FROM user1;
Ativar feed de dados de alteração
É necessário alterar o feed de dados nas tabelas de base da visualização materializada, exceto em determinados casos de uso avançado. Para ativar o feed de dados de alteração em uma tabela base, defina a propriedade delta.enableChangeDataFeed
table usando a seguinte sintaxe:
ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
view O refresh história para um senhor materializado view
Para view o status de REFRESH
operações em um view materializado, incluindo a atualização atual e passada, consulte o evento Delta Live Tables log:
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 do site materializado view, incluindo o catálogo e o esquema.
Consulte O que é o registro de eventos do Delta Live Tables?
Limitações
Para obter os requisitos dos sites compute e workspace, consulte Requisitos.
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 apenasNULL
valores permanecerem nessa coluna, o valor agregado resultante da visualização materializada será zero em vez deNULL
.O senhor não pode ler um feed de dados de alteração em um site materializado view.
As 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 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 view materializado inclua uma cláusula
COUNT(DISTINCT field_a)
. Embora a definição do view materializado inclua apenas a cláusula aggregateCOUNT DISTINCT
, os arquivos subjacentes conterão uma lista dos valores reais defield_a
.