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:
- Monitorování nákladů na výpočetní prostředky bez serveru
- Monitorování nákladů na úlohy a výkonu
- Sledování nákladů na obsluhu modelu
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
aproduct_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?
- Které úlohy spotřebovaly nejvíce jednotek DBU?
- Kolik využití lze přiřadit prostředkům s konkrétní značkou?
- Ukažte mi produkty, u kterých roste využití
- Jaký je trend využití výpočetních prostředků pro všechny účely (Photon)?
- Jaká je spotřeba DBU materializovaného zobrazení nebo tabulky streamování?
- Jaká je spotřeba DBU bezserverového kanálu DLT?
- Jaký je denní trend spotřeby DBU?
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.
- náklady na atribut vlastníku výpočetních prostředků
- Obohacení využití názvem úlohy
- Spojte cenové tabulky s tabulkami využití
- Odhad nákladů na doplňky pro využití v předchozím kalendářním měsíci
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"