Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
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:
aggregatedeunaggregated.- Se
typeforaggregated, deve haver pelo menos uma dimensão ou uma medida. - Se
typeforunaggregated, nenhuma dimensão nem medida deve ser definida.
- Se
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_MODEouTIMEZONE). - 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:
- Segurança em nível de linha (RLS) ou Máscara em nível de coluna (CLM) em exibições materializadas.
- Funções não determinísticas, como
current_timestamp()em exibições materializadas. Elas podem aparecer na definição de visualização de métrica ou em uma tabela fonte usada pela visualização de métrica.
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.
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:
- Primeiramente, tenta encontrar uma correspondência exata.
- Se houver uma materialização não agregada, tenta uma correspondência não agregada.
- 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.