Compartilhar via


Materialização para exibições de métrica

Importante

Esse recurso é experimental.

Este artigo explica como usar a materialização para exibições de métrica para acelerar o desempenho da consulta.

A materialização para exibições de métrica acelera as consultas usando exibições materializadas. O Lakeflow Spark Declarative Pipelines orquestra exibições materializadas definidas pelo usuário para uma determinada exibição de métrica. No momento da consulta, o otimizador de consulta roteia de forma inteligente consultas de usuário na exibição de métrica para a melhor exibição materializada usando a correspondência automática de consulta com reconhecimento agregado, também conhecida como reescrita de consulta.

Essa abordagem fornece os benefícios da pré-computação e das atualizações incrementais automáticas, de forma que você não precise determinar qual tabela de agregação ou visão materializada consultar para diferentes metas de desempenho, eliminando a necessidade de gerenciar pipelines de produção separados.

Visão geral

O diagrama a seguir ilustra como as exibições de métrica lidam com a definição e a execução da consulta:

Definição de materialização de visualizações de métricas e execução de consulta

Fase de definição

Quando você define uma exibição de métrica com materialização CREATE METRIC VIEW ou ALTER METRIC VIEW especifica suas dimensões, medidas e agendamento de atualização. O Databricks cria um pipeline gerenciado que mantém as exibições materializadas.

Execução de consulta

Quando você executa SELECT ... FROM <metric_view>, o otimizador de consulta usa a reescrita de consulta sensível a agregados para otimizar o desempenho:

  • Caminho rápido: Efetua leituras de visões materializadas pré-computadas quando cabível.
  • Caminho de fallback: leituras de dados de origem diretamente quando as materializações não estão disponíveis.

O otimizador de consulta equilibra automaticamente o desempenho e a atualização escolhendo entre dados materializados e de origem. Você recebe resultados de forma transparente, independentemente de qual caminho é usado.

Requirements

Para usar a materialização para exibições de métrica:

  • Seu workspace deve ter a computação sem servidor habilitada. Isso é necessário para executar o Lakeflow Spark Declarative Pipelines.
  • Databricks Runtime 17.2 ou superior.

Referência de configuração

Todas as informações relacionadas à materialização são definidas em um campo de nível superior nomeado materialization na definição YAML de visão de métrica.

Observação

À medida que esse recurso está sendo implementado, as exibições de métricas na versão 1.1 com materialização podem gerar o seguinte erro no pipeline subjacente:

[METRIC_VIEW_INVALID_VIEW_DEFINITION] The metric view definition is invalid. Reason: Invalid YAML version: 1.1.

Se isso ocorrer, use a versão 0.1. Observe que a versão 0.1 não dá suporte a alguns recursos disponíveis na versão 1.1. A materialização para vistas de métricas estará disponível em todos os workspaces nas próximas semanas.

O materialization campo contém os seguintes campos necessários:

  • cronograma: dá suporte à mesma sintaxe que a cláusula de cronograma em visões materializadas.
  • modo: Deve ser definido como relaxed.
  • materialized_views: uma lista de exibições materializadas a serem materializadas.
    • nome: nome da materialização.
    • dimensões: uma lista de dimensões a serem materializadas. Somente referências diretas a nomes de dimensão são permitidas; não há suporte para expressões.
    • medidas: uma lista de medidas a serem materializadas. Somente referências diretas a nomes de medida são permitidas; não há suporte para expressões.
    • tipo: especifica se a exibição 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 uma medida.
      • Se type for unaggregated, nenhuma dimensão nem medida deve ser definida.

Observação

A TRIGGER ON UPDATE cláusula não tem suporte para materialização para exibições de métrica.

Definição de exemplo

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 de consulta automática só verifica se as exibições materializadas candidatas têm as dimensões e medidas necessárias para atender à própria consulta.

Isso significa que várias verificações são ignoradas:

  • Não há verificações sobre se a exibição materializada está atualizada.
  • Não há verificações sobre se você tem configurações de SQL correspondentes (por exemplo, ANSI_MODE ou TIMEZONE).
  • Não há verificações sobre se a exibição materializada retorna resultados determinísticos.

Se a consulta incluir qualquer uma das seguintes condições, a reescrita da consulta não ocorrerá e a consulta retornará às tabelas de origem:

Observação

Durante o período de versão experimental, relaxed é o único modo com suporte. Se essas verificações falharem, a consulta retornará aos dados de origem.

Tipos de materializações para visões de métricas

As seções a seguir explicam os tipos de visões materializadas disponíveis para visões de métrica.

Tipo agregado

Esse tipo calcula previamente agregações para combinações de medida e dimensão especificadas para cobertura direcionada.

