Partilhar via


Vista métrica Referência da sintaxe YAML

Esta página explica toda a gramática YAML para vistas métricas. As definições de visualização métrica seguem a sintaxe de notação YAML padrão.

Para requisitos de tempo mínimo de execução e de versão da especificação YAML para cada funcionalidade, veja Disponibilidade de funcionalidades na vista métrica.

Consulte a documentação da Especificação YAML 1.2.2 para saber mais sobre as especificações YAML.

Visão geral do YAML

A definição de YAML para uma exibição métrica inclui os seguintes campos de nível superior:

Campo Obrigatório Tipo Descrição
version Obrigatório String Versão da especificação da vista métrica. Ver versões da especificação YAML.
comment Opcional String Descrição da visualização métrica.
source Obrigatório String Os dados de origem para a vista métrica. Pode ser qualquer ativo do Unity Catalog em formato de tabela, incluindo uma vista métrica ou uma consulta SQL. Ver Fonte.
filter Opcional String Uma expressão booleana SQL que se aplica a todas as consultas. Ver Filtro.
joins Opcional Array O esquema estrela e o esquema floco de neve juntam-se. Ver Junções.
dimensions Conditional Array Definições de dimensões incluindo nome, expressão e metadados semânticos opcionais. É obrigatório se não measures forem especificados. Ver Dimensões.
measures Conditional Array Definições de medidas incluindo nome, expressão agregada e metadados semânticos opcionais. É obrigatório se não dimensions forem especificados. Ver Medidas.
materialization Opcional Objeto Configuração para acelerar consultas com vistas materializadas. Inclui o calendário de atualização e definições de visualizações materializadas. Ver Materialização.

Fonte

O source campo especifica a fonte de dados para a vista métrica. Pode usar um asset semelhante a uma tabela, como tabelas, vistas e vistas métricas, ou uma consulta SQL como fonte. A composabilidade aplica-se em várias vistas métricas. Ao usar uma vista métrica como fonte, pode referenciar as suas dimensões e medidas na nova vista métrica. Consulte Composabilidade.

Fonte de ativo em forma de tabela

Faça referência a um ativo semelhante a uma tabela usando o seu nome em três partes:

source: catalog.schema.source_table

Fonte de consulta SQL

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

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

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. Para mais informações, consulte Declarar relações de chave primária e chave estrangeira e Otimização de consultas usando restrições de chave primária.

Filter

Um filtro na definição YAML aplica-se a todas as consultas que referenciam a vista métrica. Escreva filtros como expressões SQL booleanas.

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

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

# Multiple conditions with OR
filter: o_orderpriority = '1-URGENT' OR o_orderpriority = '2-HIGH'

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

# Filter with NOT
filter: o_orderstatus != 'O' AND o_totalprice > 1000.00

# Filter with LIKE pattern matching
filter: o_comment LIKE '%express%' AND o_orderdate > '2024-01-01'

Joins

As junções em vistas métricas suportam tanto junções diretas de uma tabela de factos para tabelas de dimensões (esquema estrela) como uniões multi-saltos através de tabelas de dimensões normalizadas (esquemas floco de neve). Também pode juntar-se a uma consulta SQL usando uma SELECT instrução. Veja Usar uma consulta SQL como fonte.

Observação

As tabelas unidas não podem incluir MAP colunas de texto. Para desempacotar valores das MAP colunas de tipos, veja Explodir elementos aninhados de um mapa ou array.

Cada definição de junção inclui os seguintes campos:

Campo Obrigatório Tipo Descrição
name Obrigatório String Alias para a tabela unida ou consulta SQL. Use este alias ao referenciar colunas da tabela unida em dimensões ou medidas.
source Obrigatório String Nome em três partes da mesa a juntar. Também pode ser uma consulta SQL.
on Conditional String Expressão booleana que define a condição de junção. Obrigatório se using não for especificado.
using Conditional Array Lista de nomes de colunas presentes tanto na tabela principal como na tabela conjunta. Obrigatório se on não for especificado.
joins Opcional Array Uma lista de definições de junção aninhada para modelação de esquemas floco de neve. Consulte a disponibilidade de funcionalidades na vista métrica para requisitos mínimos de tempo de execução.

Juntas de esquemas estelares

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 colunas selecionadas.

Especifique colunas de junção usando uma ON cláusula ou uma USING cláusula:

  • Cláusula ON: Usa uma expressão booleana para definir a condição de junção.
  • cláusula USE: Lista colunas com o mesmo nome tanto na tabela principal como na tabela unida.

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.

