Comparteix via


Uso de SQL para crear y administrar vistas de métricas

En esta página se explica cómo crear y administrar vistas de métricas mediante SQL.

Prerrequisitos

  • Debe tener privilegios SELECT en los objetos de datos de origen.
  • Debe tener el CREATE TABLE privilegio y el USE SCHEMA privilegio en el esquema en el que desea crear la vista de métricas.
  • También debe tener el USE CATALOG privilegio en el catálogo primario del esquema.
  • PUEDE USAR permisos en un almacén de SQL u otro recurso de cálculo que ejecute Databricks Runtime 17.2 o superior.

Un administrador de metastore o el propietario del catálogo puede concederle todos estos privilegios. Un propietario o usuario de esquema con el privilegio de MANAGE puede concederle privilegios USE SCHEMA y CREATE TABLE en el esquema.

Creación de una vista de métricas

Use CREATE VIEW con la WITH METRICS cláusula para crear una vista de métrica. La vista de métricas debe definirse con una especificación YAML válida en el cuerpo. Los datos de origen de una vista de métrica pueden ser una tabla, vista o consulta SQL.

Los datos de origen de la siguiente vista de métricas son la samples.tpch.orders tabla disponible en el catálogo de ejemplos para la mayoría de las implementaciones de Azure Databricks. El siguiente DDL de SQL crea una vista de métrica denominada orders_metric_view en el catálogo y el esquema actuales. Para especificar un catálogo y un esquema diferentes, use el espacio de nombres de tres niveles del catálogo de Unity.

Puede agregar comentarios de nivel de tabla y de columna a la definición de la vista de 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')
$$

Modificación de una vista de métrica

Para realizar cambios en la definición asociada a una vista de métrica, use ALTER VIEW. En el siguiente ejemplo se agregan comentarios a las dimensiones y medidas en la 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"
$$

Otorgar privilegios sobre una vista de métricas

Una vista de métrica es un objeto protegible del catálogo de Unity y sigue el mismo modelo de permisos que otras vistas. Los privilegios son jerárquicos, por lo que los privilegios de una metastore, catálogo o esquema se aplican en cascada a los objetos contenidos en ellos. En el ejemplo siguiente se conceden privilegios mínimos necesarios para que los usuarios del data_consumers grupo consulten una vista de métrica.

GRANT SELECT ON orders_metric_view to `data-consumers`;

Para más información sobre los privilegios en el catálogo de Unity, consulte Administración de privilegios en el catálogo de Unity. Para más información sobre cómo crear y administrar grupos, consulte Grupos.

Obtener definición de vista de métrica

Use DESCRIBE TABLE EXTENDED con el parámetro opcional AS JSON para ver la definición de una vista de métrica. El AS JSON parámetro es opcional. Omitirlo proporciona una salida que es mejor para los lectores humanos, al tiempo que incluirlo es mejor para los consumidores de máquinas. En el ejemplo siguiente se devuelve una cadena JSON que describe la vista de métrica y sus componentes.

DESCRIBE TABLE EXTENDED orders_metric_view AS JSON

Eliminar una vista de métricas

Utilice la sintaxis DROP VIEW para eliminar una vista de métricas.

DROP VIEW orders_metric_view;

Pasos siguientes

Ahora que ha creado una vista de métricas con SQL, explore estos temas relacionados:

Consultar y consumir vistas de métricas

Características avanzadas de la vista de métricas

Métodos de creación alternativos

Gobernanza y seguridad