Tutorial: criar uma exibição de métrica com junções e modelagem de dados

Neste tutorial, você criará uma exibição de métrica de análise de vendas no conjunto de dados TPC-H. Ao final, você terá uma visão de métricas que:

  • Une pedidos 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 proporções, agregações filtradas e medidas de janela.
  • Usa a capacidade de compilar métricas complexas com base em medidas mais simples.
  • Define um parâmetro para aplicar uma taxa de desconto no momento da consulta.
  • Inclui metadados do agente para dashboards e ferramentas de IA.

Se você não estiver familiarizado com as exibições de métrica, comece com Criar uma exibição de métrica para aprender as noções básicas. Este tutorial amplia essa base com a complexidade do mundo real.

Requisitos

Para concluir este tutorial, você deve ter:

  • Um espaço de trabalho habilitado para usar o Unity Catalog.
  • Um sql warehouse ou recurso de computação executando o Databricks Runtime 17.3 ou superior.

Para obter a lista completa de privilégios necessários para criar uma exibição de métrica, consulte Pré-requisitos.

Note

Há suporte para a criação de uma exibição de métrica no Databricks Runtime 16.4 e superior. Este tutorial usa recursos que exigem o Databricks Runtime 17.3 ou superior e algumas etapas exigem um runtime posterior. Para obter o tempo de execução mínimo para cada recurso, consulte a disponibilidade do recurso de exibição de métrica.

O modelo de dados

O conjunto de dados TPC-H modela uma cadeia de suprimentos por atacado. Este tutorial usa três tabelas unidas em um esquema floco de neve:

  • orders conecta-se a customer em o_custkey = c_custkey
  • customer conecta-se a nation em c_nationkey = n_nationkey
Tabela Função Colunas de chave
orders Tabela de fatos (transações de pedido) o_orderkey, o_custkey, o_totalprice, , o_orderdateo_orderstatus
customer Tabela de dimensões (detalhes do cliente) c_custkey, c_name, , c_mktsegmentc_nationkey
nation Tabela de dimensão (referência de país ou região) n_nationkey, n_name, n_regionkey

Etapa 1: Criar a exibição de métrica e abrir o editor

Você pode criar essa exibição de métrica na interface do usuário do Gerenciador de Catálogos, gerá-la com o Genie Code ou gravar a definição completa do YAML diretamente. Todos os três métodos resultam em uma única definição YAML que modela a visualização de métrica. Em cada etapa a seguir, selecione a guia Catalog Explorer UI ou YAML editor para usar o método de sua preferência. Se você usar o editor YAML, o código de exemplo em cada etapa será a parte da definição yaml que corresponde ao que você cria nessa etapa.

Note

Os exemplos yaml neste tutorial usam a fields palavra-chave. Quando você cria uma visualização de métrica no editor low-code, o YAML que ele gera usa a palavra-chave equivalente dimensions em vez disso. Consulte Campos.

Se você não estiver familiarizado com a interface do usuário para criar exibições de métrica, consulte Criar uma exibição de métrica.

Para criar a exibição de métrica, no Gerenciador de Catálogos:

  1. Pesquise por samples.tpch.orders.
  2. Clique no nome da tabela.
  3. Clique em Criar>Visualização de métrica e dê um nome à visualização.

Para obter as etapas de criação detalhadas, consulte Criar uma exibição de métrica. Quando o editor abrir, use a guia UI para criar interativamente ou clique no botão <> para editar a definição YAML diretamente.

Etapa 2: Configurar o modo de exibição de métrica

Defina uma versão e uma descrição para a exibição de métrica. O version determina a versão da especificação YAML, e o comment documenta a finalidade da visualização da métrica, que aparece no Catalog Explorer. Azure Databricks gerencia a versão para você.

Interface do usuário do Catalog Explorer

