métricas view referência de sintaxe YAML
Esta página explica a gramática YAML completa para a visualização de métricas. As definições view métricas seguem a sintaxe padrão da notação YAML.
Para requisitos mínimos de tempo de execução e versão da especificação YAML para cada recurso, consulte métricas view recurso availability.
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 YAML para uma view de métricas inclui os seguintes campos de nível superior:
campo | Tipo | Descrição |
|---|---|---|
| String | Obrigatório. Versão da especificação view de métricas. Consulte as versões da especificação YAML. |
| String | Opcional. Descrição da view de métricas. |
| String | Obrigatório. Os dados de origem para a view de métricas. Pode ser qualquer tabela do Unity Catalog ativa, incluindo uma view de métricas ou uma consulta SQL . Ver fonte. |
| String | Opcional. Uma expressão booleana SQL que se aplica a todas as consultas. Consulte o filtro. |
| matriz | Opcional. Junção dos esquemas estrela e floco de neve. See join. |
| matriz | Condicional. Definições de campo incluindo nome, expressão e metadados semânticos opcionais. Obrigatório se nenhum |
| matriz | Condicional. Definições de medidas, incluindo nome, expressão agregada e metadados semânticos opcionais. Obrigatório se nenhum |
| Objeto | Opcional. Configuração para acelerar consultas com visão materializada. Inclui refresh das definições view programática e materializada. Ver Materialização. |
Fonte
O campo source especifica a fonte de dados para a view de métricas. Fontes compatíveis incluem tabelas, views, views de métricas e queries SQL. A componibilidade se aplica a todas as views de métricas. Ao usar uma view de métrica como fonte, você pode referenciar seus campos e medidas na nova view de métrica. Veja Componibilidade.
Fonte ativa em forma de tabela
Faça referência a um ativo em formato de tabela usando seu nome de três partes:
source: catalog.schema.source_table
Fonte 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
Ao utilizar uma consulta SQL como origem com uma cláusula JOIN, defina restrições de chave primária e estrangeira em tabelas subjacentes e utilize a opção RELY para um desempenho de consulta ideal. Para mais informações, consulte Declarar restrições de key primária, key estrangeira e exclusivas e Otimização de consulta usando restrições de key primária e exclusivas.
Filtro
Um filtro na definição YAML se aplica a todas as consultas que fazem referência à view métricas. Escreva filtros como expressões booleanas 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'
join
A funcionalidade de junção na visualização de métricas suporta tanto a junção direta de uma tabela de fatos para tabelas de dimensões (esquema em estrela) quanto a junção de múltiplos saltos entre tabelas de dimensões normalizadas (esquemas em floco de neve). Você também pode join a uma consulta SQL usando uma instrução SELECT . Consulte Usar uma consulta SQL como fonte.
Tabelas unidas não podem incluir colunas do tipo MAP . Para desempacotar valores de colunas do tipo MAP , consulte Explodir elementos aninhados de um mapa ou matriz.
Cada definição join inclui os seguintes campos:
campo | Tipo | Descrição |
|---|---|---|
| String | Obrigatório. Alias da tabela unida ou consulta SQL. Use este apelido ao referenciar colunas da tabela combinada em campos ou medidas. |
| String | Obrigatório. Nome da tabela a join, composto por três partes. Também pode ser uma consulta SQL. |
| String | Condicional. Expressão Boolean que define a condição join . Obrigatório se |
| matriz | Condicional. Lista dos nomes das colunas presentes tanto na tabela principal quanto na tabela resultante da junção. Obrigatório se |
| matriz | Opcional. Uma lista de definições join aninhadas para modelagem de esquema em floco de neve. Consulte as métricas view a disponibilidade de recursos e os requisitos mínimos de tempo de execução. |
| Mapa | Opcional. Promessas sobre o join em que o analisador pode se basear para produzir planos de consulta mais eficientes. Veja Otimizar joins com |
junção de esquema em estrela
Em um esquema em estrela, o source é a tabela de fatos e se junta a uma ou mais tabelas de dimensão usando um LEFT OUTER JOIN. A visualização de métricas join as tabelas de fatos e dimensões necessárias para a consulta específica, com base nas colunas selecionadas.
Especifique as colunas join usando uma cláusula ON ou uma cláusula USING :
ONCláusula: Utiliza uma expressão booleana para definir a condição join .USINGCláusula: Lista as colunas com o mesmo nome tanto na tabela principal quanto na tabela resultante da junção.
A join deve seguir uma relação de muitos para um. Em casos de relacionamento 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
fields:
- 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)
O namespace source faz referência a colunas da fonte da view métricas, enquanto o name de uma join se refere a colunas da tabela unida. Por exemplo, em source.l_orderkey = orders.o_orderkey, source refere-se a lineitem e orders refere-se à tabela unida. Se nenhum prefixo for fornecido em uma cláusula on , a referência padrão será a tabela unida.
Junção de esquemaSnowflake
Um esquema em floco de neve estende um esquema em estrela normalizando tabelas de dimensão e conectando-as a subdimensões. Isso cria uma estrutura join multinível. Consulte as métricas view a disponibilidade de recursos e os requisitos mínimos de tempo de execução.
Para definir um esquema em forma de floco de neve, aninhe joins dentro de uma definição join 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
fields:
- name: customer_nation
expr: customer.nation.n_name
Otimizar uniões com rely
Use o campo rely em uma join para declarar garantias sobre o relacionamento que o analisador de consultas usa ao planejar consultas. Essas garantias permitem que o mecanismo planeje consultas de forma mais eficiente e reduza a quantidade de dados verificados, especialmente quando campos da tabela combinada são referenciados em filtros.
O mapa rely suporta os seguintes campos:
campo | Tipo | Descrição |
|---|---|---|
| Booleana | Opcional. O default é |
Defina at_most_one_match: true somente quando o join for muitos-para-um. Este relacionamento não é validado em tempo de execução. Se várias linhas na tabela combinada corresponderem a uma única linha de origem, medidas (como SUM e COUNT) retornarão resultados incorretos.
O exemplo a seguir habilita at_most_one_match em um join de muitos para um de orders para customer. Consultas que filtram ou agrupam por atributos do cliente são as mais beneficiadas:
version: 1.1
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
on: source.o_custkey = customer.c_custkey
rely:
at_most_one_match: true
fields:
- name: Customer name
expr: customer.c_name
- name: Customer market segment
expr: customer.c_mktsegment
measures:
- name: Total revenue
expr: SUM(o_totalprice)
Campos
fields e dimensions são palavras-chave equivalentes em uma definição de view de métrica. fields é o termo preferido e é utilizado ao longo desta documentação. Views de métrica existentes que usam dimensions continuam a funcionar, e ambas as palavras-chave são aceitas em definições novas ou atualizadas.
Campos são colunas de view de métricas usadas em cláusulas SELECT, WHERE e GROUP BY no momento da consulta. Cada expressão deve retornar um valor escalar. Campos podem fazer referência a colunas dos dados de origem ou campos definidos anteriormente na view de métricas.
Um campo pode ser:
- Uma coluna categórica ou de agrupamento, como uma região, status ou departamento.
- Uma coluna numérica não agregada, como idade, preço ou quantidade. Campos numéricos podem ser agregados no momento da consulta usando funções SQL como
SUMouAVG.
Cada definição de campo inclui as seguintes propriedades:
Propriedade | Tipo | Descrição |
|---|---|---|
| String | Obrigatório. O alias da coluna para o campo. |
| String | Obrigatório. Uma expressão SQL que pode referenciar colunas dos dados de origem ou um campo previamente definido. |
| String | Opcional. Descrição do campo. Aparece em Unity Catalog e ferramentas de documentação. |
| String | Opcional. rótulo que aparece em ferramentas de visualização. Limitado a 255 caracteres. Requer a especificação YAML 1.1. Veja métricas view disponibilidade de recursos. |
| Mapa | Opcional. Especificação do formato de exibição dos valores. Requer a especificação YAML 1.1. Consulte as especificações de formato. |
| matriz | Opcional. Nomes alternativos para ferramentas de AI e BI para descobrir o campo. Até 10 sinônimos, cada um com no máximo 255 caracteres. Requer especificação YAML 1,1. Veja Sinônimos. |
Exemplo:
fields:
# Basic field
- name: order_date
expr: o_orderdate
comment: 'Date the order was placed'
display_name: 'Order Date'
# Field with SQL expression
- name: order_month
expr: DATE_TRUNC('MONTH', o_orderdate)
display_name: 'Order Month'
# Field 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. Elas devem ser expressas usando funções de agregação. Para referenciar uma medida em uma consulta, utilize a função MEASURE. Medidas podem fazer referência a colunas base nos dados de origem, a campos definidos anteriormente ou a medidas definidas anteriormente.
Cada definição de medida inclui os seguintes campos:
campo | Tipo | Descrição |
|---|---|---|
| String | Obrigatório. O pseudônimo da medida. |
| String | Obrigatório. Uma expressão SQL contendo uma ou mais funções de agregação. |
| String | Opcional. Descrição da medida. Aparece no Unity Catalog e nas ferramentas de documentação. |
| String | Opcional. rótulo que aparece em ferramentas de visualização. Limitado a 255 caracteres. Requer a especificação YAML 1.1. Veja métricas view disponibilidade de recursos. |
| Mapa | Opcional. Especificação do formato de exibição dos valores. Requer a especificação YAML 1.1. Consulte as especificações de formato. |
| matriz | Opcional. Nomes alternativos para ferramentas de AI e BI para descobrir a métrica. Até 10 sinônimos, cada um limitado a 255 caracteres. Requer a especificação YAML 1.1. Veja métricas view disponibilidade de recursos. |
| matriz | Opcional. Especificações de janelas para agregações em janelas, cumulativas ou semiaditivas. Quando não especificada, a medida comporta-se como um agregado padrão. Veja 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']
Medidas da janela
Experimental
Este recurso é experimental.
O campo window define agregações em janela, cumulativas ou semiaditivas 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 | Tipo | Descrição |
|---|---|---|
| String | Obrigatório. O campo que determina a ordenação da janela. (1) |
| String | Obrigatório. A extensão da janela. Consulte os valores suportados |
| String | Obrigatório. Método de agregação. Valores suportados: |
| String | Opcional. Requer Databricks Runtime 18.1 e versão 1.1 ou mais recente do YAML. Move a moldura da janela para trás ou para frente ao longo do campo |
(1) O campo referenciado deve ser determinístico. Expressões não determinísticas como rand(), uuid() ou current_timestamp() produzem ordenação de janela imprevisível e podem levar a resultados de agregação incorretos.
Valores suportados range
current: Linhas em que o valor de ordenação da janela é igual ao valor da linha de ancoragem.cumulative: Todas as linhas em que o valor de ordenação da janela é menor ou igual ao valor da linha de âncora.trailing <value> <unit> [inclusive | exclusive]: Linhas da linha âncora retrocedendo pelas unidades de tempo especificadas, por exemplotrailing 7 day. O modificador opcionalinclusiveouexclusiverequer o Databricks Runtime 18.1 e a versão 1.1 ou superior do YAML e controla se a linha de âncora está incluída na janela. O default éexclusive. Consulte Incluir ou excluir a linha âncora.leading <value> <unit> [inclusive | exclusive]: Linhas da linha âncora avançando pelo número de unidades de tempo especificado, por exemploleading 3 month. O modificador opcionalinclusiveouexclusiverequer o Databricks Runtime 18.1 e a versão 1.1 ou superior do YAML e controla se a linha de âncora está incluída na janela. O default éexclusive. Consulte Incluir ou excluir a linha âncora.allTodas as linhas, independentemente do valor de ordenação da janela.
Exemplo de medida de janela
O exemplo a seguir calcula uma contagem móvel de 7 dias de clientes únicos:
version: 1.1
source: samples.tpch.orders
fields:
- 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
Experimental
Este recurso é experimental.
O campo materialization configura a aceleração automática de consultas usando a visão materializada. Para informações detalhadas sobre como a materialização funciona, requisitos e melhores práticas, consulte Materialização para visualização de métricas.
O campo materialization inclui os seguintes campos de nível superior:
campo | Tipo | Descrição |
|---|---|---|
| String | Obrigatório. atualizar programar. Utiliza a mesma sintaxe da cláusula programar na visão materializada. A cláusula |
| String | Obrigatório. Deve ser definido como |
| matriz | Obrigatório. Lista de visões materializadas a serem materializadas. Cada entrada requer os campos descritos abaixo. |
Cada entrada em materialized_views inclui os seguintes campos:
campo | Tipo | Descrição |
|---|---|---|
| String | Obrigatório. O nome da materialização. |
| String | Obrigatório. Tipo de materialização. Valores suportados: |
| matriz | Condicional. Lista de nomes de campo a serem materializados. Obrigatório se |
| matriz | Condicional. Lista de nomes de medidas a serem materializadas. Obrigatório se |
O bloco de materialização usa a palavra-chave dimensions: em vez de fields:. Use dimensions: ao listar campos para materializar, mesmo que sua definição de nível superior use fields:.
Exemplo de materialização
O exemplo a seguir define uma view de métricas com múltiplas materializações:
version: 1.1
source: samples.tpch.orders
fields:
- 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 aos nomes das colunas
Ao referenciar nomes de colunas que contenham espaços ou caracteres especiais em expressões YAML, coloque o nome da coluna entre crases (`). Se a expressão começar com um crase e for usada diretamente como um valor YAML, coloque toda a expressão entre aspas duplas. Valores YAML válidos não podem começar com um acento grave (`).
Exemplos de formatação
Utilize os exemplos a seguir para aprender como formatar YAML corretamente em cenários comuns.
Faça referência ao nome de uma coluna.
Os exemplos a seguir mostram como formatar referências de coluna dependendo dos caracteres que elas contêm.
Sem espaços
Coluna de origem: revenue
expr: "revenue"
expr: 'revenue'
expr: revenue
Use aspas duplas, aspas simples ou nenhuma aspa em torno do nome da coluna.
Nome da coluna com espaços
Coluna de origem: `First Name`
expr: '`First Name`'
Use crases (`) para escapar espaços. Coloque toda a expressão entre aspas duplas.
Nomes de colunas com espaços em uma expressão SQL
Colunas de origem: `First Name`, `Last Name`
expr: CONCAT(`First Name`, ' ', `Last Name`)
Se a expressão não começar com um crase (`), as aspas duplas não são necessárias.
Nome da coluna que contém aspas
Coluna de origem: "name"
expr: '`"name"`'
Use crases (`) para escapar as aspas duplas no nome da coluna. Coloque a expressão entre aspas simples.
Expressões com dois pontos
expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END"
O YAML interpreta dois pontos sem aspas como separadores key-valor. Use sempre aspas duplas em expressões que incluam dois pontos.
Expressões de múltiplas linhas
expr: |
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
Use o escalar de bloco | após expr: para expressões de várias linhas. Todas as linhas devem ser recuadas em pelo menos dois espaços além da key expr para serem analisadas corretamente.
Atualize para YAML 1.1
A atualização de uma view de métricas para a versão 1.1 da especificação YAML 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 em linha ou de linha única escritos diretamente no arquivo YAML. - ComentáriosUnity Catalog : Comentários armazenados no Unity Catalog para a view de métricas ou suas colunas. Esses itens são distintos dos comentários YAML.
Considerações sobre a atualização
Escolha o caminho de atualização que corresponda à forma como deseja lidar com os comentários na sua view de métricas.
Opção 1: Preservar comentários YAML usando o Notebook ou o editor SQL
Se a sua view de métricas contiver comentários YAML (#) que você deseja manter, use os seguintes passos:
- Use o comando
ALTER VIEWem um Notebook ou editor SQL . - Copie a definição YAML original para a seção
$$..$$apósAS. Altere o valor deversionpara1.1. - Salve a view dos métricas.
ALTER VIEW metric_view_name AS
$$
# The notebook preserves inline comments
version: 1.1
source: samples.tpch.orders
fields:
- 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)
$$
Executar ALTER VIEW remove os comentários Unity Catalog , a menos que estejam explicitamente incluídos nos campos comment da definição YAML. Para preservar os comentários exibidos no Unity Catalog, consulte a Opção 2.
Opção 2: Preservar comentários Unity Catalog
As orientações a seguir se aplicam somente ao usar o comando ALTER VIEW em um Notebook ou editor SQL . Se você atualizar sua view de métricas para a versão 1.1 usando a interface do editor YAML, a interface do editor YAML preservará automaticamente seus comentários Unity Catalog .
- Copie todos os comentários do Unity Catalog para os campos
commentapropriados em sua definição YAML. Altere o valor deversionpara1.1. - Salve a view dos métricas.
ALTER VIEW metric_view_name AS
$$
version: 1.1
source: samples.tpch.orders
comment: "Metric view of order (Updated comment)"
fields:
- 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 a história da versão da especificação YAML e os requisitos mínimos de tempo de execução para cada recurso, consulte detalhes view disponibilidade do recurso.