Partilhar via


Vistas métricas de modelo

As vistas métricas criam uma camada semântica para os seus dados, transformando tabelas e vistas em métricas de negócio padronizadas. Eles definem o que medir, como agregar e como segmentar. As vistas métricas garantem que todos os utilizadores da organização reportem o mesmo valor para o mesmo Indicador-Chave de Desempenho (KPI), eliminando relatórios inconsistentes e permitindo análises flexíveis em qualquer dimensão.

Para um exemplo completo com joins, dimensões, medidas e metadados do agente, veja Tutorial: Construa uma vista métrica completa com joins.

Componentes centrais

Uma vista métrica consiste nos seguintes elementos:

Componente Descrição Exemplo
Source A tabela base, vista ou consulta SQL que contém os dados. samples.tpch.orders
Dimensões Atributos de coluna usados para segmentar ou agrupar métricas. Categoria de produto, mês do pedido, região do cliente
Medidas Agregações de colunas que produzem métricas. COUNT(o_order_id) como Contagem de Encomendas, SUM(o_total_price) como Receita Total
Filtros Aplicavam-se condições aos dados de origem para definir o âmbito.
  • status = 'completed'
  • order_date > '2024-01-01'
Junta-se Relações entre tabelas, vistas e vistas métricas para enriquecer dados. Juntar orders tabela com customers tabela em customer_key

Definir uma fonte

Você pode usar um ativo semelhante a uma tabela ou uma consulta SQL como a fonte para sua exibição métrica. Deves ter pelo menos SELECT privilégios sobre qualquer ativo referenciado.

Um ativo semelhante a tabela é qualquer objeto do Unity Catalog que expõe um esquema tabular e suporta SELECT consultas, incluindo tabelas, vistas, vistas materializadas, tabelas de fluxo, tabelas estrangeiras, tabelas de sistema e vistas métricas.

Use um asset semelhante a uma tabela como fonte

Para usar um asset semelhante a uma tabela como fonte, especifique o nome totalmente qualificado. Por exemplo: samples.tpch.orders.

Use uma vista métrica como fonte

Pode usar uma vista métrica existente como fonte para uma nova vista métrica:

version: 1.1

source: views.examples.source_metric_view

dimensions:
  - name: Order month
    expr: '`Order Month`'

measures:
  - name: Latest order month
    expr: MAX(`Order month`)
  - name: Latest order year
    expr: "DATE_TRUNC('year', MEASURE(`Latest order month`))"

Ao usar uma exibição métrica como fonte, as mesmas regras de compatibilidade se aplicam para referenciar dimensões e medidas. Consulte Composabilidade.

Usar uma consulta SQL como fonte

Para usar uma consulta SQL, escreva o texto da consulta diretamente no YAML:

version: 1.1

source: SELECT * FROM samples.tpch.orders o LEFT JOIN samples.tpch.customer c ON o.o_custkey
  = c.c_custkey

dimensions:
  - name: Order key
    expr: o_orderkey

measures:
  - name: Order Count
    expr: COUNT(o_orderkey)

Observação

Ao usar uma consulta SQL como fonte com uma JOIN cláusula, defina restrições de chave primária e estrangeira nas tabelas subjacentes e use a RELY opção para um desempenho ótimo da consulta. Veja Declarar relações de chave primária e chave estrangeira e Otimização de consultas usando restrições de chave primária.

Dimensões

As dimensões são colunas usadas nas cláusulas SELECT, WHERE e GROUP BY no momento da consulta. Cada expressão deve retornar um valor escalar. As dimensões podem referenciar colunas a partir dos dados de origem ou dimensões previamente definidas na vista métrica. Cada dimensão é composta por duas componentes:

  • name: O pseudónimo da coluna
  • expr: Uma expressão SQL que faz referência aos dados de origem ou às dimensões previamente definidas na vista métrica

Medidas

As medidas são expressões que produzem resultados sem um nível pré-determinado de agregação. Devem ser expressos utilizando funções agregadas. As medidas podem referenciar campos base nos dados de origem, dimensões ou medidas definidas anteriormente. Cada medida consiste nas seguintes componentes:

  • name: O pseudónimo da medida
  • expr: Uma expressão SQL agregada que pode incluir funções agregadas SQL

O exemplo seguinte demonstra padrões comuns de medição para analisar dados de encomendas e receitas. Estes exemplos utilizam a tabela de encomendas TPC-H, que contém dados de transações de vendas, incluindo preços de encomenda (o_totalprice), identificadores de clientes (o_custkey), chaves de encomenda (o_orderkey), datas de encomenda (o_orderdate) e níveis de prioridade (o_orderpriority):

measures:
  # Simple count measure
  - name: Order Count
    expr: COUNT(1)

  # Sum aggregation measure
  - name: Total Revenue
    expr: SUM(o_totalprice)

  # Distinct count measure
  - name: Unique Customers
    expr: COUNT(DISTINCT o_custkey)

  # Calculated measure combining multiple aggregations
  - name: Average Order Value
    expr: SUM(o_totalprice) / COUNT(DISTINCT o_orderkey)

  # Filtered measure with WHERE condition
  - name: High Priority Order Revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderpriority = '1-URGENT')

  # Measure using a dimension
  - name: Average Revenue per Month
    expr: SUM(o_totalprice) / COUNT(DISTINCT DATE_TRUNC('MONTH', o_orderdate))

Consulte Agregar funções para obter uma lista de funções agregadas.

