Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As definições de exibição de métrica usam sintaxe YAML padrão para declarar a origem, junções, campos, medidas, filtros, medidas de janela e materialização. As seções a seguir documentam a gramática completa para cada um.
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.
Editar YAML no editor de exibição de métrica
Você pode escrever e editar o YAML descrito nesta página diretamente no editor de modo de exibição de métrica. No Gerenciador de Catálogos, abra uma exibição de métrica e clique no <> botão para editar a definição. Para gerar YAML a partir de uma descrição de linguagem natural, abra o Genie Code do editor. Para obter o passo a passo completo do editor, consulte Criar uma exibição de métrica.
Campos YAML de nível superior
A definição yaml para uma exibição de métrica inclui os seguintes campos de nível superior:
| Campo | Tipo | Description |
|---|---|---|
version |
String | Required. A versão da especificação YAML da exibição de métrica que a definição usa, como 1.1. Esta é a versão do formato de especificação, não um número de revisão que você atribui à sua própria definição. Use uma das versões de especificação com suporte. Consulte as versões de especificação do YAML. |
comment |
String | Optional. Descrição da visualização de métrica. |
source |
String | Required. 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. |
parameters |
Array | Optional. Valores nomeados que os chamadores passam quando consultam a exibição de métrica como uma função com valor de tabela. Consulte Parâmetros. |
filter |
String | Optional. Uma expressão booliana sql que se aplica a todas as consultas. Consulte Filtro. |
joins |
Array | Optional. Esquema estelar e junções de esquema floco de neve. Consulte Junções. |
fields |
Array | Condicional. Definições de campo, incluindo nome, expressão e metadados semânticos opcionais. Obrigatório se não measures for especificado. Consulte Campos. A dimensions palavra-chave é aceita como sinônimo para compatibilidade com versões anteriores. |
measures |
Array | Condicional. Definições de medida, incluindo nome, expressão agregada e metadados semânticos opcionais. Obrigatório se não fields for especificado. Consulte Medidas. |
materialization |
Objeto | Optional. Configuração para acelerar consultas com exibições materializadas. Inclui agendamento de atualização e definições de exibição materializadas. Consulte Materialização. |
Source
O source campo especifica a fonte de dados para a exibição de métrica. As fontes com suporte incluem tabelas, exibições, exibições de métrica e consultas SQL. 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 seus campos 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
Note
Ao usar uma consulta SQL como fonte com uma cláusula JOIN, defina restrições de chave primária e estrangeira nas tabelas subjacentes e use a opção RELY para obter o desempenho ideal da consulta. Para obter mais informações, consulte Declare primary key, foreign key, and unique constraints and Query optimization using primary key and unique constraints.
Parâmetros
O parameters bloco define valores nomeados que os chamadores passam quando consultam a exibição de métrica como uma função com valor de tabela. Para quando e como usar parâmetros, incluindo a consulta de uma exibição de métrica parametrizada, consulte Usar parâmetros com exibições de métrica.
Cada definição de parâmetro inclui os seguintes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
String | Required. O nome do parâmetro. Faça referência ao parâmetro por esse nome em expressões de campo e medida e passe-o como um argumento nomeado ao consultar a exibição de métrica. |
data_type |
String | Required. O tipo de dados SQL do parâmetro, como double, int, stringou date. |
default |
Variações | Optional. O valor usado quando um chamador não passa o parâmetro. O padrão deve ser castível e data_typenão pode referenciar outro parâmetro ou conter uma subconsulta. Se você definir um padrão para um parâmetro, cada parâmetro que o segue também deverá ter um padrão. |
O exemplo a seguir define um discount parâmetro e faz referência a ele em uma 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 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.
Note
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 | Tipo | Description |
|---|---|---|
name |
String | Required. Alias para a tabela unida ou a consulta SQL. Use esse alias ao referenciar colunas da tabela unida em campos ou medidas. |
source |
String | Required. Nome de três partes da tabela a ser unida. Também pode ser uma consulta SQL. |
on |
String | Condicional. Expressão booliana definindo a condição de junção. Obrigatório se using não for especificado. |
using |
Array | Condicional. Lista de nomes de coluna presentes na tabela pai e na tabela unida. Obrigatório se on não for especificado. |
cardinality |
String | Optional. Usa many_to_one como padrão. A relação entre a origem e a tabela unida. Defina para one_to_many agregar uma tabela que tenha várias linhas correspondentes por linha de origem como uma fonte de fato separada. Consulte junções um-para-muitos. |
joins |
Array | Optional. 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. |
rely |
Mapa | Optional. Promessas sobre a junção em que o analisador pode contar para produzir planos de consulta mais eficientes. Consulte Otimizar junções com rely. |
Junções de esquema estrela
Em um esquema de estrela, a source é a tabela de fatos e se conecta 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:
-
ONcláusula: usa uma expressão booliana para definir a condição de junção. -
USINGcláusula: lista colunas com o mesmo nome na tabela pai e na tabela unida.
A junção deve seguir uma relação 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
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 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
fields:
- name: customer_nation
expr: customer.nation.n_name
Junções um-para-muitos
O cardinality campo define a relação entre a origem e uma tabela unida. O padrão trata many_to_onea tabela unida como uma pesquisa de dimensão. Definido cardinality: one_to_many para tratar a tabela unida como uma fonte de fato que o mecanismo agrega independentemente no grão de origem, o que permite que uma única linha de origem corresponda a várias linhas na tabela unida. As junções de um para muitos exigem o Databricks Runtime 18.1 ou posterior e a versão 1.1 da especificação YAML. Consulte a disponibilidade do recurso de exibição de métrica.
As seguintes regras se aplicam a junções um para muitos:
- Uma coluna um para muitos não pode ser usada em uma
fieldsdefinição, pois um campo deve ser resolvido para um único valor por linha de origem. - Uma única função de agregação deve referenciar colunas de uma fonte. Você pode aplicar aritmética nos 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. Junções de irmãos de alto nível podem misturar cardinalidades. - Referencie uma coluna em uma junção aninhada com seu caminho de ponto completo por meio dos nomes de junção, como
orders.order_items.item_id.
Note
Quando uma exibição de métrica usa uma one_to_many junção, suas materializações se qualificam apenas para correspondência exata. A correspondência de rollup não está disponível. Veja a correspondência de rollup.
O exemplo a seguir une-se orders a uma customers origem com cardinality: one_to_many a qual as medidas de pedido são agregadas sem duplicar linhas do cliente:
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 obter detalhes conceituais e exemplos de junção aninhada e irmão, consulte Junção de cardinalidade.
Otimizar junções com rely
Use o rely campo em uma junção para declarar garantias sobre a relação que o analisador de consulta usa ao planejar consultas. Essas garantias permitem que o mecanismo planeje consultas com mais eficiência e reduza os dados verificados, especialmente quando os campos da tabela unida são referenciados em filtros.
O rely mapa dá suporte aos seguintes campos:
| Campo | Tipo | Description |
|---|---|---|
at_most_one_match |
booleano | Optional. Usa false como padrão. Quando true, declara que no máximo uma linha na tabela unida corresponde a cada linha na origem (uma relação muitos para um que não é fan out). |
Aviso
Defina at_most_one_match: true somente quando a junção for muitos para um. Essa relação não é validada em runtime. Se várias linhas na tabela unida corresponderem a uma única linha de origem, as medidas (como SUM e COUNT) retornarão resultados incorretos.
O exemplo a seguir permite at_most_one_match uma junção muitos para um de orders .customer As consultas que filtram ou agrupam por atributos do cliente se beneficiam mais:
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 em uma definição de exibição de métrica.
fields é o termo preferencial e é usado em toda esta documentação. O editor de código baixo do Gerenciador de Catálogos rotula essas colunas campos, mas o YAML gerado por ele usa a dimensions palavra-chave. As exibições de métrica existentes que usam dimensions continuam funcionando e ambas as palavras-chave são aceitas em definições novas ou atualizadas.
Os campos são colunas de exibição de métrica usadas em SELECT, WHEREe GROUP BY cláusulas no momento da consulta. Cada expressão deve retornar um valor escalar. Os campos podem referenciar colunas dos dados de origem ou campos definidos anteriormente na exibição de métrica.
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 em tempo de consulta usando funções SQL como
SUMouAVG.
Cada definição de campo inclui as seguintes propriedades:
| Propriedade | Tipo | Description |
|---|---|---|
name |
String | Necessário para expressões de coluna explícitas. O alias de coluna para o campo. Omita-o para expressões curinga, em que Azure Databricks deriva nomes da origem. Consulte campos e medidas de importação em massa com curingas. |
expr |
String | Required. Uma expressão SQL que pode referenciar colunas dos dados de origem ou de um campo definido anteriormente. Pode ser um curinga para importar todas as colunas da origem ou de uma tabela unida. Consulte campos e medidas de importação em massa com curingas. |
comment |
String | Optional. Descrição do campo. Aparece no Catálogo do Unity e nas ferramentas de documentação. |
display_name |
String | Optional. Rótulo 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 |
Mapa | Optional. Especificação de formato de como os valores são exibidos. Requer a especificação YAML 1.1. Consulte as especificações de formato. |
synonyms |
Array | Optional. Nomes alternativos para ferramentas de IA e BI para descobrir o campo. Até 10 sinônimos, cada um limitado a 255 caracteres. Requer a especificação YAML 1.1. Consulte Sinônimos. |
Aviso
Os campos de exibição de métrica semelhante à cadeia de caracteres são sempre STRING, mesmo quando a coluna de origem é CHAR ou VARCHAR. Como CHAR(n) o preenchimento de espaço é perdido, as comparações podem retornar resultados diferentes. Por exemplo, column = 'COLLEGE' corresponde a um valor CHAR(10) na tabela de origem (que é preenchida com espaços), mas não no campo da visualização de métricas.
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
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 fazer referência a 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 |
String | Necessário para expressões de medida explícitas. O alias da medida. Omita-o para expressões curinga, em que Azure Databricks deriva nomes da origem. Consulte campos e medidas de importação em massa com curingas. |
expr |
String | Required. Uma expressão SQL que contém uma ou mais funções de agregação. Pode ser um curinga para importar todas as medidas de uma fonte de exibição de métrica. Consulte campos e medidas de importação em massa com curingas. |
comment |
String | Optional. Descrição da medida. Aparece no Catálogo do Unity e nas ferramentas de documentação. |
display_name |
String | Optional. Rótulo 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 |
Mapa | Optional. Especificação de formato de como os valores são exibidos. Requer a especificação YAML 1.1. Consulte as 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. Consulte a disponibilidade do recurso de exibição de métrica. |
window |
Array | Optional. 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.
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 superior com a especificação YAML 1.1
Em uma fields ou measures definição, você pode usar um curinga (*) no expr campo para importar todas as colunas da origem ou de uma tabela unida sem listar cada uma delas. Isso é útil quando você deseja que uma exibição de métrica exponha cada coluna de um ativo upstream, semelhante a SELECT * uma exibição padrão. Azure Databricks expande o curinga para colunas concretas ao criar ou substituir a exibição de métrica e deriva cada nome de coluna do nome da coluna de origem.
Assim como as definições de coluna explícitas, as expressões curinga são expandidas quando você cria a exibição de métrica. Para pegar as colunas adicionadas à origem posteriormente, recrie a exibição de métrica com CREATE OR REPLACE ou ALTER.
Os curingas dão suporte aos seguintes formulários:
| Sintaxe | Description |
|---|---|
source.* |
Importe todas as colunas da origem da exibição de métrica. |
<join>.* |
Importe todas as colunas de uma tabela unida, referenciada por seu nome de junção. As junções aninhadas usam o caminho de ponto completo, como customer.nation.*. |
<target>.* EXCEPT (col1, col2, ...) |
Importe todas as colunas do destino, exceto as listadas. |
<target>.<struct>.* |
Expanda os campos de uma STRUCT coluna em colunas separadas. |
As seguintes regras se aplicam a expressões curinga:
- Omita o
namecampo. Azure Databricks deriva nomes de coluna da origem, portantoname, não é permitido em uma expressão curinga. - Metadados semânticos não são permitidos em uma expressão curinga. Não defina
comment,display_nameouformatsynonymsem um curinga. Para adicionar metadados a uma coluna específica, exclua-os do curingaEXCEPTe defina-os explicitamente. - Em uma
measuresdefinição, um curinga importa medidas somente de uma fonte de exibição de métrica. As tabelas base não têm medidas, portanto, um curinga se expande para nenhuma medida quando a origem é uma tabela base. - Você não pode referenciar uma coluna importada por curinga por seu nome derivado em uma expressão ou
fieldsposteriormeasures. Faça referência à coluna de origem com seu caminho completo.
Resolver colisões de nome
Quando você importa colunas de mais de uma fonte com um curinga, colunas que compartilham um nome (como id ou date) colidem e causam um erro ao salvar a definição. Para resolver uma colisão, exclua a coluna de cada caractere curinga e EXCEPTdefina-a explicitamente com um nome exclusivo:
fields:
- expr: source.* EXCEPT (id)
- expr: customer.* EXCEPT (id)
- name: source_id
expr: source.id
- name: customer_id
expr: customer.id
Exemplo curinga
A definição a seguir importa todas as colunas da origem e de uma tabela unida, exclui duas colunas e define uma coluna explicitamente 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'
Dimensões da janela
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 | Tipo | Description |
|---|---|---|
order |
String | Required. O campo que determina a ordenação da janela. (1) |
range |
String | Required. A extensão da janela. Consulte os valores com range suporte. O valor numérico em um trailingleading ou intervalo pode ser um parâmetro inteiro em vez de literal, então um chamador passa o tamanho da janela em no momento da consulta. Veja Passar um tamanho de janela como parâmetro. |
semiadditive |
String | Required. Método de agregação. Valores com suporte: first ou last. |
offset |
String | Optional. Requer o Databricks Runtime 18.1 e a especificação YAML versão 1.1 ou superior. Desloca o quadro da janela para trás ou para frente ao longo do order campo por um intervalo fixo. O valor é do formulário <n> <period>, onde n é um inteiro com sinal (negativo olha para trás, positivo olha para frente) e period é um de day, days, month, months, , yearou years. Exemplos: -12 month, 1 year, -3 days, 7 day. O order campo deve ser uma coluna de data ou carimbo de data/hora.
offset não tem nenhum efeito sobre range: all. Se o quadro deslocado ficar fora dos dados disponíveis, a medida será avaliada como NULL. O inteiro assinado pode ser um parâmetro inteiro em vez de literal, então um chamador passa o deslocamento no momento da consulta. O sinal deve fazer parte do valor do parâmetro, não ser escrito antes do nome do parâmetro. Veja Passar um tamanho de janela como parâmetro. Para obter exemplos de uso e de trabalho, consulte Como offset desloca o quadro da janela. |
(1) O campo referenciado deve ser determinístico. Expressões não determinísticas, como rand(), uuid()ou current_timestamp() produzem ordenações de janela imprevisíveis e podem levar a resultados de agregação incorretos.
Valores suportados de range
-
current: linhas em que o valor de ordenação da janela é igual ao valor da linha de âncora. -
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 de âncora indo para trás pelas unidades de tempo especificadas, por exemplotrailing 7 day. O modificador ouinclusiveopcionalexclusiverequer o Databricks Runtime 18.1 e a especificação YAML versão 1.1 ou superior e controla se a linha de âncora está incluída na janela. O padrão éexclusive. Consulte Incluir ou excluir a linha de âncora. -
leading <value> <unit> [inclusive | exclusive]: linhas da linha de âncora daqui para frente pelas unidades de tempo especificadas, por exemploleading 3 month. O modificador ouinclusiveopcionalexclusiverequer o Databricks Runtime 18.1 e a especificação YAML versão 1.1 ou superior e controla se a linha de âncora está incluída na janela. O padrão éexclusive. Consulte Incluir ou excluir a linha de âncora. -
all: todas as linhas, independentemente do valor de ordenação da janela.
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
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
Passe um tamanho de janela como parâmetro
Em vez de codificar o valor numérico em um trailing ou leadingrange ou em um offset, você pode referenciar um parâmetro, para que o chamador passe o tamanho da janela ao consultar a visualização da métrica. Isso requer um SQL warehouse ou outro recurso de computação rodando Databricks Runtime 18.2 ou superior.
As seguintes regras se aplicam a um parâmetro usado como tamanho de janela:
- Os
data_typeparâmetros devem ser integrais, comoint,smallint, oubigint. - O valor deve ser um nome de parâmetro simples, não uma expressão. Por exemplo, use
trailing window_size day, e nãotrailing window_size + 1 day. Você também não pode escrever um sinal antes do nome do parâmetro, como-window_sizeem umoffset. 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 permanece literal. Você pode parametrizar apenas a magnitude numérica, não o período.
O exemplo a seguir define um window_size parâmetro e o referencia em um 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 visualização métrica que define parâmetros, veja Consultar uma visualização métrica com parâmetros.
Materialização
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.
Note
Você não pode materializar uma exibição de métrica que define parâmetros.
O materialization campo inclui os seguintes campos de nível superior:
| Campo | Tipo | Description |
|---|---|---|
schedule |
String | Optional. Agendamento de atualização. Usa a mesma sintaxe que a cláusula schedule em exibições materializadas. Se omitidas, as materializações serão atualizadas apenas manualmente. Para disparar uma atualização manual, consulte Atualização manual. Não há suporte para a cláusula TRIGGER ON UPDATE. |
mode |
String | Required. Deve ser definido como relaxed. |
materialized_views |
Array | Required. Lista de exibições materializadas a serem materializadas. Cada entrada requer os campos descritos abaixo. |
Cada entrada inclui materialized_views os seguintes campos:
| Campo | Tipo | Description |
|---|---|---|
name |
String | Required. O nome da materialização. |
type |
String | Required. Tipo de materialização. Valores com suporte: aggregated (requer dimensions, measuresou ambos) ou unaggregated. Somente uma unaggregated entrada é permitida por exibição de métrica. Entradas não agregadas não usam os campos oudimensions.measures |
dimensions |
Array | Condicional. Lista de nomes de campo a serem materializados, usando a dimensions palavra-chave mesmo que sua definição de nível superior use fields. Obrigatório se type for aggregated e não measures for especificado. |
measures |
Array | Condicional. Lista de nomes de medidas a serem materializados. Obrigatório se type for aggregated e não dimensions for especificado. |
cluster_by |
Objeto | Optional. Colunas de clustering para a materialização, equivalente à CLUSTER BY cláusula em uma exibição materializada. Especifique cols com uma lista de nomes de coluna ou defina auto: true para permitir que o Databricks escolha as colunas de clustering automaticamente. |
partition_by |
Array | Optional. Lista de colunas para particionar a materialização por, equivalente à PARTITION BY cláusula em uma exibição materializada. |
Note
O bloco de materialização usa a dimensions: palavra-chave em vez de fields:. Use dimensions: ao listar campos para se materializar, mesmo que sua definição de nível superior use fields:.
Exemplo de materialização
O exemplo a seguir define uma exibição de métrica com várias 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 ao nome da coluna
Ao referenciar nomes de coluna que contêm espaços ou caracteres especiais em expressões YAML, coloque o nome da coluna em backticks. 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
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 ao redor do nome da coluna.
Nome da coluna com espaços
Coluna de origem: `First Name`
expr: '`First Name`'
Use acentos graves para escapar de espaços. Coloque a expressão inteira entre aspas duplas.
Nomes de coluna 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 backtick, as aspas duplas não serão necessárias.
Nome da coluna que contém aspas
Coluna de origem: "name"
expr: '`"name"`'
Use backticks para escapar das 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"
Note
YAML interpreta dois pontos sem estar entre aspas como separadores chave-valor. Sempre use aspas duplas em torno de expressões com dois pontos.
Expressões de várias linhas
expr: |
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
Note
Use o | escalar de bloco depois 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 para o YAML 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. - Comentários do Catálogo do Unity: Comentários armazenados no Catálogo do Unity para a exibição de métrica ou suas colunas. Eles são separados dos comentários YAML.
Considerações sobre atualização
Selecione o caminho de atualização que corresponde à forma como você deseja lidar com comentários em sua exibição de métrica.
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:
- Use o
ALTER VIEWcomando em um notebook ou editor do SQL. - Copie a definição original do YAML para a
$$..$$seção apósAS. Altere o valor deversionpara1.1. - 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
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)
$$
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
Note
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.
- Copie todos os comentários do Unity Catalog nos campos apropriados
commentna definição do YAML. Altere o valor deversionpara1.1. - 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)"
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 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.