Monitorare i costi usando le tabelle di sistema
Questo articolo spiega come utilizzare la tabella system.billing.usage
autonomamente o in combinazione con altre tabelle del sistema per ottenere un quadro dell'utilizzo di Azure Databricks dell'account. Sono disponibili anche gli articoli specifici delle funzionalità seguenti:
- Monitorare i costi di calcolo serverless
- Monitorare i costi e le prestazioni dei lavori
- Monitorare i costi del modello di servizio
Come leggere la tabella di utilizzo
Gli utenti con autorizzazioni per accedere ai dati della tabella di sistema possono visualizzare ed eseguire query sui log di fatturazione dell'account, che si trovano in system.billing.usage
. Ogni record di fatturazione include colonne che assegnano la quantità di utilizzo alle risorse, alle identità e ai prodotti specifici coinvolti.
- La colonna
usage_metadata
include uno struct con informazioni sulle risorse o sugli oggetti coinvolti nell'utilizzo. - La colonna
identity_metadata
include informazioni sull'utente o sull'entità servizio che hanno incorreto nell'utilizzo. - La colonna
custom_tags
include tag applicati alla risorsa di calcolo associata all'utilizzo. Sono inclusi anche i tag aggiunti dai criteri di budget, in modo da consentire l'attribuzione dell'utilizzo serverless. - Le colonne
billing_origin_product
eproduct_features
forniscono informazioni sull'esatto prodotto e sulle funzionalità usate.
Per un riferimento completo alla tabella di utilizzo, vedere il riferimento alla tabella del sistema di utilizzo fatturabile.
Rendere operativi i dati di fatturazione
Databricks consiglia di usare dashboard di intelligenza artificiale/BI per creare dashboard di monitoraggio dei costi usando i dati di fatturazione della tabella di sistema. È possibile creare un nuovo dashboard o gli amministratori di account possono importare dashboard di monitoraggio dei costi predefiniti e personalizzabili. Visualizzare le dashboard di utilizzo .
È anche possibile aggiungere avvisi alle query per rimanere informati sui dati di utilizzo. Consultare Creare un avviso.
Query di esempio
Le query seguenti forniscono esempi di come usare i dati della tabella system.billing.usage
per ottenere informazioni dettagliate sull'utilizzo dell'account.
- Quanti DPU di ogni prodotto sono stati utilizzati durante questo mese?
- Quali lavori hanno consumato il maggior numero di DBU?
- Quale utilizzo può essere attribuito alle risorse con un tag specifico?
- Mostra i prodotti in cui l'utilizzo è in crescita
- Qual è la tendenza di utilizzo di All Purpose Compute (Photon)?
- Qual è il consumo DBU di una vista materializzata o di una tabella di streaming?
- Qual è il consumo di DBU di una pipeline DLT senza server?
- Qual è la tendenza giornaliera del consumo DBU?
Quanti DPU di ogni prodotto sono stati utilizzati durante questo mese?
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
Quali processi hanno utilizzato la maggior parte dei DBUs?
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
Quale utilizzo può essere attribuito alle risorse con un tag specifico?
È possibile suddividere i costi in vari modi. In questo esempio viene illustrato come suddividere i costi in base a un tag personalizzato. Assicurarsi di sostituire la chiave e il valore del tag personalizzato nella query.
SELECT
sku_name, usage_unit, SUM(usage_quantity) as `Usage`
FROM
system.billing.usage
WHERE
custom_tags [:key] = :value
GROUP BY 1, 2
Mostra i prodotti in cui l'utilizzo è in crescita
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
Qual è la tendenza di utilizzo di 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
Qual è il consumo DBU di una vista materializzata o di una tabella di streaming?
Per ottenere l'utilizzo e lo SKU DBU per una vista materializzata o una tabella di streaming specifica, inviare una query alla tabella del sistema di utilizzo fatturabile per i record in cui usage_metadata.dlt_pipeline_id
è impostato sull'ID della pipeline associata alla vista materializzata o alla tabella di streaming. È possibile trovare l'ID della pipeline nella scheda Dettagli in Esplora Cataloghi quando si visualizza la vista materializzata o la tabella di streaming. Per limitare l'utilizzo per data, specificare una data di inizio, una data di fine o un intervallo di date. La query seguente recupera l'utilizzo DBU per la pipeline con ID 00732f83-cd59-4c76-ac0d-57958532ab5b
e una data di inizio utilizzo di 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
Qual è il consumo di DBU di una pipeline DLT serverless?
Per ottenere l'utilizzo DBU e lo SKU per la pipeline DLT serverless, inviare una query alla tabella del sistema di utilizzo fatturabile per i record in cui usage_metadata.dlt_pipeline_id
è impostato sull'ID della pipeline. È possibile trovare l'ID della pipeline nella scheda Dettagli pipeline quando si visualizza una pipeline nell'interfaccia utente di Delta Live Tables. Per limitare l'utilizzo per data, specificare una data di inizio, una data di fine o un intervallo di date. La query seguente recupera l'utilizzo DBU da dicembre 2024 per la pipeline con 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
Qual è la tendenza giornaliera del consumo 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
Esempi di utilizzo degli join di tabelle
Negli esempi seguenti vengono illustrati i modi in cui è possibile unire la tabella di utilizzo con altre tabelle di sistema per ottenere informazioni dettagliate aggiuntive.
- Costi dell'attributo al proprietario di calcolo
- Arricchire l'utilizzo con un nome del lavoro
- Aggiungere i prezzi alle tabelle di utilizzo
- Stimare i costi aggiuntivi per l'utilizzo nel mese di calendario precedente
Attribuire i costi al proprietario del calcolo
Se desideri ridurre i costi di calcolo, puoi utilizzare questa query per scoprire quali proprietari di cluster nel tuo account stanno utilizzando il maggior numero di 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;
Ottimizzare l'utilizzo con un nome del lavoro
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"
Unire le tabelle dei prezzi con quelle di utilizzo
La tabella list_prices
include i prezzi di listino nel tempo per ogni SKU disponibile. È possibile collegare la tabella usage
per visualizzare il costo associato a determinati utilizzi.
Ad esempio, la query seguente restituisce il costo totale attribuito a un tag specifico durante un mese:
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"
Stimare i costi del componente aggiuntivo per l'utilizzo nel mese di calendario precedente
Questa query applica una percentuale semplice a tutti gli utilizzi effettuati durante il periodo considerato. Si noti che questo potrebbe differire leggermente dalla monetizzazione effettiva a causa del modo in cui vengono gestiti i diritti per alcuni componenti aggiuntivi. Si prega di sostituire la tariffa del componente aggiuntivo con quella dell'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"