Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As definições de vista métrica usam a sintaxe padrão YAML para declarar a fonte, joins, campos, medidas, filtros, medidas janela e materialização. As secções seguintes documentam a gramática completa de cada um.
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.
Editar YAML no editor de vista métrica
Pode escrever e editar o YAML descrito nesta página diretamente no editor de vista métrica. No Explorador de Catálogos, abra uma vista métrica e clique no <> botão para editar a definição. Para gerar YAML a partir de uma descrição em linguagem natural, abra o Código Genie a partir do editor. Para o guia completo do editor, consulte Criar uma vista métrica.
Campos YAML de topo
A definição de YAML para uma exibição métrica inclui os seguintes campos de nível superior:
| Campo | Tipo | Description |
|---|---|---|
version |
Cordão | Required. A versão da especificação YAML da vista métrica que a definição utiliza, como 1.1. Esta é a versão do formato da especificação, não um número de revisão que atribui à sua própria definição. Use uma das versões de especificação suportadas. Ver versões da especificação YAML. |
comment |
Cordão | Optional. Descrição da visualização métrica. |
source |
Cordão | Required. 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. |
parameters |
Array | Optional. Valores nomeados que os chamadores passam quando consultam a vista da métrica como uma função com valores de tabela. Consulte Parâmetros. |
filter |
Cordão | Optional. Uma expressão booleana SQL que se aplica a todas as consultas. Ver Filtro. |
joins |
Array | Optional. O esquema estrela e o esquema floco de neve juntam-se. Ver Junções. |
fields |
Array | Condicional. Definições de campos incluindo nome, expressão e metadados semânticos opcionais. É obrigatório se não measures forem especificados. Ver Campos. A dimensions palavra-chave é aceite como sinónimo de compatibilidade retroativa. |
measures |
Array | Condicional. Definições de medidas incluindo nome, expressão agregada e metadados semânticos opcionais. É obrigatório se não fields forem especificados. Ver Medidas. |
materialization |
Objeto | Optional. 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. |
Source
O source campo especifica a fonte de dados para a vista métrica. As fontes suportadas incluem tabelas, vistas, vistas métricas e consultas SQL. A composabilidade aplica-se em várias vistas métricas. Ao usar uma vista métrica como fonte, pode referenciar os seus campos 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
Note
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, veja Declarar restrições de chave primária, chave estrangeira e única e otimização de consultas usando chave primária e restrições únicas.
Parâmetros
O bloco parameters define valores nomeados que os chamadores passam quando consultam a vista da métrica como uma função com valores de tabela. Para saber quando e como usar parâmetros, incluindo consultar uma vista métrica parametrizada, veja Usar parâmetros com vistas métricas.
Cada definição de parâmetro inclui os seguintes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
Cordão | Required. O nome do parâmetro. Referenciar o parâmetro com este nome nas expressões de campo e medir, e passá-lo como um argumento nomeado quando consultares a vista métrica. |
data_type |
Cordão | Required. O tipo de dados SQL do parâmetro, como double, int, string, ou date. |
default |
Varia | Optional. O valor usado quando um chamador não ultrapassa o parâmetro. O padrão deve ser castável para data_type, e não pode referenciar outro parâmetro nem conter uma subconsulta. Se definires um padrão para um parâmetro, todos os parâmetros que o seguem também devem ter um padrão. |
O exemplo seguinte define um discount parâmetro e referencia-o numa expressão de medida:
version: 1.1
source: main.default.sales
parameters:
- name: discount
data_type: double
default: 0
fields:
- name: product
expr: product
measures:
- name: discountedSales
expr: SUM((1 - discount) * amount)
Filtro
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
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). Também pode juntar-se a uma consulta SQL usando uma SELECT instrução. Veja Usar uma consulta SQL como fonte.
Note
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.
Cada definição de junção inclui os seguintes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
Cordão | Required. Alias para a tabela unida ou consulta SQL. Use este alias ao referenciar colunas da tabela unida em campos ou medidas. |
source |
Cordão | Required. Nome em três partes da mesa a juntar. Também pode ser uma consulta SQL. |
on |
Cordão | Condicional. Expressão booleana que define a condição de junção. Obrigatório se using não for especificado. |
using |
Array | Condicional. Lista de nomes de colunas presentes tanto na tabela principal como na tabela conjunta. Obrigatório se on não for especificado. |
cardinality |
Cordão | Optional. O valor padrão é many_to_one. A relação entre a fonte e a mesa unida. Defina para one_to_many agregar uma tabela que tenha múltiplas linhas correspondentes por linha de origem como fonte de facto separada. Ver uniões de um para muitos. |
joins |
Array | Optional. 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. |
rely |
Mapa | Optional. Promessas sobre a junção em que o analisador pode confiar para produzir planos de consulta mais eficientes. Consulte Otimizar junções com rely. |
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:
-
ONcláusula: Usa uma expressão booleana para definir a condição de junção. -
USINGcláusula: Lista colunas com o mesmo nome tanto na tabela principal como na tabela junta.
A associação tem de seguir uma relação de 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
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)
Note
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
fields:
- name: customer_nation
expr: customer.nation.n_name
Junções de um para muitos
O cardinality campo define a relação entre a fonte e uma tabela unida. O padrão, many_to_one, trata a tabela unida como uma consulta de dimensão. Definido cardinality: one_to_many para tratar a tabela unida como uma fonte de factos que o motor agrega independentemente no grão de origem, o que permite que uma única linha de origem corresponda a várias linhas na tabela junta. As junções de um para muitos requerem o Databricks Runtime 18.1 ou posterior e a versão 1.1 da especificação YAML.
Ver disponibilidade da funcionalidade de vista métrica.
As seguintes regras aplicam-se a junções um-para-muitas:
- Uma coluna um-para-muitos não pode ser usada numa
fieldsdefinição, porque um campo deve resolver para um único valor por linha de origem. - Uma única função de agregação deve referenciar colunas de uma fonte. Pode aplicar a aritmética entre os resultados de agregações separadas, como
count(orders.order_id) / count(*). - Todos os descendentes de uma junção um-para-muitos também devem ser
one_to_many. As junções de irmãos de topo podem misturar cardinalidades. - Referenciar uma coluna numa junção aninhada com o seu caminho de pontos completo através dos nomes da junção, como
orders.order_items.item_id.
Note
Quando uma vista métrica usa uma one_to_many junção, as suas materializações qualificam-se apenas para correspondência exata. A correspondência de rolo não está disponível. Veja o jogo Rollup.
O exemplo seguinte junta-se orders a uma customers fonte com cardinality: one_to_many para que as medidas de encomenda se agreguem sem duplicar linhas de clientes:
version: 1.1
source: main.sales.customers
joins:
- name: orders
source: main.sales.orders
on: orders.customer_id = source.customer_id
cardinality: one_to_many
fields:
- name: customer_name
expr: customer_name
measures:
- name: customer_count
expr: count(*)
- name: order_count
expr: count(orders.order_id)
- name: total_order_revenue
expr: sum(orders.amount)
Para detalhes conceptuais e exemplos de junções aninhadas e irmãs, veja Cardinalidade de junção.
Otimizar junções com rely
Use o rely campo numa junção para declarar garantias sobre a relação que o analisador de consultas utiliza ao planear consultas. Estas garantias permitem ao motor planear consultas de forma mais eficiente e reduzir a análise de dados, especialmente quando os campos da tabela unida são referenciados em filtros.
O rely mapa suporta os seguintes campos:
| Campo | Tipo | Description |
|---|---|---|
at_most_one_match |
booleano | Optional. O valor padrão é false. Quando true, declara que no máximo uma linha na tabela unida corresponde a cada linha da fonte (uma relação muitos-para-um que não se espalha). |
Warning
Define at_most_one_match: true apenas quando a junção for muitos-para-um. Esta relação não é validada em tempo de execução. Se várias linhas na tabela unida corresponderem a uma única linha de origem, medidas (como SUM e COUNT) retornam resultados incorretos.
O exemplo seguinte permite at_most_one_match numa junção muitos-para-um de orders para customer. As consultas que filtram ou agrupam por atributos do cliente são as que mais beneficiam:
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
Note
fields e dimensions são palavras-chave equivalentes numa definição de vista métrica.
fields é o termo preferido e é utilizado em toda esta documentação. O editor low-code do Explorador de Catálogo rotula estas colunas como Campos, mas o YAML que gera usa a dimensions palavra-chave. As vistas de métricas existentes que usam dimensions continuam a funcionar, e ambas as palavras-chave são aceites em definições novas ou atualizadas.
Os campos são colunas de vista métrica usadas em SELECT, WHERE, e GROUP BY cláusulas no momento da consulta. Cada expressão deve retornar um valor escalar. Os campos podem referenciar colunas a partir dos dados de origem ou campos definidos anteriormente na vista métrica.
Um campo pode ser:
- Uma coluna categórica ou de agrupamento, como uma região, estatuto ou departamento.
- Uma coluna numérica não agregada, como uma idade, preço ou quantidade. Os campos numéricos podem ser agregados em tempo de consulta usando funções SQL como
SUMouAVG.
Cada definição de campo inclui as seguintes propriedades:
| Property | Tipo | Description |
|---|---|---|
name |
Cordão | Obrigatório para expressões explícitas de colunas. O pseudónimo da coluna para o campo. Omit-na para expressões coringa, onde o Azure Databricks deriva nomes da fonte. Ver Campos e medidas de importação em massa com wildcards. |
expr |
Cordão | Required. Uma expressão SQL que pode referenciar colunas a partir dos dados de origem ou de um campo previamente definido. Pode ser um coringa para importar todas as colunas da origem ou uma tabela unida. Ver Campos e medidas de importação em massa com wildcards. |
comment |
Cordão | Optional. Descrição do campo. Aparece no Catálogo Unity e nas ferramentas de documentação. |
display_name |
Cordão | Optional. Etiqueta que aparece nas ferramentas de visualização. Limitado a 255 caracteres. Requer a especificação YAML 1.1. Ver disponibilidade da funcionalidade de vista métrica. |
format |
Mapa | Optional. Especificação de formato para como os valores são apresentados. Requer a especificação YAML 1.1. Consulte especificações de formato. |
synonyms |
Array | Optional. Nomes alternativos para ferramentas de IA e BI para descobrir a área. Até 10 sinónimos, cada um limitado a 255 caracteres. Requer a especificação YAML 1.1. Ver Sinónimos. |
Warning
Campos métricos de visualização semelhantes a strings são sempre STRING, mesmo quando a coluna de origem é CHAR ou VARCHAR. Como se perde o preenchimento com espaços em CHAR(n), as comparações podem produzir resultados diferentes. Por exemplo, column = 'COLLEGE' corresponde a um CHAR(10) valor na tabela de origem (que é preenchido por espaço), mas não no campo de visualização métrica.
Example:
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
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 colunas base nos dados de origem, campos definidos anteriormente ou medidas definidas anteriormente.
Cada definição de medida inclui os seguintes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
Cordão | Exigido para expressões explícitas de medida. O pseudónimo para a medida. Omit-na para expressões coringa, onde o Azure Databricks deriva nomes da fonte. Ver Campos e medidas de importação em massa com wildcards. |
expr |
Cordão | Required. Uma expressão SQL contendo uma ou mais funções agregadas. Pode ser um coringa importar todas as medidas a partir de uma fonte de visualização métrica. Ver Campos e medidas de importação em massa com wildcards. |
comment |
Cordão | Optional. Descrição da medida. Aparece no Catálogo Unity e nas ferramentas de documentação. |
display_name |
Cordão | Optional. Etiqueta que aparece nas ferramentas de visualização. Limitado a 255 caracteres. Requer a especificação YAML 1.1. Ver disponibilidade da funcionalidade de vista métrica. |
format |
Mapa | Optional. Especificação de formato para como os valores são apresentados. Requer a especificação YAML 1.1. Consulte especificações de formato. |
synonyms |
Array | Optional. Nomes alternativos para ferramentas de IA e BI para descobrir a medida. Até 10 sinónimos, cada um limitado a 255 caracteres. Requer a especificação YAML 1.1. Ver disponibilidade da funcionalidade de vista métrica. |
window |
Array | Optional. 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. Consulte Dimensões da janela. |
Consulte Agregar funções para obter uma lista de funções agregadas.
Example:
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']
Campos e medidas de importação em massa com curingas
Aplica-se a: Databricks Runtime 18.2 e superiores com especificação YAML 1.1
Na definição de uma fields ou measures ou, pode usar um coringa (*) no expr campo para importar todas as colunas da fonte ou de uma tabela unida sem listar cada uma. Isto é útil quando se quer que uma vista métrica exponha todas as colunas de um ativo a montante, semelhante a SELECT * uma vista padrão. O Azure Databricks expande o coringa para colunas concretas quando cria ou substitui a vista métrica, e deriva o nome de cada coluna a partir do nome da coluna de origem.
Tal como as definições explícitas de colunas, as expressões coringa são expandidas quando se cria a vista métrica. Para apanhar colunas adicionadas à fonte mais tarde, recrie a vista métrica com CREATE OR REPLACE ou ALTER.
Os curingas suportam as seguintes formas:
| Sintaxe | Description |
|---|---|
source.* |
Importa todas as colunas da fonte da vista métrica. |
<join>.* |
Importar todas as colunas de uma tabela junta, referenciadas pelo seu nome de junção. Junções aninhadas usam o caminho completo dos pontos, como customer.nation.*. |
<target>.* EXCEPT (col1, col2, ...) |
Importa todas as colunas do alvo, exceto as listadas. |
<target>.<struct>.* |
Expanda os campos de uma STRUCT coluna em colunas separadas. |
As seguintes regras aplicam-se às expressões coringa:
- Omite o
namecampo. O Azure Databricks deriva nomes de colunas da fonte, por issonamenão é permitido numa expressão wildcard. - Metadados semânticos não são permitidos numa expressão wildcard. Não definas
comment,display_name,format, nemsynonymsnum coringa. Para adicionar metadados a uma coluna específica, exclua-a do coringa comEXCEPTe defina-a explicitamente. - Numa
measuresdefinição, um curinga importa medidas apenas de uma fonte de visualização métrica. As tabelas base não têm medidas, por isso um coringa expande-se para nenhuma medida quando a fonte é uma tabela base. - Não podes referenciar uma coluna importada por um coringa pelo seu nome derivado numa expressão posterior
fieldsoumeasuresexpressão. Consulte a coluna de origem com o seu caminho completo em vez disso.
Colisões de nomes de resolução
Quando importa colunas de mais do que uma fonte com um coringa, colunas que partilham um nome (como id ou date) colidem e causam um erro ao guardar a definição. Para resolver uma colisão, exclua a coluna de cada curinga com EXCEPT, depois defina-a explicitamente com um nome único:
fields:
- expr: source.* EXCEPT (id)
- expr: customer.* EXCEPT (id)
- name: source_id
expr: source.id
- name: customer_id
expr: customer.id
Exemplo de coringa
A definição seguinte importa todas as colunas da fonte e de uma tabela unida, exclui duas colunas e define explicitamente uma coluna para adicionar metadados:
version: 1.1
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
fields:
# Import all columns from the source
- expr: source.*
# Import all columns from a joined table, excluding two
- expr: customer.nation.* EXCEPT (n_name, n_comment)
# Define a specific column explicitly to add metadata
- name: nation_name
expr: customer.nation.n_name
comment: "Customer's nation"
display_name: 'Nation Name'
Medidas de janela
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 | Tipo | Description |
|---|---|---|
order |
Cordão | Required. O campo que determina a ordem da janela. (1) |
range |
Cordão | Required. A extensão da janela.
Ver Valores Suportadosrange. O valor numérico em um trailingleading ou intervalo pode ser um parâmetro inteiro em vez de literal, pelo que um chamador passa o tamanho da janela no momento da consulta. Veja Passar um tamanho de janela como parâmetro. |
semiadditive |
Cordão | Required. Método de agregação. Valores suportados: first ou last. |
offset |
Cordão | Optional. Requer Databricks Runtime 18.1 e especificação YAML versão 1.1 ou superior. Desloca a moldura da janela para trás ou para a frente ao longo do order campo num intervalo fixo. O valor é da forma , onde <n> <period> é um inteiro assinado (negativo olha para trás, positivo olha para a frente) e n é um de period, day, days, month, months, ou year.years Exemplos: -12 month, 1 year, -3 days, 7 day. O order campo deve ser uma coluna de data ou hora.
offset não tem efeito em range: all. Se o referencial deslocado ficar fora dos dados disponíveis, a medida avalia para NULL. O inteiro assinado pode ser um parâmetro inteiro em vez de literal, por isso um chamador passa o deslocamento no momento da consulta. O sinal deve fazer parte do valor do parâmetro, não escrito antes do nome do parâmetro. Veja Passar um tamanho de janela como parâmetro. Para utilização e exemplos trabalhados, veja Como offset desloca a moldura da janela. |
(1) O campo referenciado deve ser determinístico. Expressões não determinísticas como rand(), uuid(), ou current_timestamp() produzem ordenação de janelas imprevisível e podem levar a resultados de agregação incorretos.
Valores de range suportados
-
current: Linhas em que o valor da ordem das janelas é igual ao valor da linha âncora. -
cumulative: Todas as linhas em que o valor da ordem das janelas é menor ou igual ao valor da linha âncora. -
trailing <value> <unit> [inclusive | exclusive]: Linhas da linha âncora a recuar pelas unidades de tempo especificadas, portrailing 7 dayexemplo . O opcionalinclusiveouexclusivemodificador requer Databricks Runtime 18.1 e especificação YAML versão 1.1 ou superior, e controla se a linha âncora está incluída na janela. A predefinição éexclusive. Veja Incluir ou excluir a linha âncora. -
leading <value> <unit> [inclusive | exclusive]: Linhas da linha âncora a avançar pelas unidades de tempo especificadas, porleading 3 monthexemplo . O opcionalinclusiveouexclusivemodificador requer Databricks Runtime 18.1 e especificação YAML versão 1.1 ou superior, e controla se a linha âncora está incluída na janela. A predefinição éexclusive. Veja Incluir ou excluir a linha âncora. -
all: Todas as linhas independentemente do valor de ordem da janela.
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
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
Passar um tamanho de janela como parâmetro
Em vez de codificar o valor numérico num trailing ou leadingrangeoffset num , podes referenciar um parâmetro, para que o chamador passe o tamanho da janela quando consulta a vista métrica. Isto requer um SQL warehouse ou outro recurso de computação a correr Databricks Runtime 18.2 ou superior.
As seguintes regras aplicam-se a um parâmetro usado como tamanho de janela:
- Os
data_typeparâmetros devem ser integrais, comoint,smallint, oubigint. - O valor deve ser apenas um nome de parâmetro, não uma expressão. Por exemplo, use
trailing window_size day, nãotrailing window_size + 1 day. Também não pode escrever um sinal antes do nome do parâmetro, como-window_sizenumoffset. Para passar um deslocamento negativo, coloque o sinal dentro do valor do parâmetro. - O parâmetro não pode ser nomeado a partir de uma palavra-chave de janela, como um tipo de intervalo (
trailing,leading), um período (day,month,year), uma palavra-chave de inclusividade (inclusive,exclusive), ouoffset. - A unidade mantém-se literal. Podes parametrizar apenas a magnitude numérica, não o período.
O exemplo seguinte define um window_size parâmetro e referencia-o num trailing intervalo, de modo que cada chamador escolhe o número de dias na janela móvel:
version: 1.1
source: samples.tpch.orders
parameters:
- name: window_size
data_type: int
default: 7
fields:
- name: order_date
expr: o_orderdate
measures:
- name: rolling_customers
expr: COUNT(DISTINCT o_custkey)
display_name: 'Rolling Customers'
window:
- order: order_date
range: trailing window_size day
semiadditive: last
Para consultar uma vista métrica que define parâmetros, veja Consultar uma vista métrica com parâmetros.
Materialização
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.
Note
Não se pode materializar uma vista métrica que defina parâmetros.
O materialization campo inclui os seguintes campos de nível superior:
| Campo | Tipo | Description |
|---|---|---|
schedule |
Cordão | Optional. Horário de atualização. Utiliza a mesma sintaxe da cláusula schedule nas visualizações materializadas. Se forem omitidas, as materializações são atualizadas apenas manualmente. Para ativar uma atualização manual, veja Atualização manual. A cláusula TRIGGER ON UPDATE não é suportada. |
mode |
Cordão | Required. Deve ser definido como relaxed. |
materialized_views |
Array | Required. Lista de vistas materializadas a concretizar-se. Cada entrada requer os campos descritos abaixo. |
Cada entrada inclui materialized_views os seguintes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
Cordão | Required. O nome da materialização. |
type |
Cordão | Required. Tipo de materialização. Valores suportados: aggregated (requer dimensions, measures, ou ambos) ou unaggregated. Apenas uma unaggregated entrada é permitida por vista métrica. Entradas não agregadas não usam os dimensions campos ou.measures |
dimensions |
Array | Condicional. Lista de nomes de campos a materializar, usando a dimensions palavra-chave mesmo que a sua definição de topo use fields. É necessário se type for aggregated e não measures forem especificados. |
measures |
Array | Condicional. Lista de nomes de medidas a materializar. É necessário se type for aggregated e não dimensions forem especificados. |
cluster_by |
Objeto | Optional. Agrupamento de colunas para a materialização, equivalente à CLUSTER BY cláusula numa vista materializada. Especifique cols com uma lista de nomes de colunas, ou defina auto: true para permitir que os Databricks escolham automaticamente as colunas de agrupamento. |
partition_by |
Array | Optional. Lista de colunas a partir da materialização, equivalente à PARTITION BY cláusula numa vista materializada. |
Note
O bloco de materialização usa a dimensions: palavra-chave em vez de fields:. Use dimensions: ao listar campos para materializar, mesmo que a sua definição de topo use fields:.
Exemplo de materialização
O exemplo seguinte define uma vista métrica com múltiplas materializações:
version: 1.1
source: prod.operations.orders_enriched_view
filter: revenue > 0
# filter, fields, and measures can't use invoker-dependent expressions: no current_user(), is_member(), etc.
# source can't have RLS, column masking, or ABAC policies
joins:
- name: customers
source: prod.operations.customers
on: source.customer_id = customers.id
# if one-to-many, all materializations below drop to exact match only
fields:
- name: category
expr: substring(category, 5)
- name: order_date
expr: order_date
measures:
- name: total_revenue
expr: SUM(revenue)
- name: number_of_suppliers
expr: COUNT(DISTINCT supplier_id)
- name: revenue_for_open_orders
expr: SUM(revenue) FILTER (WHERE status = 'O')
- name: blended_margin
expr: SUM(revenue) - SUM(cost)
- name: rolling_7day_customers
expr: COUNT(DISTINCT customer_id)
window:
- order: order_date
range: trailing 7 day
semiadditive: last
materialization:
schedule: every 6 hours
mode: relaxed
materialized_views:
- name: baseline
type: unaggregated
# only one allowed per metric view; doesn't use dimensions or measures keys
# no benefit if source is an unfiltered direct table reference
- name: daily_status_metrics
type: aggregated
dimensions:
- order_date
- category # avoid overly granular dimensions, such as millisecond timestamps
measures:
- total_revenue # rollup-eligible
- number_of_suppliers # exact match only (non-additive)
- revenue_for_open_orders # rollup-eligible (deterministic filter)
- blended_margin # exact match only (multiple aggregates)
- rolling_7day_customers # exact match only (window measure)
cluster_by:
cols:
- order_date
- category
partition_by:
- order_date
Referências de nomes de colunas
Ao referenciar nomes de colunas que contenham espaços ou caracteres especiais em expressões YAML, inclua o nome da coluna em backticks. 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
Os exemplos seguintes mostram como formatar referências de colunas dependendo dos caracteres que contêm.
Sem espaços
Coluna fonte: revenue
expr: "revenue"
expr: 'revenue'
expr: revenue
Use aspas duplas, aspas simples ou sem aspas ao redor do nome da coluna.
Nome da coluna com espaços
Coluna fonte: `First Name`
expr: '`First Name`'
Use backticks para escapar de espaços. Coloque toda a expressão entre aspas duplas.
Nomes de colunas com espaços numa expressão SQL
Colunas fonte: `First Name`, `Last Name`
expr: CONCAT(`First Name`, ' ', `Last Name`)
Se a expressão não começar com um backtick, não são necessárias aspas duplas.
Nome da coluna contendo aspas
Coluna fonte: "name"
expr: '`"name"`'
Use os backticks para evitar as aspas duplas no nome da coluna. Inclua a expressão entre aspas simples.
Expressões com dois pontos
expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END"
Note
YAML interpreta dois pontos sem aspas como separadores chave-valor. Use sempre aspas duplas em torno de expressões que incluam dois pontos.
Expressões multi-linha
expr: |
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
Note
Use o | escalar de blocos depois expr: para expressões multilinhas. Todas as linhas devem ser recuadas pelo menos dois espaços além da chave expr para a análise correta.
Atualização para YAML 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 em linha ou de linha única escritos diretamente no ficheiro YAML. - Comentários do Catálogo Unity: Comentários armazenados no Catálogo Unity para a vista métrica ou as suas colunas. Estes são separados dos comentários YAML.
Considerações sobre a atualização
Seleciona o caminho de atualização que corresponde à forma como queres tratar os comentários na tua vista métrica.
Opção 1: Preservar comentários YAML usando blocos de anotações ou o editor SQL
Se a sua vista métrica contiver comentários YAML (#) que pretende manter, use os seguintes passos:
- Use o
ALTER VIEWcomando em um bloco de anotações ou editor SQL. - Copie a definição original do YAML para a
$$..$$secção seguinteASa . Altere o valor deversionpara1.1. - Salve a visualização métrica.
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)
$$
Warning
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
Note
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.
- Copie todos os comentários do Catálogo Unity para os campos apropriados
commentna sua definição de YAML. Altere o valor deversionpara1.1. - 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)"
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 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.