Partilhar via


Materialização para vistas métricas

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:

Definição de materialização de visualizações métricas e 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: aggregated e unaggregated.
      • Se type for aggregated, deve haver pelo menos uma dimensão ou medida.
      • Se type for unaggregated, nenhuma dimensão ou medida deve ser definida.

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_MODE ou TIMEZONE).
  • 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:

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.

Reescrita de consultas consciente de agregados

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:

  1. Primeiro tenta uma correspondência exata.
  2. Se existir uma materialização não agregada, tenta uma correspondência não agregada.
  3. 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.