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.
Neste tutorial, constrói uma vista de métrica de análise de vendas sobre o conjunto de dados TPC-H. No fim, terá uma visão métrica que:
- Combina encomendas e clientes em várias tabelas usando um esquema em floco de neve.
- Define campos (também chamados de dimensões) para atributos de tempo, geografia e ordem.
- Calcula medidas simples e complexas, incluindo rácios, agregações filtradas e medidas de janela.
- Utiliza a composabilidade para construir métricas complexas a partir de medidas mais simples.
- Define um parâmetro para aplicar uma taxa de desconto no momento da consulta.
- Inclui metadados do agente para painéis e ferramentas de IA.
Se és novo nas vistas métricas, começa com Criar uma vista métrica para aprenderes o básico. Este tutorial estende essa base com a complexidade do mundo real.
Requisitos
Para concluir este tutorial, tem de ter:
- Um espaço de trabalho ativado para o Unity Catalog.
- Um armazém SQL ou recurso de computação em execução no Databricks Runtime 17.3 ou superior.
Para a lista completa de privilégios necessários para criar uma vista métrica, veja Pré-requisitos.
Note
A criação de uma vista métrica é suportada no Databricks Runtime 16.4 e superiores. Este tutorial utiliza funcionalidades que requerem Databricks 17.3 ou superior, e alguns passos requerem um tempo de execução posterior. Para o tempo mínimo de execução de cada funcionalidade, consulte Disponibilidade de funcionalidades na vista métrica.
O modelo de dados
O conjunto de dados TPC-H modela uma cadeia de abastecimento grossista. Este tutorial utiliza três tabelas unidas num esquema floco de neve:
-
ordersjunta-se acustomeremo_custkey = c_custkey -
customerjunta-se anationemc_nationkey = n_nationkey
| Tabela | Função | Colunas-chave |
|---|---|---|
orders |
Tabela de factos (transações de pedidos) |
o_orderkey, o_custkey, o_totalprice, o_orderdate, o_orderstatus |
customer |
Tabela de dimensões (detalhes do cliente) |
c_custkey, c_name, c_mktsegment, c_nationkey |
nation |
Tabela de dimensões (referência de país ou região) |
n_nationkey, n_name, n_regionkey |
Passo 1: Criar a vista métrica e abrir o editor
Pode construir esta vista métrica na interface do Catalog Explorer, gerá-la com o Genie Code ou escrever diretamente a definição YAML completa. Os três métodos resolvem para uma única definição YAML que modela a vista métrica. Em cada passo que se segue, selecione a interface do Explorador de Catálogo ou o separador do editor YAML para seguir o método preferido. Se usares o editor YAML, o código de exemplo em cada passo é a parte da definição YAML que corresponde ao que constróis nesse passo.
Note
Os exemplos de YAML neste tutorial usam a fields palavra-chave. Quando constróis uma vista métrica no editor low-code, o YAML que gera usa a palavra-chave equivalente dimensions em vez disso. Ver Campos.
Se não estiver familiarizado com a interface para criar vistas métricas, veja Criar uma vista métrica.
Para criar a visualização de métricas, no Catalog Explorer:
- Pesquise por
samples.tpch.orders. - Clique no nome da tabela.
- Clique em Criar>vista métrica e nomeie a vista.
Para os passos detalhados de criação, veja Criar uma vista métrica. Quando o editor abrir, use o separador UI para construir de forma interativa, ou clique no <> botão para editar diretamente a definição YAML.
Passo 2: Configurar a vista métrica
Defina uma versão e uma descrição para a vista métrica. O version determina a versão da especificação YAML, e o comment documenta o propósito da vista de métricas, que aparece no Explorador de Catálogos. O Azure Databricks gere a versão por ti.
UI do Explorador de Catálogo
A versão está definida para si. Para adicionar ou editar a descrição depois de guardar a vista métrica:
- No Explorador de Catálogos, pesquise a visualização de métricas e clique no respetivo nome.
- Clique em Descrição e depois introduza uma descrição da vista métrica. Pode utilizar a descrição de exemplo apresentada no separador do Editor YAML.
Este texto corresponde ao comment campo na definição YAML. Para mais formas de editar uma vista métrica, veja Editar uma vista métrica.
Editor YAML
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
Passo 3: Defina a origem e as uniões
Defina a tabela de origem primária e junte tabelas relacionadas:
-
sourcedefine a tabela de factos (ordens) como o grão. -
joinstraz dados dos clientes através de uma relação muitos-para-um. - A junção aninhada
nationdemonstra um padrão de esquema em floco de neve, estabelecendo a junção através decustomerpara aceder a dados geográficos, em que a nação é uma subdimensão do cliente.
UI do Explorador de Catálogo
Este exemplo adiciona duas associações, ambas Many-to-one, para modelar o esquema em floco de neve.
Para adicionar a associação customer:
- No editor, clique em Join no canto superior direito para abrir a caixa de diálogo Add join.
- Procura por
samples.tpch.customer, clica no nome da tabela e depois clica em Adicionar. - Defina a condição de junção para
o_custkey = c_custkey. - Em Cardinalidade de Junção, selecione Muitos para um. Para obter orientações sobre como escolher uma cardinalidade, consulte Cardinalidade de junção.
Em seguida, adicione a associação aninhada nation. Repita os passos da associação customer, associando samples.tpch.nation a c_nationkey = n_nationkey. Ao aninhar o join sob customer, modela a nação como uma subdimensão do cliente.
Para os passos completos do diálogo de junção, veja Passo 2: Adicionar uma junção.
Editor YAML
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
Passo 4: Defina um filtro
A filter limita os dados de origem, e aplica-se a todas as consultas na vista métrica. Este tutorial limita a vista métrica a dados recentes.
UI do Explorador de Catálogo
Para definir o filtro:
- No editor, clique
Filtro no canto superior direito.
- Utilize os menus pendentes para definir a Coluna como
o_orderdate, o Operador como>=e o Valor como1995-01-01.
Para mais informações sobre filtros, veja Passo 3: Defina um filtro.
Editor YAML
filter: o_orderdate >= '1995-01-01'
Passo 5: Definir campos
Os campos são os atributos pelos quais os utilizadores agrupam e filtram. Um campo pode ser uma coluna categórica (como região ou estado) ou uma coluna numérica não agregada (como idade ou quantidade) que os utilizadores agregam no momento da consulta.
Metadados do agente
Cada campo e medida neste tutorial inclui propriedades de metadados do agente que melhoram a forma como a sua vista métrica funciona com painéis e ferramentas de IA:
-
display_name: Um rótulo legível que aparece nas visualizações em vez do nome da coluna técnica. -
synonyms: Nomes alternativos que ajudam ferramentas de IA como o Genie a descobrir campos e medidas através de consultas em linguagem natural. -
format: Como os valores são exibidos em superfícies a jusante como painéis, cadernos e resultados de consultas SQL, por exemplo, como moeda, número ou percentagem.
Estas propriedades são opcionais, mas recomendadas. As definições de campo e medida nos passos seguintes incluem-nas em linha.
Definições de campo
Este tutorial acrescenta:
-
Campos de tempo:
order_date,order_month, eorder_yearem múltiplas granularidades para suportar diferentes necessidades de análise. -
Campos transformados:
order_statuseorder_priority, que usamCASEeSPLITpara converter código-fonte em etiquetas legíveis. -
Campos associados:
customer_name,market_segment, ecustomer_nation, que referenciam tabelas associadas utilizando o nome da junção. Colunas de junção aninhadas usam notação de ponto encadeado, comocustomer.nation.n_name, para percorrer o esquema floco de neve.
UI do Explorador de Catálogo
O editor adiciona automaticamente todas as colunas de origem ao separador Campos . Editar, renomear, remover e adicionar campos para que a vista métrica defina exatamente o seguinte. Para cada campo, clique no respetivo nome para o editar ou clique em
Adicionar para o criar e, em seguida, defina a expressão no modo Construtor ou Personalizado. Defina o Nome de Exibição e os Sinónimos de cada campo conforme mostrado.
order_date: No modo Builder, selecione a coluna
o_orderdate. Defina o nome de exibição paraOrder Date.order_month: No modo Personalizado, introduza
DATE_TRUNC('MONTH', order_date). Defina o nome de exibição paraOrder Month.order_year: No modo Personalizado, introduza
YEAR(order_date). Defina o nome de exibição paraOrder Year.order_status: No modo Personalizado , introduza a seguinte expressão. Defina o nome de exibição para
Order Statuse sinónimos parastatus,fulfillment status.CASE o_orderstatus WHEN 'O' THEN 'Open' WHEN 'P' THEN 'Processing' WHEN 'F' THEN 'Fulfilled' ENDorder_priority: No modo Personalizado , introduza
SPLIT(o_orderpriority, '-')[0]. Defina o nome de exibição paraPriority.customer_name: No modo Builder , selecione a
c_namecoluna da tabela unidacustomer. Defina o nome de exibição paraCustomer Name.market_segment: No modo Builder, selecione a coluna
c_mktsegmentda tabela associadacustomer. Defina o nome de exibição paraMarket Segmente sinónimos parasegment,industry.customer_nation: No modo Personalizado, introduza
customer.nation.n_namepara referenciar a junção aninhadanation. Defina o nome de exibição paraCountrye sinónimos paranation,country.
Para os passos completos do campo, veja Passo 4: Adicionar campos.
Editor YAML
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
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
Passo 6: Definir parâmetros
Os parâmetros permitem passar valores para a vista da métrica quando a consultas, por isso uma única definição pode servir muitas variantes de consulta. Este tutorial adiciona um discount parâmetro que uma medida posterior usa para calcular receitas descontadas. O parâmetro tem como padrão , 0por isso consultas que não passam um valor retornam receitas não descontadas. Para mais informações sobre parâmetros, veja Usar parâmetros com vistas métricas.
UI do Explorador de Catálogo
No cabeçalho do editor, clique em Adicionar parâmetro. Insira discount como nome, depois introduza um valor predefinido de 0 e selecione o tipo de double dado.
Editor YAML
parameters:
- name: discount
data_type: double
default: 0
Passo 7: Defina medidas
As medidas são os cálculos que os utilizadores querem analisar. Defina primeiro as medidas atómicas, depois use a composabilidade para construir métricas complexas que referenciam medidas previamente definidas com a MEASURE() função. Defina o display_name, format, e synonyms para cada medida conforme descrito nos metadados do Agente. Este tutorial acrescenta:
-
Medidas atómicas:
order_count,total_revenue, eunique_customers, as agregações simples que formam os blocos de construção. -
Composições compostas:
avg_order_valueerevenue_per_customer, que referenciam medidas definidas anteriormente comMEASURE()em vez da lógica de agregação duplicada. Setotal_revenuealterar, estas medidas utilizam automaticamente a definição atualizada. Consulte Composabilidade. -
Medidas filtradas:
open_order_revenueefulfilled_order_revenue, que usamFILTER (WHERE ...)para criar métricas condicionais sem campos separados. -
Medida parametrizada:
discounted_revenue, que faz referência aodiscountparâmetro para aplicar uma taxa de desconto. Ver Usar parâmetros com vistas métricas. -
Medida em janela:
t7d_customers, que calcula uma contagem contínua de 7 dias de clientes únicos. Consulte Medidas de janelas para mais padrões de medidas de janela.
UI do Explorador de Catálogo
O editor adiciona automaticamente uma medida de exemplo COUNT(*) . Edite ou remova e adicione medidas para que a vista métrica defina exatamente o seguinte. Para cada medida, clique em
Adicionar e, em seguida, defina a expressão no modo Construtor ou Personalizado. Defina o Nome de Exibição, o Formato e os Sinónimos conforme mostrado. Use 2 casas decimais para formatos de moeda e 0 casas decimais para formatos numéricos.
-
order_count: No modo Builder , selecione a agregação distinta Count em
o_orderkey. Defina o nome de exibição paraOrder Count, formatar para Número. -
total_revenue: No modo Builder , selecione a agregação Sum em
o_totalprice. Defina o nome de exibição paraTotal Revenue, formato para Moeda (USD), sinónimos pararevenue,sales. -
discounted_revenue: No modo Personalizado, introduza
SUM(o_totalprice * (1 - discount)). Defina o nome de exibição paraDiscounted Revenue, formato para Moeda (USD). -
unique_customers: No modo Builder , selecione a agregação distinta Count em
o_custkey. Defina o nome de exibição paraUnique Customers, formatar para Número. -
avg_order_value: No modo Personalizado, introduza
MEASURE(total_revenue) / MEASURE(order_count). Defina o nome de exibição paraAvg Order Value, formate para Moeda (USD), sinónimos paraAOV. -
revenue_per_customer: No modo Personalizado, introduza
MEASURE(total_revenue) / MEASURE(unique_customers). Defina o nome de exibição paraRevenue per Customer, formato para Moeda (USD). -
open_order_revenue: No modo Personalizado, introduza
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O'). Defina o nome de exibição paraOpen Order Revenue, formate para Moeda (USD), sinónimos parabacklog. -
fulfilled_order_revenue: No modo Personalizado, introduza
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F'). Defina o nome de exibição paraFulfilled Revenue, formato para Moeda (USD). -
t7d_customers: Em modo Personalizado, introduza
COUNT(DISTINCT o_custkey). Em seguida, clica + Janela e configura uma janela ordenada pororder_datecom intervalotrailing 7 daye agregação semiaditivalast. Defina o nome de exibição para7-Day Rolling Customers, formatar para Número.
Para os passos completos da medida, veja Passo 5: Adicionar medidas.
Editor YAML
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: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- 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
Rever a definição completa
Após completar os passos acima, a sua vista métrica tem a seguinte definição completa:
Veja a definição completa do YAML
version: 1.1
parameters:
- name: discount
data_type: double
default: 0
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
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
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: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- 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 vista métrica usando SQL
Se estiver a construir esta definição fora do Explorador de Catálogos, execute o seguinte SQL para criar a vista métrica:
CREATE OR REPLACE VIEW catalog.schema.tpch_sales_analytics
WITH METRICS
LANGUAGE YAML
AS $$
version: 1.1
parameters:
- name: discount
data_type: double
default: 0
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
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
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: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- 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 vista métrica, veja Criar uma vista métrica.
Passo 8: Consulte a sua vista métrica
Consulte a vista de métricas usando uma sintaxe adequada à empresa. A função MEASURE() agrega uma medida à granularidade dos campos selecionados.
Medidas agregadas por dimensão
Este exemplo agrega medidas em múltiplos campos. Apresenta receita total, número de encomendas e valor médio das encomendas por país cliente e segmento de mercado, classificados primeiro pela receita mais alta:
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;
Analisar uma tendência mensal
Este exemplo combina um campo temporal com medidas para acompanhar uma tendência. Apresenta a receita total e a receita de encomendas abertas (carteira de encomendas) por mês e estado das encomendas:
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;
Passar um valor de parâmetro
Como a vista métrica define um parâmetro, pode chamá-lo como uma função de tabela e passar um valor no momento da consulta. A consulta seguinte aplica um desconto de 10%. Como discount tem um padrão de 0, as consultas que omitam o argumento retornam receita não descontada:
SELECT
customer_nation,
MEASURE(total_revenue) AS total_revenue,
MEASURE(discounted_revenue) AS discounted_revenue
FROM catalog.schema.tpch_sales_analytics(discount => 0.1)
GROUP BY customer_nation
ORDER BY discounted_revenue DESC;
O que aprendeste
Criaste uma vista métrica que demonstra:
| Feature | Example |
|---|---|
| Juntas de esquemas floco de neve | Ordens para cliente para nação (junções muitos-para-um) |
| Campos de hora | Data, mês, ano granularidade |
| Campos transformados |
CASE instruções, SPLIT funções |
| Medidas simples |
COUNT, SUM |
| Composabilidade |
avg_order_value e revenue_per_customer referenciar medidas definidas anteriormente usando MEASURE() |
| Medidas filtradas |
FILTER (WHERE ...) para agregações condicionais |
| Medidas de janelas | Contagem móvel de clientes de 7 dias usando trailing 7 day |
| Parâmetros |
discount parâmetro aplicado na discounted_revenue medida |
| Metadados do agente |
display_name, format, synonyms nos campos e medidas |
Recursos adicionais
- Medidas da janela para calcular médias móveis e totais acumulados do ano.
- Materialização para vistas métricas para melhorar o desempenho das consultas em grandes conjuntos de dados.
- Use vistas métricas para usar a sua vista métrica em dashboards de IA/BI.