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:
- Supervisar los costos de proceso sin servidor
- Monitorizar los costos de trabajo y el rendimiento
- Supervisar costes de servicio del modelo
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
yproduct_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?
- ¿Qué trabajos consumieron la mayoría de las DTU?
- ¿Cuánto uso se puede atribuir a los recursos con una etiqueta específica?
- Mostrar los productos en los que el uso está creciendo
- ¿Cuál es la tendencia de uso de All Purpose Compute (Photon)?
- ¿Cuál es el consumo de DBU de una vista materializada o una tabla de streaming?
- ¿Cuál es el consumo de DBU de una canalización de DLT sin servidor?
- ¿Cuál es la tendencia diaria en el consumo de DBU?
¿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 costos al propietario del cómputo
- Enriquecer el uso con un nombre de trabajo
- Asociar los precios con las tablas de uso
- Calcular los costos adicionales para el uso en el mes natural anterior
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"