Aplicar filtros

Um filtro na definição YAML aplica-se a todas as consultas que referenciam a vista métrica. O exemplo seguinte mostra como escrever filtros como expressões booleanas:

# Single condition
filter: o_orderdate > '2024-01-01'

# Multiple conditions
filter: o_orderdate > '2024-01-01' AND o_orderstatus = 'F'

# IN clause
filter: o_orderstatus IN ('F', 'P') AND o_orderdate >= '2024-01-01'

Trabalho com junções

Junções em vistas métricas suportam tanto junções diretas de uma tabela de factos para tabelas de dimensões (esquema estrela) como junções multi-etapas através de tabelas de dimensões normalizadas (esquemas floco de neve).

Observação

As tabelas unidas não podem incluir MAP colunas de texto. Veja como desempacotar valores de colunas do tipo MAP, em Explodir elementos aninhados de um mapa ou array.

Esquemas de estrela modelo

Em um esquema em estrela, o source é a tabela de fatos e se une a uma ou mais tabelas de dimensão usando um LEFT OUTER JOINarquivo . As vistas métricas juntam as tabelas de factos e dimensões necessárias para a consulta específica, com base nas dimensões e medidas selecionadas.

Especifique colunas de junção usando uma on cláusula (expressão booleana) ou uma using cláusula (nomes partilhados das colunas). A união deve seguir uma relação muitos-para-um. Em casos de muitos-para-muitos, a primeira linha correspondente da tabela de dimensão unida é selecionada.

O exemplo seguinte liga orders (tabela de factos) a customer (tabela de dimensões) e expõe os atributos do cliente como dimensões:

version: 1.1
source: samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    on: source.o_custkey = customer.c_custkey

dimensions:
  - name: Customer name
    expr: customer.c_name
  - name: Customer market segment
    expr: customer.c_mktsegment

measures:
  - name: Total revenue
    expr: SUM(o_totalprice)
  - name: Order count
    expr: COUNT(1)

Use a using cláusula em vez de on quando ambas as tabelas partilham o nome da coluna:

joins:
  - name: customer
    source: samples.tpch.customer
    using:
      - customer_key

Observação

Numa on cláusula, source refere-se à tabela fonte da vista métrica e a junção name refere-se às colunas da tabela unida. Por exemplo, source.o_custkey = customer.c_custkey une a coluna da o_custkey tabela fonte à customer coluna da c_custkey tabela. Se não for fornecido prefixo, a referência passa por defeito para a tabela unida.

Esquemas floco de neve modelo

Um esquema de floco de neve estende um esquema de estrela normalizando tabelas de dimensões e conectando-as a subdimensões. Isto cria uma estrutura de junção multinível.

Para definir um esquema floco de neve:

  1. Criar uma vista métrica
  2. Adicionar junções de nível primário (esquema estrela)
  3. Juntar com outras tabelas de dimensões
  4. Expõe dimensões aninhadas adicionando dimensões na tua vista

O exemplo seguinte utiliza o conjunto de dados TPC-H para ilustrar um esquema floco de neve que mostra a hierarquia geográfica das ordens. O exemplo junta a tabela de encomendas aos clientes, depois às suas nações (países) e, finalmente, às suas regiões (continentes). Esta estrutura de junção multinível permite análises como "mostrar receitas por região" ou "comparar a distribuição de clientes entre nações". O conjunto de dados TPC-H está disponível no catálogo samples no seu espaço de trabalho Azure Databricks.

source: samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    on: source.o_custkey = customer.c_custkey
    joins:
      - name: nation
        source: samples.tpch.nation
        on: customer.c_nationkey = nation.n_nationkey
        joins:
          - name: region
            source: samples.tpch.region
            on: nation.n_regionkey = region.r_regionkey

dimensions:
  - name: clerk
    expr: o_clerk
  - name: customer
    expr: customer
    comment: returns the full customer row as a struct
  - name: customer_name
    expr: customer.c_name
  - name: nation
    expr: customer.nation
  - name: nation_name
    expr: customer.nation.n_name

Sintaxe e formatação YAML

As definições de visualização métrica seguem a sintaxe de notação YAML padrão. Consulte a referência da sintaxe YAML vista métrica para a sintaxe e formatação necessárias.

Melhores práticas

Use as seguintes diretrizes ao modelar exibições de métricas:

  • Modele medidas atómicas: Comece por definir primeiro as medidas mais simples (por exemplo, SUM(revenue), COUNT(DISTINCT customer_id)). Construa medidas complexas usando a composabilidade.
  • Uniformizar os valores das dimensões: Use transformações (como instruções CASE) para converter códigos de base de dados em nomes claros de negócios (por exemplo, converter o estado da ordem 'O' em 'Aberto' e 'F' em 'Cumprido').
  • Defina o âmbito com filtros: Se uma vista métrica deve incluir apenas ordens concluídas, defina esse filtro na vista métrica para que os utilizadores não possam incluir acidentalmente dados incompletos.
  • Use nomes claros: Os nomes das métricas devem ser reconhecíveis pelos utilizadores empresariais (por exemplo, "Customer Lifetime Value" em vez de cltv_agg_measure).
  • Dimensões temporais separadas: Incluam dimensões temporais granulares (como "Data da Encomenda") e dimensões temporárias truncadas (como "Mês da Encomenda" ou "Semana da Encomenda") para suportar tanto a análise detalhada como a de tendências.

Passos seguintes