version: 1.1
source: samples.tpch.lineitem

joins:
  - name: orders
    source: samples.tpch.orders
    on: source.l_orderkey = orders.o_orderkey

  - name: part
    source: samples.tpch.part
    on: source.l_partkey = part.p_partkey

dimensions:
  - name: Order Status
    expr: orders.o_orderstatus

  - name: Part Name
    expr: part.p_name

measures:
  - name: Total Revenue
    expr: SUM(l_extendedprice * (1 - l_discount))

  - name: Line Item Count
    expr: COUNT(1)

Observação

O source namespace faz referência às colunas da fonte da vista métrica, enquanto o name de uma junção refere-se a colunas dessa tabela unida. Por exemplo, em source.l_orderkey = orders.o_orderkey, source refere-se a lineitem e orders refere-se à tabela unida. Se não for fornecido prefixo numa on cláusula, a referência passa por defeito à tabela junta.

Juntas de esquemas floco de neve

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. Consulte a disponibilidade de funcionalidades na vista métrica para requisitos mínimos de tempo de execução.

Para definir um esquema snowflake, aninha-se joins dentro de uma definição de junção parental:

version: 1.1
source: samples.tpch.orders

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

dimensions:
  - name: customer_nation
    expr: customer.nation.n_name

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 definidas anteriormente na vista métrica.

Cada definição de dimensão inclui os seguintes campos:

Campo Obrigatório Tipo Descrição
name Obrigatório String O alias da coluna para a dimensão.
expr Obrigatório String Uma expressão SQL que pode referenciar colunas a partir dos dados de origem ou de uma dimensão previamente definida.
comment Opcional String Descrição da dimensão. Aparece no Catálogo Unity e nas ferramentas de documentação.
display_name Opcional String Rótulo legível por humanos que aparece em ferramentas de visualização. Limitado a 255 caracteres. Requer especificação YAML 1.1. Ver disponibilidade da funcionalidade de vista métrica.
format Opcional Map Especificação de formato para como os valores devem ser apresentados. Requer especificação YAML 1.1. Consulte especificações de formato.
synonyms Opcional Array Nomes alternativos para ferramentas de LLM para descobrir a dimensão. Até 10 sinónimos, cada um limitado a 255 caracteres. Requer especificação YAML 1.1. Ver Sinónimos.

Exemplo:

dimensions:
  # Basic dimension
  - name: order_date
    expr: o_orderdate
    comment: 'Date the order was placed'
    display_name: 'Order Date'

  # Dimension with SQL expression
  - name: order_month
    expr: DATE_TRUNC('MONTH', o_orderdate)
    display_name: 'Order Month'

  # Dimension with synonyms
  - name: order_status
    expr: CASE
      WHEN o_orderstatus = 'O' THEN 'Open'
      WHEN o_orderstatus = 'P' THEN 'Processing'
      WHEN o_orderstatus = 'F' THEN 'Fulfilled'
      END
    display_name: 'Order Status'
    synonyms: ['status', 'fulfillment status']

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. Para referenciar uma medida numa consulta, use a MEASURE função. As medidas podem referenciar campos base nos dados de origem, dimensões definidas anteriormente ou medidas definidas anteriormente.

Cada definição de medida inclui os seguintes campos:

Campo Obrigatório Tipo Descrição
name Obrigatório String O pseudónimo para a medida.
expr Obrigatório String Uma expressão SQL agregada que inclui funções agregadas SQL.
comment Opcional String Descrição da medida. Aparece no Catálogo Unity e nas ferramentas de documentação.
display_name Opcional String Rótulo legível por humanos que aparece em ferramentas de visualização. Limitado a 255 caracteres. Requer especificação YAML 1.1. Ver disponibilidade da funcionalidade de vista métrica.
format Opcional Map Especificação de formato para como os valores devem ser apresentados. Requer especificação YAML 1.1. Consulte especificações de formato.
synonyms Opcional Array Nomes alternativos para ferramentas de LLM para descobrir a medida. Até 10 sinónimos, cada um limitado a 255 caracteres. Requer especificação YAML 1.1. Ver disponibilidade da funcionalidade de vista métrica.
window Opcional Array Especificações de janelas para agregações em janelas, cumulativas ou semiaditivas. Quando não especificado, a medida comporta-se como um agregado padrão. Ver Medidas de janela.

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