A versão é definida para você. Para adicionar ou editar a descrição depois de salvar a exibição de métrica:

  1. No Explorador de Catálogo, pesquise a visualização de métricas e clique no nome dela.
  2. Clique em Descrição e, em seguida, insira uma descrição da visualização de métricas. Você pode usar a descrição de exemplo mostrada na guia Editor YAML.

Esse texto corresponde ao comment campo na definição yaml. Para obter mais maneiras de editar uma exibição de métrica, consulte Editar uma exibição de 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

Etapa 3: Definir a origem e as junções

Defina a tabela de origem principal e faça a junção com tabelas relacionadas:

  • source define a tabela de fatos (ordens) como a granularidade.
  • joins traz dados do cliente usando uma relação muitos para um.
  • A junção aninhada nation demonstra um padrão de esquema em floco de neve, unindo por meio de customer para alcançar dados geográficos, onde a nação é uma subdimensão do cliente.

Interface do usuário do Catalog Explorer

Este exemplo adiciona duas junções, ambas Muitos para um, para modelar o esquema em floco de neve.

Para adicionar a junção customer:

  1. No editor, clique em Junção no canto superior direito para abrir a caixa de diálogo Adicionar junção.
  2. Pesquise por samples.tpch.customer, clique no nome da tabela e, em seguida, clique em Adicionar.
  3. Defina a condição de junção como o_custkey = c_custkey.
  4. Em Cardinalidade da Junção, selecione Muitos para um. Para obter orientação sobre como escolher uma cardinalidade, consulte Cardinalidade de junção.

Em seguida, adicione a junção aninhada nation. Repita as etapas da junção customer unindo samples.tpch.nation em c_nationkey = n_nationkey. Aninhar a junção em customer modela a nação como uma subdimensão do cliente.

Para ver as etapas completas da caixa de diálogo de junção, consulte Etapa 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

Etapa 4: Definir um filtro

Um filter limita os dados de origem e se aplica a todas as consultas na visualização de métricas. Este tutorial limita a exibição de métrica a dados recentes.

Interface do usuário do Catalog Explorer

Para definir o filtro:

  1. No editor, clique no ícone Filtrar.Filtre no canto superior direito.
  2. Use os menus suspensos para definir a Coluna como o_orderdate, o Operador como >= e o Valor como 1995-01-01.

Para obter mais informações sobre filtros, consulte a Etapa 3: Definir um filtro.

Editor YAML

filter: o_orderdate >= '1995-01-01'

Etapa 5: Definir campos

Os campos são os atributos pelos quais os usuários agrupam e filtram. Um campo pode ser uma coluna categórica (como região ou status) ou uma coluna numérica não agregada (como idade ou quantidade) que os usuários 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 sua exibição de métrica funciona com dashboards e ferramentas de IA:

  • display_name: um rótulo legível que aparece em 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 por meio de consultas de linguagem natural.
  • format: como os valores são exibidos em superfícies downstream, como painéis, notebooks e resultados de consulta SQL, por exemplo, como moeda, número ou porcentagem.

Essas propriedades são opcionais, mas recomendadas. As definições de campo e medida nas etapas a seguir os incluem em linha.

Definições do campo

Este tutorial adiciona:

  • Campos de tempo:order_date, order_monthe order_year em várias granularidades para dar suporte a diferentes necessidades de análise.
  • Campos transformados:order_status e order_priority, que usam CASE e SPLIT para converter códigos de origem em rótulos legíveis.
  • Campos unidos:customer_name, market_segmente customer_nation, que fazem referência a tabelas unidas usando o nome da junção. Colunas de junção aninhadas usam a notação de ponto encadeado, como customer.nation.n_name, para percorrer o esquema em floco de neve.

Interface do usuário do Catalog Explorer

