Compartilhar via


Referência de sintaxe yaml de exibição de métrica

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

Para obter requisitos mínimos de versão de especificação de runtime e YAML para cada recurso, consulte a disponibilidade do recurso de exibição de métrica.

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

Visão geral do YAML

A definição yaml para uma exibição de 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 de exibição de métrica. Consulte as versões de especificação do YAML.
comment Opcional String Descrição da visualização de métrica.
source Obrigatório String Os dados de origem da exibição de métrica. Pode ser qualquer ativo do Catálogo do Unity semelhante a uma tabela, incluindo uma exibição de métrica ou uma consulta SQL. Consulte a origem.
filter Opcional String Uma expressão booliana sql que se aplica a todas as consultas. Consulte Filtro.
joins Opcional Array Esquema estelar e junções de esquema floco de neve. Consulte Junções.
dimensions Condicional Array Definições de dimensão, incluindo nome, expressão e metadados semânticos opcionais. Obrigatório se não measures for especificado. Consulte Dimensões.
measures Condicional Array Definições de medida, incluindo nome, expressão agregada e metadados semânticos opcionais. Obrigatório se não dimensions for especificado. Consulte Medidas.
materialization Opcional Objeto Configuração para acelerar consultas com exibições materializadas. Inclui agendamento de atualização e definições de exibição materializadas. Consulte Materialização.

Fonte

O source campo especifica a fonte de dados para a exibição de métrica. Você pode usar um ativo semelhante a uma tabela, como tabelas, exibições e exibições de métrica, ou uma consulta SQL como a origem. A capacidade de composição se aplica entre exibições de métrica. Ao usar uma exibição de métrica como fonte, você pode referenciar suas dimensões e medidas na nova exibição de métrica. Consulte Modularidade.

Fonte de ativo semelhante à tabela

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

source: catalog.schema.source_table

Origem da 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 uma origem com uma JOIN cláusula, defina restrições de chave primária e estrangeira em tabelas subjacentes e use a opção para o desempenho ideal da RELY consulta. Para obter mais informações, consulte Declarar relações de chave primária e chave estrangeira e otimização de consulta usando restrições de chave primária.

Filter

Um filtro na definição yaml se aplica a todas as consultas que fazem referência à exibição de métrica. Escreva filtros como expressões boolianas do SQL.

# 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 exibições de métrica dão suporte a junções diretas de uma tabela de fatos a tabelas de dimensão (esquema estrela) e junções de vários saltos entre tabelas de dimensão normalizadas (esquemas floco de neve). Você também pode ingressar em uma consulta SQL usando uma SELECT instrução. Consulte Usar uma consulta SQL como fonte.

Observação

Tabelas unidas não podem incluir MAP colunas de tipo. Para desempacotar valores de colunas de MAP tipo, consulte Explodir elementos aninhados de um mapa ou matriz.

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 a consulta SQL. Use esse alias ao referenciar colunas da tabela unida em dimensões ou medidas.
source Obrigatório String Nome de três partes da tabela a ser unida. Também pode ser uma consulta SQL.
on Condicional String Expressão booliana definindo a condição de junção. Obrigatório se using não for especificado.
using Condicional Array Lista de nomes de coluna presentes na tabela pai e na tabela unida. Obrigatório se on não for especificado.
joins Opcional Array Uma lista de definições de junção aninhadas para modelagem de esquema floco de neve. Consulte a disponibilidade do recurso de exibição de métrica para obter requisitos mínimos de runtime.

Junções de esquema estrela

Em um esquema de estrela, é a source tabela de fatos e une-se a uma ou mais tabelas de dimensão usando um LEFT OUTER JOIN. As exibições de métrica unem as tabelas de fato e dimensão 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 booliana para definir a condição de junção.
  • Cláusula USING: lista colunas com o mesmo nome na tabela pai e na tabela unida.

A junção deve seguir um relacionamento de muitos para um. Em casos de muitos para muitos, a primeira linha correspondente da tabela de dimensões 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 a colunas da origem da exibição de métrica, enquanto uma junção name se refere a colunas dessa tabela unida. Por exemplo, em source.l_orderkey = orders.o_orderkey, source refere-se lineitem a e orders refere-se à tabela unida. Se nenhum prefixo for fornecido em uma on cláusula, a referência será padrão para a tabela unida.

Junções de esquema snowflake

Um esquema floco de neve estende um esquema de estrela normalizando tabelas de dimensão e conectando-as a subdimensões. Isso cria uma estrutura de junção de vários níveis. Consulte a disponibilidade do recurso de exibição de métrica para obter requisitos mínimos de runtime.

Para definir um esquema de floco de neve, aninhar joins dentro de uma definição de junção pai:

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 em SELECT, WHEREe GROUP BY cláusulas no momento da consulta. Cada expressão deve retornar um valor escalar. As dimensões podem referenciar colunas dos dados de origem ou dimensões definidas anteriormente na exibição de métrica.

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

Campo Obrigatório Tipo Descrição
name Obrigatório String O alias de coluna para a dimensão.
expr Obrigatório String Uma expressão SQL que pode referenciar colunas dos dados de origem ou de uma dimensão definida anteriormente.
comment Opcional String Descrição da dimensão. Aparece no Catálogo do 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 a especificação YAML 1.1. Consulte a disponibilidade do recurso de exibição de métrica.
format Opcional Mapa Especificação de formato para como os valores devem ser exibidos. Requer a especificação YAML 1.1. Consulte as especificações de formato.
synonyms Opcional Array Nomes alternativos para ferramentas LLM descobrirem a dimensão. Até 10 sinônimos, cada um limitado a 255 caracteres. Requer a especificação YAML 1.1. Consulte 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

