Partager via


Surveiller les coûts à l’aide des tables système

Cet article explique comment utiliser la table system.billing.usage propre ou jointe à d’autres tables système pour obtenir une image de l’utilisation d’Azure Databricks de votre compte. Les articles spécifiques aux fonctionnalités suivants sont également disponibles :

Guide pratique pour lire la table d’utilisation

Les utilisateurs disposant des autorisations d’accès aux données de table système peuvent afficher et interroger les journaux de facturation de leur compte, situés à system.billing.usage. Chaque enregistrement de facturation inclut des colonnes qui attribuent la quantité d’utilisation aux ressources, identités et produits spécifiques impliqués.

  • La colonne usage_metadata inclut un struct contenant des informations sur les ressources ou les objets impliqués dans l’utilisation.
  • La colonne identity_metadata inclut des informations sur l’utilisateur ou le principal de service qui a engagé l’utilisation.
  • La colonne custom_tags inclut des balises appliquées à la ressource de calcul associée à l’utilisation. Cela inclut également des balises ajoutées par des stratégies de budget pour vous permettre d’attribuer une utilisation sans serveur.
  • Les colonnes billing_origin_product et product_features vous donnent des informations sur le produit et les fonctionnalités exacts utilisés.

Pour obtenir une référence complète du tableau d'usage facturable, consultez la référence du tableau du système d'utilisation.

Opérationnaliser les données de facturation

Databricks recommande d'utiliser les tableaux de bord IA/BI pour créer des tableaux de bord de supervision des coûts à l'aide des données de facturation provenant des tables système. Vous pouvez créer un tableau de bord ou les administrateurs de compte peuvent importer un tableau de bord de surveillance des coûts prédéfini et personnalisable. Consultez les tableaux de bord d'utilisation .

Vous pouvez également ajouter des alertes à vos requêtes pour vous aider à rester informé des données d’utilisation. Consultez Créer une alerte.

Exemples de requêtes

Les requêtes suivantes fournissent des exemples de la façon dont vous pouvez utiliser les données de table system.billing.usage pour obtenir des insights sur l’utilisation de votre compte.

Combien de DBUs de chaque produit ont été utilisées ce mois-ci ?

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

Quels travaux ont consommé les plus d’unités de base de données ?

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

Combien d’utilisation peut être attribuée aux ressources avec une balise spécifique ?

Vous pouvez décomposer les coûts de différentes façons. Cet exemple montre comment décomposer les coûts par une balise personnalisée. Veillez à remplacer la clé et la valeur de la balise personnalisée dans la requête.

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

Me montrer les produits où l’utilisation augmente

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

Quelle est la tendance d'utilisation du calcul polyvalent (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

Quelle est la consommation DBU d’une vue matérialisée ou d’une table de diffusion en continu ?

Pour obtenir l’utilisation de DBU et la référence SKU pour une vue matérialisée ou une table de diffusion en continu spécifique, soumettez une requête à la table système d’utilisation facturable pour les enregistrements où usage_metadata.dlt_pipeline_id est défini sur l’ID du pipeline associé à la vue matérialisée ou à la table de diffusion en continu. Vous pouvez trouver l'ID du pipeline dans l'onglet Détails de l'Explorateur de catalogues lorsque vous visualisez la vue matérialisée ou la table de streaming. Pour limiter la consommation par date, spécifiez une date de début, une date de fin ou une plage de dates. La requête suivante récupère l’utilisation de DBU pour le pipeline avec l’ID 00732f83-cd59-4c76-ac0d-57958532ab5b et une date de début d’utilisation 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

Quelle est la consommation DBU d’un pipeline DLT serverless ?

Pour obtenir l'utilisation des unités de base de données (DBU) et le SKU pour un pipeline de traitement de données (DLT) serverless, soumettez une requête à la table système d'utilisation facturable pour les enregistrements où usage_metadata.dlt_pipeline_id est associé à l'ID du pipeline. Vous trouverez l’ID de pipeline sous l’onglet Détails du pipeline lors de l’affichage d’un pipeline dans l’interface utilisateur Delta Live Tables. Pour limiter la consommation par date, spécifiez une date de début, une date de fin ou une plage de dates. La requête suivante récupère l’utilisation de DBU de décembre 2024 pour le pipeline avec l’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

Quelle est la tendance quotidienne de la consommation 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

Exemples de jointures de tables d'usage

Les exemples suivants vous montrent comment joindre la table d’utilisation à d’autres tables système pour obtenir des insights supplémentaires.

Attribuer les coûts au propriétaire des ressources de calcul

Si vous voulez réduire les coûts de calcul, vous pouvez utiliser cette requête pour déterminer les propriétaires de cluster dans votre compte qui utilisent les plus de DBU.

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;

Enrichir l’utilisation avec un nom de travail

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"

Associer la tarification aux tableaux d'utilisation

Le tableau list_prices inclut les prix de liste au fil du temps pour chaque référence SKU disponible. Vous pouvez joindre la table usage pour afficher le coût d'inscription de certaines utilisations spécifiques.

Par exemple, la requête suivante retourne le coût total attribué à une balise particulière au cours d’un mois :

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"

Estimer les coûts du module complémentaire pour l’utilisation au cours du mois calendrier précédent

Cette requête applique un pourcentage simple à toutes les utilisations de la période. Notez que cela peut différer légèrement de la monétisation réelle en raison de la façon dont les droits pour certains modules complémentaires sont gérés. Remplacez le taux d’extension par le taux de votre compte.

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"