Isso é útil para direcionar padrões ou widgets de consulta de agregação comuns específicos. O Databricks recomenda incluir possíveis colunas de filtro como dimensões na configuração de exibição materializada. As colunas de filtro potenciais são colunas usadas no momento da consulta na WHERE cláusula.

Tipo não agregado

Esse tipo materializa todo o modelo de dados não agregado (por exemplo, os campos source, join e filter) para uma cobertura mais ampla com menor impacto no desempenho em comparação com o tipo agregado.

Use esse tipo quando o seguinte for verdadeiro:

  • A origem é uma visualização cara ou uma consulta SQL.
  • As junções definidas na exibição de métrica são caras.

Observação

Se sua origem for uma referência de tabela direta sem um filtro seletivo aplicado, uma exibição materializada não agregada poderá não fornecer benefícios.

Ciclo de vida de materialização

Esta seção explica como as materializações são criadas, gerenciadas e atualizadas durante todo o ciclo de vida.

Criar e modificar

A criação ou modificação de uma exibição de métrica (usando CREATE, ALTERou Gerenciador de Catálogos) ocorre de forma síncrona. As exibições materializadas especificadas materializam-se de forma assíncrona usando o Lakeflow Spark Declarative Pipelines.

Quando você cria uma exibição de métrica, o Databricks cria um pipeline do Lakeflow Spark Declarative Pipelines e agenda uma atualização inicial imediatamente se houver exibições materializadas especificadas. A visualização de métricas permanece consultável sem materializações, retornando à consulta dos dados de origem.

Quando você modifica uma exibição de métrica, nenhuma nova atualização é agendada, a menos que você esteja habilitando a materialização pela primeira vez. Visões materializadas não são usadas para reescrita automática de consultas até que a próxima atualização agendada seja concluída.

Alterar o agendamento de materialização não dispara uma atualização.

Consulte Atualização Manual para um controle mais preciso sobre o comportamento de atualização.

Inspecionar o pipeline (canalização) subjacente

A materialização para exibições de métrica é implementada usando o Lakeflow Spark Declarative Pipelines. Um link para o pipeline está presente na guia Visão Geral no Gerenciador de Catálogos. Para saber como acessar o Gerenciador de Catálogos, consulte o que é o Gerenciador de Catálogos?.

Você também pode acessar esse pipeline executando DESCRIBE EXTENDED na visão de métricas. A seção Atualizar Informações 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 de Pipelines Declarativos do Lakeflow Spark, você pode iniciar manualmente uma atualização de pipeline para executar uma atualização das materializações. Você também pode orquestrar isso usando uma chamada à API com base na ID do pipeline.

Por exemplo, o script Python a seguir inicia uma atualização de 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 do Lakeflow, crie um script Python com a lógica acima e adicione-o como uma tarefa do tipo script Python. Como alternativa, você pode criar um notebook com a mesma lógica e adicionar uma tarefa do tipo Notebook.

Atualização incremental

As exibições materializadas usam atualização incremental sempre que possível e têm as mesmas limitações em relação às fontes de dados e à estrutura do plano.

Para obter detalhes sobre pré-requisitos e restrições, consulte Atualização incremental para exibições materializadas.

Reescrita de consulta automática

Consultas a uma vista de métrica com materialização tentam usar suas materializações o máximo possível. Há duas estratégias de reescrita de consulta: correspondência exata e correspondência sem agregação.

Reescrita de consulta com reconhecimento agregado

Quando você consulta uma visão de métricas, o otimizador analisa a consulta e as materializações disponíveis definidas pelo usuário. A consulta é executada automaticamente na melhor forma de materialização em vez de usar as tabelas base, utilizando este algoritmo:

  1. Primeiramente, tenta encontrar uma correspondência exata.
  2. Se houver uma materialização não agregada, tenta uma correspondência não agregada.
  3. Se a reescrita de consulta falhar, a consulta lerá diretamente das tabelas de origem.

Observação

As materializações devem ser concluídas antes que a reescrita de consulta possa entrar em vigor.

Verificar se a consulta está usando visões materializadas

Para verificar se uma consulta está usando uma exibição materializada, execute EXPLAIN EXTENDED em sua consulta para ver o plano de consulta. Se a consulta estiver usando exibições materializadas, o nó folha inclui __materialization_mat___metric_view e o nome da materialização do arquivo YAML.

Como alternativa, o perfil de consulta mostra as mesmas informações.

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.

Correspondência não agregada

Se uma materialização não agregada estiver disponível, essa estratégia será sempre elegível.

Faturamento

A atualização de exibições materializadas incorre em encargos de uso do Lakeflow Spark Declarative Pipelines.

Restrições conhecidas

As seguintes restrições se aplicam à materialização para visões métricas:

  • Uma exibição de métrica com materialização que se refere a outra exibição de métrica como origem não pode ter uma materialização não agregada.