Tutorial: Crie uma view completa do Mesh com junção.
Este tutorial orienta você na criação de uma view abrangente de métricas analíticas do Ventas usando o dataset TPC-H. Ao final, você terá uma view métrica que inclui:
- Combine pedidos e clientes em várias tabelas usando um esquema em floco de neve.
- Define as dimensões para os atributos de tempo, geografia e ordem.
- Calcula medidas simples e complexas, incluindo proporções, agregações filtradas e medidas de janela.
- Utiliza a capacidade de composição para construir métricas complexas a partir de medidas mais simples.
- Inclui metadados do agente para painéis e ferramentas AI .
Se você é novo na visualização de métricas, comece com Criar e editar visualização de métricas para aprender o básico. Este tutorial amplia essa base com a complexidade do mundo real.
Requisitos
Para concluir este tutorial, você precisa de:
- Seu workspace deve estar habilitado para o Unity Catalog.
- Um SQL warehouse ou recurso compute executando Databricks Runtime 17.3 ou superior.
O modelo de dados
O dataset TPC-H modela uma cadeia de suprimentos de atacado. Este tutorial utiliza três tabelas unidas em um esquema em floco de neve:
ordersjunte-se acustomeremo_custkey = c_custkeycustomerjunte-se anationemc_nationkey = n_nationkey
Tabela | Função | colunas principais |
|---|---|---|
| Tabela de fatos (transações de pedidos) |
|
| Tabela de dimensões (detalhes do cliente) |
|
| Tabela de dimensões (referência de país ou região) |
|
o passo 1: Abra o editor YAML
Este tutorial utiliza o editor YAML para criar a definição da sua view de métricas. Para outros métodos, consulte Criar e editar visualização de métricas.
Para abrir o editor YAML:
- Clique
Catálogo na barra lateral workspace .
- Use a barra de pesquisa para encontrar
samples.tpch.orders. - Clique no nome da tabela para exibir os detalhes da tabela.
- Clique em Criar > viewde métricas . Na caixa de diálogo Criar viewde métricas , insira um nome e selecione um catálogo e um destino de esquema. Em seguida, clique em Criar .
- Se necessário, clique em YAML para abrir o editor YAML.
o passo 2: Configure a viewde métricas
Comece com a versão e um comentário descritivo.
version: 1.1
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
Este exemplo define a versão e adiciona uma descrição:
version: 1.1Determina a versão da especificação YAML.commentO documento descreve a finalidade da view métricas, que aparece no Explorador de Catálogo.
o passo 3: Defina a origem e a junção
Defina a tabela de origem primária e join as tabelas relacionadas. A join nation está aninhada sob a join customer para refletir o esquema de floco de neve, onde nação é uma subdimensão de cliente.
source: SELECT * FROM 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
filter: o_orderdate >= '1995-01-01'
Este exemplo define a tabela de origem, a junção e o filtro:
sourceDefine a tabela de fatos (pedidos) como o grão.joinsTraz dados do cliente usando um relacionamento muitos-para-um.- A join aninhada
nationdemonstra um padrão de esquema em floco de neve, unindo através decustomerpara alcançar dados geográficos. filterLimitações a dados recentes, que se aplicam a todas as consultas nesta view de métricas.
o passo 4: Definir dimensões
As dimensões são os atributos pelos quais os usuários agrupam e filtram.
dimensions:
- name: order_date
expr: o_orderdate
- name: order_month
expr: "DATE_TRUNC('MONTH', o_orderdate)"
- name: order_year
expr: YEAR(o_orderdate)
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
- name: customer_name
expr: customer.c_name
- name: market_segment
expr: customer.c_mktsegment
- name: customer_nation
expr: customer.nation.n_name
Este exemplo demonstra padrões dimensionais:
- As dimensões temporais em múltiplas granularidades (data, mês, ano) atendem a diferentes necessidades de análise.
CASEExpressões transformam códigos enigmáticos em rótulos amigáveis para empresas.- As colunas unidas fazem referência a tabelas usando o alias definido em
joins(comocustomer.c_name). - As colunas join aninhadas usam a notação de ponto encadeado (como
customer.nation.n_name) para percorrer o esquema em floco de neve.
a etapa 5: Definir medidas
As métricas são os cálculos que os usuários desejam analisar. Defina primeiro as medidas atômicas e, em seguida, use a composibilidade para construir métricas complexas que referenciam medidas definidas anteriormente com a função MEASURE() .
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
- name: total_revenue
expr: SUM(o_totalprice)
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
Este exemplo demonstra padrões de medição:
- Medidas atômicas (
order_count,total_revenue,unique_customers) são agregações simples que formam os blocos de construção. - As medidas compostas (
avg_order_value,revenue_per_customer) fazem referência a medidas definidas anteriormente usandoMEASURE()em vez de duplicar a lógica de agregação. Setotal_revenuefor alterado, essas medidas usarão automaticamente a definição atualizada. Veja Composability. FILTERAs cláusulas criam métricas condicionais sem dimensões separadas.- A métrica de janela
t7d_customerscalcula uma contagem móvel de 7 dias de clientes únicos, útil para acompanhar as tendências de engajamento ao longo do tempo. Consulte Medidas de janela para obter mais padrões de medidas de janela.
o passo 6: Adicionar metadados do agente
Os metadados do agente aprimoram a visualização de dados e melhoram a precisão do LLM, fornecendo nomes de exibição, especificações de formato e sinônimos. Adicione essas propriedades às suas dimensões e medidas para dar contexto de negócios às suas métricas.
dimensions:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', o_orderdate)"
display_name: Order Month
- name: order_year
expr: YEAR(o_orderdate)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
Este exemplo adiciona os seguintes metadados do agente:
display_nameFornece rótulos legíveis para humanos que aparecem em ferramentas de visualização em vez de nomes técnicos de colunas.formatDefine como os valores são exibidos (moeda, número, porcentagem) nos painéis.synonymsAjudar ferramentas AI como Genie a descobrir dimensões e medidas por meio de consultas em linguagem natural.
Para obter detalhes completos sobre as opções de metadados do agente, consulte Metadados do agente na visualização métricas.
o passo 7: definição completa de YAML
Aqui está a definição completa view métrica:
version: 1.1
source: SELECT * FROM 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
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
dimensions:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', o_orderdate)"
display_name: Order Month
- name: order_year
expr: YEAR(o_orderdate)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
Crie a view de métricas usando SQL
Se você estiver criando essa definição fora do Catalog Explorer, execute o seguinte SQL para criar a view de métricas. Cole o YAML completo acima entre os delimitadores $$ .
CREATE OR REPLACE VIEW catalog.schema.tpch_sales_analytics
WITH METRICS
LANGUAGE YAML
AS $$
version: 1.1
source: SELECT * FROM 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
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
dimensions:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', o_orderdate)"
display_name: Order Month
- name: order_year
expr: YEAR(o_orderdate)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
$$;
Para outras formas de criar uma view de métricas, consulte Criar e editar visualização de métricas.
o passo 8: Consulte sua viewde métricas
Agora você pode consultar usando uma sintaxe adequada para negócios:
-- Aggregates total revenue, order count, and average order value
-- by customer nation and market segment, ranked by highest revenue first.
SELECT
customer_nation,
market_segment,
MEASURE(total_revenue) AS total_revenue,
MEASURE(order_count) AS order_count,
MEASURE(avg_order_value) AS avg_order_value
FROM catalog.schema.tpch_sales_analytics
GROUP BY customer_nation, market_segment
ORDER BY total_revenue DESC;
-- Monthly trend with backlog analysis
SELECT
order_month,
order_status,
MEASURE(total_revenue) AS total_revenue,
MEASURE(open_order_revenue) AS open_order_revenue
FROM catalog.schema.tpch_sales_analytics
GROUP BY order_month, order_status
ORDER BY order_month;
O que você aprendeu
Você criou uma view de métricas que demonstra:
Recurso | Exemplo |
|---|---|
Ordens para cliente para país (junção aninhada de muitos para um) | |
Granularidade de data, mês e ano. | |
| |
| |
| |
| |
Contagem de clientes acumulada em 7 dias usando | |
|
Próximos passos
- Medidas de janela para calcular médias móveis e totais acumulados no ano.
- Materialização para visualização de métricas para melhorar o desempenho de consultas para grandes conjuntos de dados.
- Use a visualização de métricas view usar suas métricas em painéis de AI/BI .