Partilhar via


Usar SQL para criar e gerenciar exibições de métricas

Esta página explica como criar e gerenciar exibições métricas usando SQL.

Pré-requisitos

  • Você deve ter SELECT privilégios nos objetos de dados de origem.
  • Você deve ter o CREATE TABLE privilégio e o USE SCHEMA privilégio no esquema em que deseja criar a exibição métrica.
  • Você também deve ter o USE CATALOG privilégio no catálogo pai do esquema.
  • PODE USAR permissões em um SQL warehouse ou outro recurso de computação executando o Databricks Runtime 17.2 ou superior.

Um administrador de metastore ou o proprietário do catálogo pode conceder todos esses privilégios. Um proprietário ou usuário do esquema com o privilégio MANAGE pode conceder-lhe privilégios de USE SCHEMA e CREATE TABLE no esquema.

Criar uma vista métrica

Use CREATE VIEW com a WITH METRICS cláusula para criar uma exibição métrica. A visualização de métricas deve ser definida com a especificação YAML válida no corpo do texto. Os dados de origem de uma exibição métrica podem ser uma tabela, uma exibição ou uma consulta SQL.

Os dados de origem para a vista métrica seguinte são a samples.tpch.orders tabela disponível no catálogo de exemplos para a maioria das implementações do Azure Databricks. A DDL SQL a seguir cria uma exibição de métrica nomeada orders_metric_view no catálogo e esquema atuais. Para especificar um catálogo e esquema diferentes, use o namespace de três níveis do Unity Catalog.

Você pode adicionar comentários no nível da tabela e no nível da coluna à definição da exibição métrica.

CREATE OR REPLACE VIEW orders_metric_view
WITH METRICS
LANGUAGE YAML
AS $$
  version: 1.1
  comment: "Orders KPIs for sales and financial analysis"
  source: samples.tpch.orders
  filter: o_orderdate > '1990-01-01'
  dimensions:
    - name: Order Month
      expr: DATE_TRUNC('MONTH', o_orderdate)
    - name: Order Status
      expr: CASE
        WHEN o_orderstatus = 'O' then 'Open'
        WHEN o_orderstatus = 'P' then 'Processing'
        WHEN o_orderstatus = 'F' then 'Fulfilled'
        END
    - name: Order Priority
      expr: SPLIT(o_orderpriority, '-')[1]
  measures:
    - name: Order Count
      expr: COUNT(1)
    - name: Total Revenue
      expr: SUM(o_totalprice)
    - name: Total Revenue per Customer
      expr: SUM(o_totalprice) / COUNT(DISTINCT o_custkey)
    - name: Total Revenue for Open Orders
      expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus='O')
$$

Alterar uma vista métrica

Para fazer alterações na definição associada a uma exibição métrica, use ALTER VIEW. O seguinte exemplo adiciona comentários a dimensões e medidas na vista de métricas orders_metric_view.

ALTER VIEW orders_metric_view
AS $$
  version: 1.1
  comment: "Orders KPIs for sales and financial analysis"
  source: samples.tpch.orders
  filter: o_orderdate > '1990-01-01'
  dimensions:
    - name: Order Month
      expr: DATE_TRUNC('MONTH', o_orderdate)
      comment: "Month of order"
    - name: Order Status
      expr: CASE
        WHEN o_orderstatus = 'O' then 'Open'
        WHEN o_orderstatus = 'P' then 'Processing'
        WHEN o_orderstatus = 'F' then 'Fulfilled'
        END
      comment: "Status of order: open, processing, or fulfilled"
    - name: Order Priority
      expr: SPLIT(o_orderpriority, '-')[1]
      comment: "Numeric priority 1 through 5; 1 is highest"
  measures:
    - name: Order Count
      expr: COUNT(1)
    - name: Total Revenue
      expr: SUM(o_totalprice)
      comment: "Sum of total price"
    - name: Total Revenue per Customer
      expr: SUM(o_totalprice) / COUNT(DISTINCT o_custkey)
      comment: "Sum of total price by customer"
    - name: Total Revenue for Open Orders
      expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus='O')
      comment: "Potential revenue from open orders"
$$

Conceder privilégios em uma exibição de métrica

Uma exibição métrica é um objeto protegível do Unity Catalog e segue o mesmo modelo de permissão que outras exibições. Os privilégios são hierárquicos, portanto, os privilégios em um metastore, catálogo ou esquema são transferidos em cascata para os objetos contidos nele. O exemplo a seguir concede privilégios mínimos necessários para que os usuários do data_consumers grupo consultem uma exibição métrica.

GRANT SELECT ON orders_metric_view to `data-consumers`;

Para saber mais sobre privilégios no Catálogo Unity, consulte Gerenciar privilégios no Catálogo Unity. Para saber mais sobre como criar e gerenciar grupos, consulte Grupos.

Obter definição de visualização métrica

Use DESCRIBE TABLE EXTENDED com o parâmetro opcional AS JSON para exibir a definição de uma exibição métrica. O AS JSON parâmetro é opcional. Omiti-lo fornece uma saída que é melhor para leitores humanos, enquanto incluí-lo é melhor para os consumidores de máquinas. O exemplo a seguir retorna uma cadeia de caracteres JSON que descreve a exibição métrica e seus componentes.

DESCRIBE TABLE EXTENDED orders_metric_view AS JSON

Eliminar uma visualização métrica

Use a sintaxe DROP VIEW para eliminar uma vista métrica.

DROP VIEW orders_metric_view;

Próximos passos

Agora que você criou uma exibição de métrica usando SQL, explore estes tópicos relacionados:

Consultar e consumir visualizações métricas

Recursos avançados de visualização de métricas

Métodos alternativos de criação

Governação e segurança