Sdílet prostřednictvím


Monitorování nákladů pomocí systémových tabulek

Tento článek vysvětluje, jak můžete k získání obrázku o využití Azure Databricks použít tabulku system.billing.usage samostatně nebo připojenou s jinými systémovými tabulkami. K dispozici jsou také následující články specifické pro funkce:

Jak přečíst tabulku využití

Uživatelé s oprávněním pro přístup k datům systémových tabulek můžou zobrazit a dotazovat fakturační protokoly svého účtu umístěného v system.billing.usage. Každý záznam fakturace obsahuje sloupce, které přiřazují částku využití konkrétním prostředkům, identitám a produktům.

  • Sloupec usage_metadata obsahuje strukturu s informacemi o prostředcích nebo objektech, které jsou součástí použití.
  • Sloupec identity_metadata obsahuje informace o uživateli nebo principálu služby, který se podílel na využití.
  • Sloupec custom_tags obsahuje značky použité pro výpočetní prostředek související s využitím. To také zahrnuje značky přidané zásadami rozpočtu, abyste mohli přiřazovat bezserverové využití.
  • Sloupce billing_origin_product a product_features poskytují informace o přesném použitém produktu a funkcích.

Pro úplný přehled tabulky využití viz Referenční tabulka systému fakturovatelného využití.

Zprovoznění fakturačních dat

Databricks doporučuje používat řídicí panely AI/BI k vytváření řídicích panelů pro monitorování nákladů pomocí fakturačních dat systémových tabulek. Můžete vytvořit nový řídicí panel nebo správci účtu můžou importovat předem sestavený přizpůsobitelný řídicí panel monitorování nákladů. Viz řídicí panely využití.

Do dotazů můžete také přidat upozornění, která vám pomůžou udržet si přehled o datech o využití. Viz Vytvořit upozornění.

Ukázkové dotazy

Následující dotazy poskytují příklady použití dat tabulky system.billing.usage k získání přehledu o využití vašeho účtu.

Kolik jednotek DBU každého produktu bylo během tohoto měsíce použito?

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

Které úlohy spotřebovaly nejvíce jednotek 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

Kolik využití lze přiřadit prostředkům s konkrétní značkou?

Náklady můžete rozdělit různými způsoby. Tento příklad ukazuje, jak rozdělit náklady podle vlastního štítku. Nezapomeňte v dotazu nahradit klíč a hodnotu vlastní značky.

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

Ukázat mi produkty, ve kterých roste využití

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

Jaký je trend využití výpočetních prostředků pro všechny účely (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

Jaká je spotřeba DBU materializovaného zobrazení nebo tabulky streamování?

Pokud chcete získat využití a skladovou položku DBU pro konkrétní materializované zobrazení nebo streamovací tabulku, odešlete dotaz do tabulky fakturovatelného systému využití záznamů, kde usage_metadata.dlt_pipeline_id je nastaveno na ID kanálu přidruženého k materializovanému zobrazení nebo streamovací tabulce. ID kanálu najdete na kartě Podrobnosti v Průzkumníku katalogu při prohlížení materializovaného zobrazení nebo tabulky streamování. Pokud chcete spotřebu omezit podle data, zadejte počáteční datum, koncové datum nebo rozsah dat. Následující dotaz načte využití DBU pro kanál s ID 00732f83-cd59-4c76-ac0d-57958532ab5b a počátečním datem využití 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

Jaká je spotřeba DBU bezserverového kanálu DLT?

Pokud chcete získat využití a skladovou položku DBU pro bezserverový kanál DLT, odešlete dotaz do tabulky fakturovatelného systému využití záznamů, ve kterých je usage_metadata.dlt_pipeline_id nastaveno na ID kanálu. ID kanálu najdete na kartě Podrobnosti kanálu při prohlížení kanálu v uživatelském rozhraní Delta Live Tables. Pokud chcete spotřebu omezit podle data, zadejte počáteční datum, koncové datum nebo rozsah dat. Následující dotaz načte využití DBU z prosince 2024 pro potrubí s 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

Jaký je denní trend spotřeby 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

Příklady použití spojení tabulek

Následující příklady ukazují, jak můžete spojit tabulku využití s jinými systémovými tabulkami, abyste získali další přehledy.

Přiřazovat náklady vlastníkovi výpočetních prostředků

Pokud chcete snížit náklady na výpočetní prostředky, můžete pomocí tohoto dotazu zjistit, kteří vlastníci clusteru ve vašem účtu používají nejvíce 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;

Obohacení využití názvem úlohy

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"

Spojte cenové a využívací tabulky

Tabulka list_prices obsahuje ceníkové ceny v průběhu času pro každou dostupnou SKU. Můžete se připojit k tabulce usage a zobrazit náklady na určitý způsob užití.

Následující dotaz například vrátí celkové náklady přiřazené konkrétní značce během měsíce:

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"

Odhad nákladů na doplňky pro využití v předchozím kalendářním měsíci

Tento dotaz použije jednoduché procento pro všechna využití v období. Všimněte si, že se to může mírně lišit od skutečného zpeněžení kvůli tomu, jak se spravují nároky na některé doplňky. Nahraďte sazbu příplatku sazbou vašeho účtu.

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"