Exemplo:

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

  # Sum aggregation measure with synonyms
  - name: total_revenue
    expr: SUM(o_totalprice)
    comment: 'Gross revenue from all orders'
    display_name: 'Total Revenue'
    synonyms: ['revenue', 'total sales']

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

  # Calculated measure combining multiple aggregations
  - name: avg_order_value
    expr: SUM(o_totalprice) / COUNT(DISTINCT o_orderkey)
    display_name: 'Avg Order Value'
    synonyms: ['AOV', 'average order']

  # Filtered measure with WHERE condition
  - name: open_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
    display_name: 'Open Order Revenue'
    synonyms: ['backlog', 'outstanding revenue']

Medidas de janela

Importante

Este recurso é Experimental.

O window campo define agregações em janelas, cumulativas ou semiaditivas para as medidas. Para informações detalhadas sobre medidas de janela e casos de uso, consulte Medidas de janela.

Cada especificação de janela inclui os seguintes campos:

Campo Obrigatório Tipo Descrição
order Obrigatório String A dimensão que determina a ordenação da janela.
range Obrigatório String A extensão da janela. Valores suportados:
  • current: Linhas onde o valor da ordem das janelas é igual ao valor da linha atual.
  • cumulative: Todas as linhas em que o valor da ordem das janelas é menor ou igual ao valor da linha atual.
  • trailing <value> <unit>: Linhas da linha atual que vão para trás nas unidades de tempo especificadas (por exemplo, trailing 7 day). Não inclui a unidade atual.
  • leading <value> <unit>: Linhas da linha atual a avançar pelas unidades de tempo especificadas (por exemplo, leading 3 month). Não inclui a unidade atual.
  • all: Todas as linhas independentemente do valor de ordem da janela.
semiadditive Obrigatório String Método de agregação. Valores suportados: first ou last.

Exemplo de medida de janela

O exemplo seguinte calcula uma contagem móvel de 7 dias de clientes únicos:

version: 1.1
source: samples.tpch.orders

dimensions:
  - name: order_date
    expr: o_orderdate

measures:
  - name: rolling_7day_customers
    expr: COUNT(DISTINCT o_custkey)
    display_name: '7-Day Rolling Customers'
    window:
      - order: order_date
        range: trailing 7 day
        semiadditive: last

Materialização

Importante

Este recurso é Experimental.

O materialization campo configura a aceleração automática de consultas usando vistas materializadas. Para informações detalhadas sobre como funciona a materialização, requisitos e melhores práticas, consulte Materialização para vistas métricas.

O materialization campo inclui os seguintes campos de nível superior:

Campo Obrigatório Tipo Descrição
schedule Obrigatório String Horário de atualização. Utiliza a mesma sintaxe da cláusula schedule nas visualizações materializadas. A cláusula TRIGGER ON UPDATE não é suportada.
mode Obrigatório String Deve ser definido como relaxed.
materialized_views Obrigatório Array Lista de vistas materializadas a concretizar-se. Cada entrada requer os campos descritos abaixo.

Cada entrada inclui materialized_views os seguintes campos:

Campo Obrigatório Tipo Descrição
name Obrigatório String O nome da materialização.
type Obrigatório String Tipo de materialização. Valores suportados: aggregated (requer dimensions, measures, ou ambos) ou unaggregated.
dimensions Conditional Array Lista de nomes de dimensões a materializar. É necessário se type for aggregated e não measures forem especificados.
measures Conditional Array Lista de nomes de medidas a materializar. É necessário se type for aggregated e não dimensions forem especificados.

Exemplo de materialização

O exemplo seguinte define uma vista métrica com múltiplas materializações:

version: 1.1
source: samples.tpch.orders

dimensions:
  - name: order_date
    expr: o_orderdate
  - name: order_status
    expr: o_orderstatus

measures:
  - name: total_revenue
    expr: SUM(o_totalprice)
  - name: order_count
    expr: COUNT(1)

materialization:
  schedule: every 6 hours
  mode: relaxed
  materialized_views:
    - name: baseline
      type: unaggregated

    - name: daily_status_metrics
      type: aggregated
      dimensions:
        - order_date
        - order_status
      measures:
        - total_revenue
        - order_count

Referências de nomes de colunas

Ao fazer referência a nomes de colunas que contenham espaços ou caracteres especiais em expressões YAML, coloque o nome da coluna em backticks para escapar do espaço ou caractere. Se a expressão começar com um backtick e for usada diretamente como um valor YAML, envolva toda a expressão entre aspas duplas. Os valores YAML válidos não podem começar com um backtick.

Exemplos de formatação

Use os exemplos a seguir para aprender a formatar o YAML corretamente em cenários comuns.

