Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
Este recurso é Experimental.
Este artigo explica como usar a materialização para visualizações métricas para acelerar o desempenho das consultas.
A materialização para visualizações métricas acelera consultas através do uso de visualizações materializadas. O Lakeflow Spark Declarative Pipelines orquestra vistas materializadas definidas pelo utilizador para uma dada vista métrica. No momento da consulta, o otimizador de consultas encaminha inteligentemente as consultas do utilizador na vista métrica para a melhor vista materializada, utilizando correspondência automática de consultas com reconhecimento de agregados, também conhecida como reescrita de consultas.
Esta abordagem oferece os benefícios da pré-computação e das atualizações incrementais automáticas, pelo que não precisa de determinar qual tabela de agregação ou vista materializada consultar para diferentes objetivos de desempenho, e elimina a necessidade de gerir pipelines de produção separados.
Visão geral
O diagrama seguinte ilustra como as visualizações métricas gerem a definição e a execução de consultas:
Fase de definição
Quando defines uma vista métrica com materialização, CREATE METRIC VIEW ou ALTER METRIC VIEW especificas as tuas dimensões, medidas e calendário de atualização. O Databricks cria um pipeline gerido que mantém as visualizações materializadas.
Execução da consulta
Quando executa SELECT ... FROM <metric_view>, o otimizador de consultas utiliza a reescrita de consultas sensível a agregados para otimizar o desempenho:
- Caminho rápido: Lê de vistas materializadas pré-computadas quando aplicável.
- Caminho de reserva: Lê diretamente dos dados de origem quando as materializações não estão disponíveis.
O otimizador de consultas equilibra automaticamente o desempenho e a novidade, escolhendo entre dados materializados e de origem. Recebe resultados de forma transparente, independentemente do caminho utilizado.
Requerimentos
Para usar a materialização para vistas métricas:
- O seu espaço de trabalho deve ter computação serverless ativada. Isto é necessário para executar os Lakeflow Spark Declarative Pipelines.
- Databricks Runtime 17.2 ou superior.
Referência de configuração
Toda a informação relacionada com materialização é definida num campo de topo denominado materialization na definição YAML da vista métrica.
Observação
À medida que esta funcionalidade é lançada, as visualizações métricas da versão 1.1 com materialização podem produzir o seguinte erro no pipeline subjacente:
[METRIC_VIEW_INVALID_VIEW_DEFINITION] The metric view definition is invalid. Reason: Invalid YAML version: 1.1.
Se isto acontecer, use a versão 0.1 em vez disso. Note que a versão 0.1 não suporta algumas funcionalidades disponíveis na versão 1.1. A materialização para visualizações métricas estará disponível em todos os espaços de trabalho nas próximas semanas.
O materialization campo contém os seguintes campos obrigatórios:
- schedule: Suporta a mesma sintaxe da cláusula schedule nas visualizações materializadas.
-
modo: Deve ser definido para
relaxed. -
materialized_views: Uma lista de opiniões materializadas a concretizar.
- nome: O nome da materialização.
- Dimensões: Uma lista de dimensões a materializar. São permitidas apenas referências diretas a nomes de dimensões; As expressões não são suportadas.
- medidas: Uma lista de medidas a concretizar. São permitidas apenas referências diretas aos nomes das medidas; As expressões não são suportadas.
-
tipo: Especifica se a vista materializada é agregada ou não. Aceita dois valores possíveis:
aggregatedeunaggregated.- Se
typeforaggregated, deve haver pelo menos uma dimensão ou medida. - Se
typeforunaggregated, nenhuma dimensão ou medida deve ser definida.
- Se
Observação
A TRIGGER ON UPDATE cláusula não é suportada para materialização em vistas métricas.
Exemplo de definição
version: 0.1
source: prod.operations.orders_enriched_view
filter: revenue > 0
dimensions:
- name: category
expr: substring(category, 5)
- name: color
expr: color
measures:
- name: total_revenue
expr: SUM(revenue)
- name: number_of_suppliers
expr: COUNT(DISTINCT supplier_id)
materialization:
schedule: every 6 hours
mode: relaxed
materialized_views:
- name: baseline
type: unaggregated
- name: revenue_breakdown
type: aggregated
dimensions:
- category
- color
measures:
- total_revenue
- name: suppliers_by_category
type: aggregated
dimensions:
- category
measures:
- number_of_suppliers
Mode
No relaxed modo, a reescrita automática da consulta só verifica se as visualizações materializadas candidatas têm as dimensões e medidas necessárias para servir a consulta.
Isto significa que várias verificações são ignoradas:
- Não há verificações sobre se a visualização materializada está atualizada.
- Não há verificações sobre se tens definições SQL correspondentes (por exemplo,
ANSI_MODEouTIMEZONE). - Não há verificações sobre se a visão materializada devolve resultados determinísticos.
Se a consulta incluir alguma das seguintes condições, a reescrita da consulta não ocorre e a consulta volta às tabelas de origem:
- Segurança ao nível de linha (RLS) ou mascaramento ao nível de coluna (CLM) em visões materializadas.
- Funções não determinísticas, como
current_timestamp()nas visões materializadas. Estes podem aparecer na definição da vista métrica ou numa tabela de origem usada pela vista métrica.
Observação
Durante o período experimental de lançamento, relaxed é o único modo suportado. Se estas verificações falharem, a consulta volta aos dados de origem.
Tipos de materializações para vistas métricas
As secções seguintes explicam os tipos de vistas materializadas disponíveis para vistas métricas.
Tipo agregado
Este tipo pré-calcula agregações para combinações específicas de medidas e dimensões para cobertura direcionada.
Isto é útil para direcionar padrões de consulta de agregação comuns ou widgets específicos. O Databricks recomenda incluir colunas potenciais de filtro como dimensões na configuração de visualização materializada. Colunas de filtro potencial são colunas usadas no momento da consulta na WHERE cláusula.
Tipo não agregado
Este tipo materializa todo o modelo de dados não agregados (por exemplo, os campos source, join e filter) para uma cobertura mais ampla com menos impacto no desempenho em comparação com o tipo agregado.
Use este tipo quando o seguinte é verdadeiro:
- A fonte é uma visualização dispendiosa ou uma consulta SQL.
- As junções definidas na tua vista métrica são caras.
Observação
Se a sua fonte for uma referência direta a uma tabela sem um filtro seletivo aplicado, uma vista não agregada materializada pode não trazer benefícios.
Ciclo de vida da materialização
Esta secção explica como as materializações são criadas, geridas e atualizadas ao longo do seu ciclo de vida.
Criar e modificar
A criação ou modificação de uma vista métrica (usando CREATE, ALTER, ou Explorador de Catálogo) ocorre de forma síncrona. As vistas materializadas especificadas materializam-se de forma assíncrona usando Lakeflow Spark Declarative Pipelines.
Quando cria uma vista métrica, o Databricks cria um pipeline Lakeflow Spark Declarative Pipelines e agenda uma atualização inicial imediatamente se forem especificadas vistas materializadas. A visualização métrica mantém-se consultável sem materializações, recorrendo a consultas dos dados de origem.
Quando modifica uma vista métrica, não são agendadas novas atualizações, a menos que esteja a ativar a materialização pela primeira vez. As visualizações materializadas não são usadas para reescrita automática de consultas até que a próxima atualização agendada esteja completa.
Alterar o calendário de materialização não desencadeia uma atualização.
Consulte atualização manual para um controlo mais preciso do comportamento da atualização.
Inspecionar pipeline subjacente
A materialização para vistas métricas é implementada usando Lakeflow Spark Declarative Pipelines. Um link para o pipeline está presente no separador Overview do Explorador de Catálogos. Para saber como aceder ao Explorador de Catálogos, veja O que é o Explorador de Catálogos?.
Também pode aceder a este pipeline executando DESCRIBE EXTENDED na vista métrica. A secção Informação de Atualização contém um link para o pipeline.
DESCRIBE EXTENDED my_metric_view;
Exemplo de saída:
-- Returns additional metadata such as parent schema, owner, access time etc.
> DESCRIBE TABLE EXTENDED customer;
col_name data_type comment
------------------------------- ------------------------------ ----------
... ... ...
# Detailed Table Information
... ...
Language YAML
Table properties ...
# Refresh information
Latest Refresh status Succeeded
Latest Refresh https://...
Refresh Schedule EVERY 3 HOURS
Atualização manual
A partir do link para a página Lakeflow Spark Declarative Pipelines, pode iniciar manualmente uma atualização do oleoduto para atualizar as materializações. Também pode orquestrar isto usando uma chamada API baseada no ID do pipeline.
Por exemplo, o seguinte script em Python inicia uma atualização do pipeline:
from databricks.sdk import WorkspaceClient
client = WorkspaceClient()
pipeline_id = "01484540-0a06-414a-b10f-e1b0e8097f15"
client.pipelines.start_update(pipeline_id)
Para executar uma atualização manual como parte de um trabalho Lakeflow, crie um script Python com a lógica acima e adicione-o como uma tarefa do tipo script Python. Pode, em alternativa, criar um caderno com a mesma lógica e adicionar uma tarefa do tipo Caderno.
Atualização incremental
As vistas materializadas utilizam atualização incremental sempre que possível, e apresentam as mesmas limitações quanto às fontes de dados e à estrutura do plano.
Para detalhes sobre pré-requisitos e restrições, consulte Atualização incremental para visualizações materializadas.
Reescrita automática de consultas
As consultas para uma vista métrica com materialização tentam usar as suas materializações tanto quanto possível. Existem duas estratégias de reescrita de consultas: correspondência exata e correspondência não agregada.
Quando consulta uma vista de métricas, o otimizador analisa a consulta e as materializações disponíveis definidas pelo utilizador. A consulta é executada automaticamente na materialização otimizada em vez das tabelas base, usando este algoritmo:
- Primeiro tenta uma correspondência exata.
- Se existir uma materialização não agregada, tenta uma correspondência não agregada.
- Se a reescrita falhar, a consulta é lida diretamente das tabelas de origem.
Observação
As materializações têm de estar completas antes que a reescrita da consulta possa ter efeito.
Verifique se a consulta está a usar vistas materializadas
Para verificar se uma consulta está a usar uma vista materializada, execute EXPLAIN EXTENDED na sua consulta para ver o plano de consulta. Se a consulta estiver a usar vistas materializadas, o nó folha inclui __materialization_mat___metric_view e o nome da materialização do ficheiro YAML.
Alternativamente, o perfil de consulta mostra a mesma informação.
Correspondência exata
Para ser elegível para a estratégia de correspondência exata, as expressões de agrupamento da consulta devem corresponder precisamente às dimensões de materialização. As expressões de agregação da consulta devem ser um subconjunto das medidas de materialização.
Jogo não agregado
Se existir uma materialização não agregada disponível, esta estratégia é sempre elegível.
Billing
As vistas materializadas atualizadas incorrem em taxas de utilização do Lakeflow Spark Declarative Pipelines.
Restrições conhecidas
As seguintes restrições aplicam-se à materialização para vistas métricas:
- Uma vista métrica com materialização que se refere a outra vista métrica como fonte não pode ter uma materialização não agregada.