O editor adiciona todas as colunas de origem à guia Campos automaticamente. Edite, renomeie, remova e adicione campos para que a exibição de métrica defina exatamente o seguinte. Para cada campo, clique em seu nome para editá-lo ou clique em Adicionar ou mais íconeAdicionar para criá-lo e, em seguida, defina a expressão no modo Construtor ou Personalizado . Defina o nome de exibição e sinônimos para cada campo, conforme mostrado.

  1. order_date: No modo Builder, selecione a coluna o_orderdate. Definir o nome de exibição como Order Date.

  2. order_month: No modo personalizado , insira DATE_TRUNC('MONTH', order_date). Definir o nome de exibição como Order Month.

  3. order_year: No modo personalizado , insira YEAR(order_date). Definir o nome de exibição como Order Year.

  4. order_status: no modo personalizado , insira a seguinte expressão. Defina o nome de exibição como Order Status e os sinônimos como status, fulfillment status.

    CASE o_orderstatus
      WHEN 'O' THEN 'Open'
      WHEN 'P' THEN 'Processing'
      WHEN 'F' THEN 'Fulfilled'
    END
    
  5. order_priority: No modo personalizado , insira SPLIT(o_orderpriority, '-')[0]. Definir o nome de exibição como Priority.

  6. customer_name: No modo Builder, selecione a coluna c_name da tabela associada customer. Definir o nome de exibição como Customer Name.

  7. market_segment: No modo Builder, selecione a coluna c_mktsegment da tabela associada customer. Defina o nome de exibição como Market Segment e os sinônimos como segment, industry.

  8. customer_nation: no modo Personalizado, insira customer.nation.n_name para referenciar a junção aninhada nation. Defina o nome de exibição como Country e os sinônimos como nation, country.

Para obter as etapas completas do campo, consulte a Etapa 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

Etapa 6: Definir parâmetros

Os parâmetros permitem que você passe valores para a exibição de métrica ao consultá-la, de modo que uma única definição possa atender a muitas variantes de consulta. Este tutorial adiciona um discount parâmetro que uma medida posterior usa para calcular a receita com desconto. O parâmetro tem um padrão de 0, portanto, consultas que não passam um valor retornam receita não contada. Para obter mais informações sobre parâmetros, consulte Usar parâmetros com exibições de métrica.

Interface do usuário do Catalog Explorer

No título do editor, clique em Adicionar parâmetro. Insira discount como o nome e, em seguida, insira um valor padrão e selecione o 0 tipo de double dados.

Editor YAML

parameters:
  - name: discount
    data_type: double
    default: 0

Etapa 7: Definir medidas

Medidas são os cálculos que os usuários desejam analisar. Defina as medidas atômicas primeiro e, em seguida, use a capacidade de criar métricas complexas que fazem referência a medidas definidas anteriormente com a MEASURE() função. Defina o display_name, formate synonyms para cada medida, conforme descrito nos metadados do Agente. Este tutorial adiciona:

  • Medidas atômicas:order_count, total_revenuee unique_customers, as agregações simples que formam os blocos de construção.
  • Medidas compostas:avg_order_value e revenue_per_customer, que fazem referência a medidas definidas anteriormente com MEASURE() , em vez de duplicar a lógica de agregação. Se total_revenue forem alteradas, essas medidas usarão automaticamente a definição atualizada. Consulte Modularidade.
  • Medidas filtradas:open_order_revenue e fulfilled_order_revenue, que usam FILTER (WHERE ...) para criar métricas condicionais sem campos separados.
  • Medida parametrizada:discounted_revenue, que faz referência ao discount parâmetro para aplicar uma taxa de desconto. Consulte Usar parâmetros com visualizações de métricas.
  • Medida de janela:t7d_customers, que calcula uma contagem móvel de 7 dias de clientes únicos. Consulte as medidas da janela para obter mais padrões de medida de janela.

Interface do usuário do Catalog Explorer

