Partilhar via


Configurar exibições materializadas no Databricks SQL

Este artigo descreve como configurar exibições materializadas no Databricks SQL, incluindo controle de acesso nos resultados. A maioria das configurações pode ser feita quando você cria a exibição materializada com a instrução CREATE OR REPLACE MATERIALIZED VIEW, ou, após a criação, com a instrução ALTER TABLE.

Descrever uma visão materializada

Para recuperar as colunas e os tipos de dados para uma vista materializada, 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 de atualização de 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.

Obtenha informações detalhadas sobre visualizações materializadas com o Catalog Explorer

Como alternativa, você pode usar o Gerenciador de Catálogos para exibir detalhes sobre um modo de exibição materializado.

  1. Clique no ícone Dados.Catálogo na barra lateral.
  2. Na árvore do Catalog Explorer à esquerda, abra o catálogo e selecione o esquema onde sua exibição materializada está localizada.
  3. Abra o item Tabelas sob o esquema selecionado e clique na vista materializada.

A partir daqui, você pode usar as guias sob o nome do modo de exibição materializado para visualizar e editar informações sobre o modo de exibição materializado, incluindo:

  • Atualizar o status e a programação
  • Consulte os detalhes do pipeline para ver o histórico de atualizações, bem como logs detalhados para cada atualização. Clique em Ver detalhes da atualização no separador Visão geral para visualizar os detalhes do pipeline.
  • O esquema da tabela
  • Dados de amostra (requer um cálculo ativo)
  • Permissions
  • Linhagem, incluindo tabelas e condutas de que esta visão materializada depende
  • Informações sobre o uso
  • Monitores que você criou para essa exibição materializada

Há algumas propriedades da tabela que não estão disponíveis no Gerenciador de Catálogos. Para essas propriedades, ou para obter as informações programaticamente, você pode usar o comando DESCRIBE EXTENDED .

Atualizar a definição de uma visão materializada

A consulta que especifica a vista materializada é a sua definição. Para alterar a definição da vista materializada, edite a consulta ou crie uma nova consulta CREATE OR REPLACE MATERIALIZED VIEW com o mesmo nome de vista e, em seguida, execute-a. Uma atualização completa é executada para atualizar a exibição materializada, e outras atualizações usam a nova definição.

Controlar o acesso a vistas materializadas

As visualizações materializadas 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 vista materializada ou um utilizador com o privilégio MANAGE pode conceder privilégios SELECT a outros utilizadores. Os utilizadores com SELECT acesso à vista materializada não necessitam de SELECT aceder às tabelas referenciadas pela vista materializada. Esse controle de acesso permite o compartilhamento de dados enquanto controla o acesso aos dados subjacentes.

Também pode modificar o dono de uma vista materializada.

Conceder privilégios a uma visão materializada

Para conceder acesso a uma visão materializada, utilize a GRANT instrução:

GRANT <privilege_type> ON <mv_name> TO <principal>;

O "tipo de privilégio" 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 seleção e atualização aos usuários:

CREATE MATERIALIZED VIEW mv_name AS SELECT * FROM source_table;

-- Grant read-only access:
GRANT SELECT ON mv_name TO read_only_user;

-- Grand read and refresh access:
GRANT SELECT ON mv_name TO refresh_user;
GRANT REFRESH ON mv_name TO refresh_user;

Revogar privilégios de uma visão materializada

Para revogar o acesso a partir de uma visão materializada, use a REVOKE instrução:

REVOKE privilege_type ON <mv_name> FROM principal;

Quando os privilégios em uma tabela de origem SELECT são revogados do proprietário da exibição materializada ou de qualquer outro usuário que tenha recebido privilégios MANAGE ou SELECT na exibição materializada, ou a tabela de origem é eliminada, o proprietário da exibição materializada ou o usuário com acesso concedido ainda consegue consultar a exibição materializada. No entanto, ocorre o seguinte comportamento:

  • O dono da visão materializada ou outros que perderam o acesso a uma visão materializada não podem mais REFRESH essa visão materializada, e a visão materializada se tornará obsoleta.
  • Se automatizado com uma agenda, a próxima tarefa agendada REFRESH falha ou não é executada.

O exemplo a seguir revoga o SELECT privilégio de read_only_user:

REVOKE SELECT ON mv_name FROM read_only_user;

Alterar o proprietário de uma vista materializada

Um utilizador com MANAGE permissões sobre uma vista materializada definida no Databricks SQL pode definir um novo proprietário através do Explorador de Catálogos. O novo proprietário pode ser ele próprio ou um principal de serviço no qual tem o papel de Utilizador Principal de Serviço .

  1. A partir do seu espaço de trabalho Azure Databricks, clique no ícone de Dados.Catalogar para abrir o Explorador de Catálogos.

  2. Selecione a visualização materializada que pretende atualizar.

  3. Na barra lateral direita, em Sobre esta vista materializada, encontre o Proprietário e clique no ícone Lápis. editar.

    Observação

    Se receber uma mensagem que diz para atualizar o proprietário alterando o utilizador na opção Run as nas definições do pipeline, significa que a vista materializada está definida nos Lakeflow Spark Declarative Pipelines, não no SQL do Databricks. A mensagem inclui um link para as configurações do pipeline, onde é possível alterar o utilizador de execução.

  4. Selecione um novo proprietário para a visualização materializada.

    Os proprietários têm automaticamente privilégios de MANAGE e SELECT sobre as visualizações materializadas que possuem. Se estiver a definir uma entidade de serviço como proprietário de uma vista materializada que possui, e não tiver explicitamente privilégios SELECT ou MANAGE sobre a vista materializada, então esta alteração fará com que perca todo o acesso à vista materializada. Neste caso, é solicitado que conceda explicitamente esses privilégios.

    Selecione tanto Conceder GERIR como Conceder SELECT privilégios para aplicar isso no Guardar.

  5. Clica em Guardar para mudar o proprietário.

O proprietário da visualização materializada é atualizado. Todas as atualizações futuras são feitas usando a identidade do novo proprietário.

Quando o proprietário perde privilégios para tabelas de origem

Se você alterar o proprietário e o novo proprietário não tiver acesso às tabelas de origem (ou SELECT os privilégios forem revogados nas tabelas de origem subjacentes), os usuários ainda poderão consultar a exibição materializada. No entanto:

  • Não podem REFRESH a visão materializada.
  • A próxima atualização agendada da vista materializada falhará.

Perder o acesso aos dados de origem impede que as atualizações sejam feitas, mas não invalida imediatamente a possibilidade de ler a vista materializada existente.

Definir o canal de execução

As exibições materializadas criadas usando armazéns SQL são atualizadas automaticamente usando um pipeline. Os pipelines usam, por padrão, o tempo de execução no canal current. Consulte as notas de versão do Lakeflow Spark Declarative Pipelines e o processo de atualização da versão para saber mais sobre o processo de liberação.

A Databricks recomenda o uso do canal current para cargas de trabalho de produção. Novos recursos são lançados pela primeira vez no canal preview. Você pode definir um pipeline para o canal de visualização para testar novos recursos especificando preview como uma propriedade de tabela. Você pode especificar essa propriedade ao criar a tabela ou depois que a tabela for criada 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 sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
  AS ...

Para alterar o canal após a criação, use a ALTER TABLE instrução:

ALTER TABLE <table-name> SET TBLPROPERTIES ('pipelines.channel' = 'preview');