Delen via


Kosten bewaken met behulp van systeemtabellen

In dit artikel wordt uitgelegd hoe u de system.billing.usage tabel zelf kunt gebruiken of kunt koppelen aan andere systeemtabellen om een beeld te krijgen van het Azure Databricks-gebruik van uw account. De volgende functiespecifieke artikelen zijn ook beschikbaar:

De gebruikstabel lezen

Gebruikers met machtigingen voor toegang tot systeemtabelgegevens kunnen de factureringslogboeken van hun account bekijken en er query's op uitvoeren, die zich op system.billing.usagebevinden. Elke factureringsrecord bevat kolommen die de gebruikshoeveelheid toewijzen aan de specifieke resources, identiteiten en producten die betrokken zijn.

  • De kolom usage_metadata bevat een struct met informatie over de resources of objecten die betrokken zijn bij het gebruik.
  • De kolom identity_metadata bevat informatie over de gebruiker of service-principal die het gebruik heeft gemaakt.
  • De kolom custom_tags bevat tags die zijn toegepast op de rekenresource die aan het gebruik is gekoppeld. Dit omvat ook tags die zijn toegevoegd door budgetbeleid, zodat u serverloos gebruik kunt toewijzen.
  • De kolommen billing_origin_product en product_features geven u informatie over het exacte product en de gebruikte functies.

Zie Tabelreferentie voor factureerbaar gebruikssysteemvoor het volledige overzicht van de gebruikstabel.

Factureringsgegevens operationeel maken

Databricks raadt aan om AI/BI-dashboards te gebruiken om dashboards voor kostenbewaking te maken met behulp van factureringsgegevens voor systeemtabellen. U kunt een nieuw dashboard maken of accountbeheerders kunnen vooraf gemaakte, aanpasbare dashboards voor kostenbewaking importeren. Zie dashboards voor gebruik.

U kunt ook waarschuwingen toevoegen aan uw query's om u te helpen op de hoogte te blijven van gebruiksgegevens. Zie Een waarschuwing maken.

Voorbeeld queries

De volgende query's bevatten voorbeelden van hoe u de system.billing.usage tabelgegevens kunt gebruiken om inzicht te krijgen in het gebruik van uw account.

Hoeveel DBU's van elk product zijn er gedurende deze maand gebruikt?

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

Welke banen hebben de meeste DBUs verbruikt?

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

Hoeveel gebruik kan worden toegeschreven aan resources met een specifieke tag?

U kunt de kosten op verschillende manieren opsplitsen. In dit voorbeeld ziet u hoe u de kosten kunt opsplitsen op basis van een aangepaste tag. Zorg ervoor dat u de sleutel en waarde van de aangepaste tag in de query vervangt.

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

Laat me de producten zien waar het gebruik groeit

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

Wat is de gebruikstrend van 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

Wat is het DBU-verbruik van een gerealiseerde weergave of streamingtabel?

Als u het DBU-gebruik en de SKU voor een specifieke gerealiseerde weergave of streamingtabel wilt ophalen, dient u een query in bij de factureerbare gebruikssysteemtabel voor records waarbij usage_metadata.dlt_pipeline_id is ingesteld op de id van de pijplijn die is gekoppeld aan de gerealiseerde weergave of streamingtabel. U vindt de pijplijn-id op het tabblad Details in Catalog Explorer wanneer u de gerealiseerde weergave of streamingtabel bekijkt. Als u het verbruik per datum wilt beperken, geeft u een begindatum, einddatum of een datumbereik op. Met de volgende query wordt het DBU-gebruik opgehaald voor de pijplijn met ID 00732f83-cd59-4c76-ac0d-57958532ab5b en een begindatum 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

Wat is het DBU-verbruik van een serverloze DLT-pijplijn?

Als u het DBU-gebruik en de SKU voor een serverloze DLT-pijplijn wilt ophalen, dient u een query in aan de factureerbare gebruikssysteemtabel voor records waarbij usage_metadata.dlt_pipeline_id is ingesteld op de ID van de pijplijn. U vindt de pijplijn-id op het tabblad Pijplijndetails wanneer u een pijplijn bekijkt in de DLT-gebruikersinterface. Als u het verbruik per datum wilt beperken, geeft u een begindatum, einddatum of een datumbereik op. Met de volgende query wordt het DBU-gebruik van december 2024 opgehaald voor de pijplijn met 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

Wat is de dagelijkse trend in DBU-verbruik?

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

Voorbeelden van het gebruik van tabelkoppelingen

In de volgende voorbeelden ziet u hoe u de gebruikstabel kunt samenvoegen met andere systeemtabellen om meer inzicht te krijgen.

Wijs kosten toe aan de eigenaar van de rekenkracht

Als u de rekenkosten wilt verlagen, kunt u deze query gebruiken om erachter te komen welke clustereigenaren in uw account de meeste DBU's gebruiken.

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;

Gebruik verrijken met een taaknaam

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"

De prijzen samenvoegen met gebruikstabellen

De tabel list_prices bevat lijstprijzen in de loop der tijd voor elke beschikbare SKU. U kunt de usage tabel samenvoegen om de vermeldingskosten van bepaald gebruik weer te geven.

De volgende query retourneert bijvoorbeeld de totale kosten die gedurende een maand aan een bepaalde tag zijn toegewezen:

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"

Schatting maken van de extra kosten voor gebruik in de vorige kalendermaand

Deze query past een eenvoudig percentage toe op al het gebruik in de periode. Houd er rekening mee dat dit mogelijk enigszins verschilt van de werkelijke monetisatie vanwege de manier waarop rechten voor sommige invoegtoepassingen worden beheerd. Vervang het add-on tarief door het tarief van uw account.

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"