O editor adiciona uma medida de exemplo COUNT(*) automaticamente. Edite ou remova-o e adicione medidas para que a exibição de métrica defina exatamente o seguinte. Para cada medida, clique em Adicionar ou mais íconeAdicionar 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 de número.

  1. order_count: no modo Construtor, selecione a agregação Contar distintos em o_orderkey. Defina o nome de exibição como Order Count, formate como Número.
  2. total_revenue: no modo Construtor, selecione a agregação Soma em o_totalprice. Defina o nome de exibição como Total Revenue, formatar como Moeda (USD), sinônimos como revenue, sales.
  3. discounted_revenue: no modo Personalizado, insira SUM(o_totalprice * (1 - discount)). Defina o nome de exibição como Discounted Revenue, formate como Moeda (USD).
  4. unique_customers: no modo Construtor, selecione a agregação Contar distintos em o_custkey. Defina o nome de exibição como Unique Customers, formate como Número.
  5. avg_order_value: No modo personalizado , insira MEASURE(total_revenue) / MEASURE(order_count). Defina o nome de exibição como Avg Order Value, formatar como Moeda (USD) e sinônimos como AOV.
  6. revenue_per_customer: No modo personalizado , insira MEASURE(total_revenue) / MEASURE(unique_customers). Defina o nome de exibição como Revenue per Customer, formate como Moeda (USD).
  7. open_order_revenue: no modo Personalizado, insira SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O'). Defina o nome de exibição como Open Order Revenue, formatar como Moeda (USD) e sinônimos como backlog.
  8. fulfilled_order_revenue: no modo Personalizado, insira SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F'). Defina o nome de exibição como Fulfilled Revenue, formate como Moeda (USD).
  9. t7d_customers: No modo personalizado , insira COUNT(DISTINCT o_custkey). Em seguida, clique em + Window e configure uma janela ordenada por order_date, com intervalo trailing 7 day e agregação semiadditiva last. Defina o nome de exibição como 7-Day Rolling Customers, formate como Número.

Para obter as etapas de medida completas, consulte a Etapa 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

Examinar a definição completa

Depois de concluir as etapas acima, sua exibição de métrica tem a seguinte definição completa:

Exibir 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
Criar a exibição de métrica usando o SQL

Se você estiver criando essa definição fora do Catalog Explorer, execute o seguinte SQL para criar a exibição de 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 obter outras maneiras de criar uma exibição de métrica, consulte Criar uma exibição de métrica.

Etapa 8: Consultar sua vista de métricas

Consulte a exibição de métrica usando a sintaxe amigável aos negócios. A função MEASURE() agrega uma medida no nível de granularidade dos campos que você seleciona.

Agrupar medidas por dimensão

Este exemplo agrega medidas em vários campos. Retorna a receita total, a contagem de pedidos e o valor médio do pedido por nação do cliente e segmento de mercado, classificados pela maior receita primeiro:

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 de tempo com medidas para acompanhar uma tendência. Retorna a receita total e a receita de pedidos em aberto (carteira de pedidos) por mês e o status do pedido:

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 exibição de métrica define um parâmetro, você pode chamá-lo como uma função com valor de tabela e passar um valor no momento da consulta. A consulta a seguir aplica um desconto de 10%. Como discount tem um padrão de 0, as consultas que omitem o argumento retornam receita não contada:

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 você aprendeu

Você criou uma visualização de métrica que demonstra:

Característica Example
Junções de esquema snowflake Ordens para cliente para nação (uniões aninhadas muitos para um)
Campos de tempo Granularidade de data, mês, ano
Campos transformados CASE instruções, SPLIT funções
Medidas simples COUNT, SUM
Capacidade de composição avg_order_value e revenue_per_customer referenciam medidas definidas anteriormente usando MEASURE()
Medidas filtradas FILTER (WHERE ...) para agregações condicionais
Medidas de janela Contagem contínua de clientes em um período de 7 dias usando trailing 7 day
Parâmetros discount parâmetro aplicado na discounted_revenue medida
Metadados do agente display_name, format, synonyms em campos e medidas

Recursos adicionais