Compartir a través de


Supervisión de los costos mediante tablas del sistema

En este artículo se explica cómo puede usar la tabla system.billing.usage por su cuenta o combinarla con otras tablas del sistema para obtener una imagen del uso de Azure Databricks de su cuenta. También están disponibles los siguientes artículos específicos de las funciones:

Cómo leer la tabla de uso

Los usuarios con permisos para acceder a los datos de la tabla del sistema pueden ver y consultar los registros de facturación de su cuenta, ubicados en system.billing.usage. Cada registro de facturación incluye columnas que atribuyen la cantidad de uso a los recursos, identidades y productos específicos implicados.

  • La columna usage_metadata incluye una estructura con información sobre los recursos u objetos implicados en el uso.
  • La columna identity_metadata incluye información sobre el usuario o la entidad de servicio que incurrió en el uso.
  • La columna custom_tags incluye etiquetas aplicadas al recurso de proceso asociado al uso. Esto también incluye etiquetas agregadas por directivas de presupuesto para que pueda atribuir el uso sin servidor.
  • Las columnas billing_origin_product y product_features proporcionan información sobre el producto exacto y las características usadas.

Para obtener una referencia completa de la tabla de uso, consulte Referencia de tabla del sistema de uso facturable.

Operacionalización de los datos de facturación

Databricks recomienda usar paneles de IA o BI para crear paneles de supervisión de costes mediante datos de facturación de tablas del sistema. Puede crear un nuevo panel o los administradores de cuentas pueden importar el panel de supervisión de costos pregenerado y personalizable. Consulte Paneles de utilización.

También puede agregar alertas a las consultas para ayudarle a mantenerse informado sobre los datos de uso. Consulte Creación de una alerta.

Consultas de ejemplo

Las consultas siguientes proporcionan ejemplos de cómo puede usar los datos de tabla de system.billing.usage para obtener información sobre el uso de la cuenta.

¿Cuántas DTU de cada producto se han usado a lo largo de este mes?

SELECT
    billing_origin_product,
    usage_date,
    sum(usage_quantity) as usage_quantity
FROM system.billing.usage
WHERE
    month(usage_date) = month(NOW())
    AND year(usage_date) = year(NOW())
GROUP BY billing_origin_product, usage_date

¿Qué trabajos consumieron la mayoría de las DBU?

SELECT
  usage_metadata.job_id as `Job ID`, sum(usage_quantity) as `Usage`
FROM
  system.billing.usage
WHERE
  usage_metadata.job_id IS NOT NULL
GROUP BY
  `Job ID`
ORDER BY
  `Usage` DESC

¿Cuánto uso se puede atribuir a los recursos con una etiqueta específica?

Puede desglosar los costos de varias maneras. En este ejemplo se muestra cómo desglosar los costos por una etiqueta personalizada. Asegúrese de reemplazar la clave y el valor de la etiqueta personalizada en la consulta.

SELECT
  sku_name, usage_unit, SUM(usage_quantity) as `Usage`
FROM
  system.billing.usage
WHERE
  custom_tags [:key] = :value
GROUP BY 1, 2

Mostrarme los productos en los que el uso está creciendo

SELECT
  after.billing_origin_product, before_dbus, after_dbus, ((after_dbus - before_dbus)/before_dbus * 100) AS growth_rate
FROM
  (SELECT
     billing_origin_product, sum(usage_quantity) as before_dbus
   FROM
     system.billing.usage
   WHERE
     usage_date BETWEEN "2024-04-01" and "2024-04-30"
   GROUP BY
     billing_origin_product
  ) as before
JOIN
  (SELECT
     billing_origin_product, sum(usage_quantity) as after_dbus
   FROM
     system.billing.usage
   WHERE
     usage_date
   BETWEEN
     "2024-05-01" and "2024-05-30"
   GROUP BY
     billing_origin_product
  ) as after
WHERE
  before.billing_origin_product = after.billing_origin_product
SORT BY
  growth_rate DESC

¿Cuál es la tendencia de uso de All Purpose Compute (Photon)?

SELECT
  sku_name,
  usage_date,
  sum(usage_quantity) as `DBUs consumed`
FROM
  system.billing.usage
WHERE
  year(usage_date) = year(CURRENT_DATE)
AND
  sku_name = "ENTERPRISE_ALL_PURPOSE_COMPUTE_(PHOTON)"
AND
  usage_date > "2024-04-15"
GROUP BY
  sku_name, usage_date

¿Cuál es el consumo de DBU de una vista materializada o una tabla de streaming?

Para obtener el uso de DBU y SKU para una vista materializada específica o una tabla de streaming, envíe una consulta a la tabla del sistema de uso facturable para los registros donde usage_metadata.dlt_pipeline_id se establece en el id. de la canalización asociada con la vista materializada o la tabla de streaming. Puede encontrar el id. de canalización en la pestaña Detalles del Explorador de catálogo al ver la vista materializada o la tabla de streaming. Para limitar el consumo por fecha, especifique una fecha de inicio, una fecha de finalización o un intervalo de fechas. La siguiente consulta recupera el uso de DBU para la tubería con ID 00732f83-cd59-4c76-ac0d-57958532ab5b y una fecha de inicio de uso de 2024-05-30:

SELECT
  sku_name,
  usage_date,
  SUM(usage_quantity) AS `DBUs`
FROM
  system.billing.usage
WHERE
  usage_metadata.dlt_pipeline_id = :dlt_pipeline_id
  AND usage_start_time > :usage_start_time
GROUP BY
  ALL

¿Cuál es el consumo de DBU de una canalización de DLT sin servidor?

Para obtener el uso de DBU y SKU para una canalización de DLT sin servidor, envíe una consulta a la tabla del sistema de uso facturable para los registros donde usage_metadata.dlt_pipeline_id se establece en el id, de la canalización. Puede encontrar el identificador de canalización en la pestaña Detalles de canalización al ver una canalización en la interfaz de usuario de Delta Live Tables. Para limitar el consumo por fecha, especifique una fecha de inicio, una fecha de finalización o un intervalo de fechas. La consulta siguiente recupera el uso de DBU de diciembre de 2024 para la canalización con el id. 00732f83-cd59-4c76-ac0d-57958532ab5b.

SELECT
  sku_name,
  usage_date,
  SUM(usage_quantity) AS `DBUs`
FROM
  system.billing.usage
WHERE
  usage_metadata.dlt_pipeline_id = :dlt_pipeline_id
  AND usage_start_time >= :usage_start_time
  AND usage_end_time < :usage_end_time
GROUP BY
  ALL

¿Cuál es la tendencia diaria en el consumo de DBU?

SELECT
  usage_date as `Date`, sum(usage_quantity) as `DBUs Consumed`
FROM
  system.billing.usage
WHERE
  sku_name = "STANDARD_ALL_PURPOSE_COMPUTE"
GROUP BY
  usage_date
ORDER BY
  usage_date ASC

Ejemplos de combinaciones de tabla de uso

En los ejemplos siguientes se muestran formas de combinar la tabla de uso con otras tablas del sistema para obtener información adicional.

Atribuir costes al propietario del proceso

Si desea reducir los costos de computación, puede usar esta consulta para averiguar qué propietarios de clústeres en su cuenta están utilizando la mayor cantidad de DBUs.

SELECT
  u.record_id record_id,
  c.cluster_id cluster_id,
  max_by(c.owned_by, c.change_time) owned_by,
  max(c.change_time) change_time,
  any_value(u.usage_start_time) usage_start_time,
  any_value(u.usage_quantity) usage_quantity
FROM
  system.billing.usage u
  JOIN system.compute.clusters c
WHERE
  u.usage_metadata.cluster_id is not null
  and u.usage_start_time >= '2023-01-01'
  and u.usage_metadata.cluster_id = c.cluster_id
  and c.change_time <= u.usage_start_time
GROUP BY 1, 2
ORDER BY cluster_id, usage_start_time desc;

Enriquecer el uso con un nombre de trabajo

with jobs as (
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
  FROM system.lakeflow.jobs QUALIFY rn=1
)
SELECT
  usage.*,
  coalesce(usage_metadata.job_name, jobs.name) as job_name
FROM system.billing.usage
  LEFT JOIN jobs ON usage.workspace_id=jobs.workspace_id AND usage.usage_metadata.job_id=jobs.job_id
WHERE
  billing_origin_product="JOBS"

Unir los precios con las tablas de uso

La tabla list_prices incluye precios de lista a lo largo del tiempo para cada SKU disponible. Puede acceder a la tabla usage para ver el coste de descripción de ciertos usos.

Por ejemplo, la consulta siguiente devuelve el costo total asignado a una etiqueta determinada durante un mes:

SELECT
 SUM(usage.usage_quantity * list_prices.pricing.effective_list.default)
 as `Total Dollar Cost`
FROM system.billing.usage
JOIN system.billing.list_prices ON list_prices.sku_name = usage.sku_name
WHERE usage.custom_tags [:key] = :value
AND usage.usage_end_time >= list_prices.price_start_time
AND (list_prices.price_end_time IS NULL OR usage.usage_end_time < list_prices.price_end_time)
AND usage.usage_date BETWEEN "2024-05-01" AND "2024-05-31"

Estimar los costos adicionales para el uso en el mes calendario anterior

Esta consulta aplica un porcentaje simple a todo el uso del período. Tenga en cuenta que esto puede diferir ligeramente de la monetización real debido a cómo se administran los derechos de algunos complementos. Reemplace la tarifa del complemento por la tarifa de su cuenta.

SELECT SUM(usage.usage_quantity * list_prices.pricing.effective_list.default) * :add_on_rate as `Total Add-On Dollar Cost`
FROM system.billing.usage
JOIN system.billing.list_prices ON list_prices.sku_name = usage.sku_name
  WHERE usage.usage_end_time >= list_prices.price_start_time
  AND (list_prices.price_end_time IS NULL OR usage.usage_end_time < list_prices.price_end_time)
  AND usage.usage_date BETWEEN "2024-02-01" AND "2024-02-29"