Fazer referência a um nome de coluna

A tabela a seguir mostra como formatar nomes de colunas dependendo dos caracteres que elas contêm.

Incidente Nome(s) da(s) coluna(s) de origem Expressão(ões) de referência Notes
Sem espaços revenue expr: "revenue"
expr: 'revenue'
expr: revenue
Use aspas duplas, aspas simples ou sem aspas ao redor do nome da coluna.
Com espaços First Name expr: "`First Name`" Use backticks para escapar de espaços. Coloque toda a expressão entre aspas duplas.
Nome da coluna com espaços em uma expressão SQL First Name e Last Name expr: CONCAT(`First Name`, , `Last Name`) Se a expressão não começar com backticks, aspas duplas não são necessárias.
As citações são incluídas no nome da coluna de origem "name" expr: '`"name"`' Use backticks para escapar das aspas duplas no nome da coluna. Coloque essa expressão entre aspas simples na definição YAML.

Usar expressões com dois pontos

Incidente Expression Notes
Expressões com dois pontos expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END" Envolva toda a expressão entre aspas duplas para uma interpretação correta

Observação

YAML interpreta dois pontos sem aspas como separadores chave-valor. Use sempre aspas duplas em torno de expressões que incluam dois pontos.

Recuo de várias linhas

Incidente Expression Notes
Recuo de várias linhas expr: \|
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
Indentar a expressão na alinhamento da primeira linha

Observação

Use o | bloco escalar depois do expr: para expressões de várias linhas. Todas as linhas devem ser recuadas pelo menos dois espaços além da chave expr para a análise correta.

Atualiza o teu YAML para a versão 1.1

A atualização de uma visualização métrica para a especificação YAML versão 1.1 requer cuidado, porque os comentários são tratados de forma diferente das versões anteriores.

Tipos de comentários

  • Comentários YAML (#): Comentários embutidos ou de linha única escritos diretamente no arquivo YAML usando o símbolo #.
  • Comentários do Catálogo Unity: Comentários armazenados no Catálogo Unity para a visualização métrica ou suas colunas (dimensões e medidas). Estes são separados dos comentários YAML.

Considerações sobre a atualização

Escolha o caminho de atualização que corresponda à forma como você deseja lidar com os comentários em sua visualização métrica. As opções a seguir descrevem as abordagens disponíveis e fornecem exemplos.

Opção 1: Preservar comentários YAML usando blocos de anotações ou o editor SQL

Se sua exibição de métrica contiver comentários YAML (#) que você deseja manter, use as seguintes etapas:

  1. Use o ALTER VIEW comando em um bloco de anotações ou editor SQL.
  2. Copie a definição original do YAML para a $$..$$ secção seguinte ASa . Altere o valor de version para 1.1.
  3. Salve a visualização métrica.
ALTER VIEW metric_view_name AS
$$
# The notebook preserves inline comments
version: 1.1
source: samples.tpch.orders
dimensions:
- name: order_date # The notebook preserves inline comments
  expr: o_orderdate
measures:
# The notebook preserves commented out definitions
# - name: total_orders
#   expr: COUNT(o_orderid)
- name: total_revenue
  expr: SUM(o_totalprice)
$$

Advertência

A execução ALTER VIEW remove os comentários do Catálogo Unity, a menos que eles estejam explicitamente incluídos nos comment campos da definição YAML. Para preservar os comentários mostrados no Catálogo Unity, veja a Opção 2.

Opção 2: Preservar comentários do Catálogo Unity

Observação

As diretrizes a seguir se aplicam somente ao usar o ALTER VIEW comando em um bloco de anotações ou editor SQL. Se atualizar a sua vista métrica para a versão 1.1 usando a interface do editor YAML, a interface do editor YAML preserva automaticamente os seus comentários do Catálogo Unity.

  1. Copie todos os comentários do Catálogo Unity para os campos apropriados comment na sua definição de YAML. Altere o valor de version para 1.1.
  2. Salve a visualização métrica.
ALTER VIEW metric_view_name AS
$$
version: 1.1
source: samples.tpch.orders
comment: "Metric view of order (Updated comment)"

dimensions:
- name: order_date
  expr: o_orderdate
  comment: "Date of order - Copied from Unity Catalog"

measures:
- name: total_revenue
  expr: SUM(o_totalprice)
  comment: "Total revenue"
$$

Para o histórico de versões da especificação YAML e os requisitos mínimos de execução para cada funcionalidade, consulte Disponibilidade de funcionalidades na vista métrica.