Medidas são expressões que produzem resultados sem um nível de agregação pré-determinado. Eles devem ser expressos usando funções de agregação. Para fazer referência a uma medida em uma 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 alias da medida.
expr Obrigatório String Uma expressão SQL agregada que inclui funções de agregação do SQL.
comment Opcional String Descrição da medida. Aparece no Catálogo do 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 a especificação YAML 1.1. Consulte a disponibilidade do recurso de exibição de métrica.
format Opcional Mapa Especificação de formato para como os valores devem ser exibidos. Requer a especificação YAML 1.1. Consulte as especificações de formato.
synonyms Opcional Array Nomes alternativos para ferramentas LLM descobrirem a medida. Até 10 sinônimos, cada um limitado a 255 caracteres. Requer a especificação YAML 1.1. Consulte a disponibilidade do recurso de exibição de métrica.
window Opcional Array Especificações de janela para agregações em janelas, cumulativas ou semiadditivas. Quando não especificada, a medida se comporta como uma agregação padrão. Veja as medidas da Janela.

Consulte funções de agregação para obter uma lista de funções de agregação.

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']

Dimensões da janela

Importante

Esse recurso é experimental.

O window campo define agregações em janelas, cumulativas ou semiadditivas para medidas. Para obter 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 com suporte:
  • current: linhas em que o valor de ordenação da janela é igual ao valor da linha atual.
  • cumulative: todas as linhas em que o valor de ordenação da janela é menor ou igual ao valor da linha atual.
  • trailing <value> <unit>: linhas da linha atual indo para trás pelas unidades de tempo especificadas (por exemplo, trailing 7 day). Não inclui a unidade atual.
  • leading <value> <unit>: linhas da linha atual daqui para frente pelas unidades de tempo especificadas (por exemplo, leading 3 month). Não inclui a unidade atual.
  • all: todas as linhas, independentemente do valor de ordenação da janela.
semiadditive Obrigatório String Método de agregação. Valores com suporte: first ou last.

Exemplo de medida de janela

O exemplo a seguir calcula uma contagem sem interrupção de 7 dias de clientes exclusivos:

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

Esse recurso é experimental.

O materialization campo configura a aceleração automática de consulta usando exibições materializadas. Para obter informações detalhadas sobre como a materialização funciona, os requisitos e as práticas recomendadas, consulte Materialização para exibições de métrica.

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

Campo Obrigatório Tipo Descrição
schedule Obrigatório String Agendamento de atualização. Usa a mesma sintaxe que a cláusula schedule em exibições materializadas. Não há suporte para a cláusula TRIGGER ON UPDATE.
mode Obrigatório String Deve ser definido como relaxed.
materialized_views Obrigatório Array Lista de exibições materializadas a serem materializadas. 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 com suporte: aggregated (requer dimensions, measuresou ambos) ou unaggregated.
dimensions Condicional Array Lista de nomes de dimensão a serem materializados. Obrigatório se type for aggregated e não measures for especificado.
measures Condicional Array Lista de nomes de medidas a serem materializados. Obrigatório se type for aggregated e não dimensions for especificado.

Exemplo de materialização

O exemplo a seguir define uma exibição de métrica com várias 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 ao nome da coluna

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

Exemplos de formatação

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

Referenciar um nome de coluna

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

Caso Nome da coluna de origem Expressões de referência Observações
Sem espaços revenue expr: "revenue"
expr: 'revenue'
expr: revenue
Use aspas duplas, aspas simples ou nenhuma aspa ao redor do nome da coluna.
Com espaços First Name expr: "`First Name`" Use acentos graves para escapar de espaços. Coloque a expressão inteira 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 acento grave, aspas duplas não serão necessárias.
Aspas são incluídas no nome da coluna de origem "name" expr: '`"name"`' Utilize acento grave para escapar das aspas duplas no nome da coluna. Coloque essa expressão entre aspas simples na definição de YAML.

Usar expressões com dois-pontos

Caso Expression Observações
Expressões com dois pontos expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END" Encapsular a expressão inteira entre aspas duplas para interpretação correta

Observação

YAML interpreta dois pontos sem estar entre aspas como separadores chave-valor. Sempre use aspas duplas em torno de expressões com dois pontos.

Indentação de múltiplas linhas

Caso Expression Observações
Indentação de múltiplas linhas expr: \|
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
Recuar a expressão abaixo da primeira linha

Observação

Use o escalar de bloco | depois de 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 correta análise.

Atualizar seu YAML para 1.1

Atualizar uma exibição de métrica para a especificação YAML versão 1.1 requer cuidado, pois 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 Unity Catalog: Comentários armazenados no Unity Catalog para a visualização de métricas ou suas colunas (dimensões e medidas). Eles são separados dos comentários YAML.

Considerações sobre atualização

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

Opção 1: Preservar comentários YAML usando notebooks ou editor SQL

Se a 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 notebook ou editor do SQL.
  2. Copie a definição original do YAML para a $$..$$ seção após AS. Altere o valor de version para 1.1.
  3. Salve o modo de exibição de 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)
$$

Aviso

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

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

Observação

As diretrizes a seguir se aplicam somente ao usar o ALTER VIEW comando em um notebook ou editor do SQL. Se você atualizar sua exibição de métrica para a versão 1.1 usando a interface do usuário do editor YAML, a interface do usuário do editor YAML preservará automaticamente os comentários do Catálogo do Unity.

  1. Copie todos os comentários do Unity Catalog nos campos apropriados comment na definição do YAML. Altere o valor de version para 1.1.
  2. Salve o modo de exibição de 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 obter o histórico de versão de especificação do YAML e os requisitos mínimos de runtime para cada recurso, consulte a disponibilidade do recurso de exibição de métrica.