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:
- serverloze rekenkosten monitoren
- Kosten en prestaties van klussen bewaken
- Modelserverkosten monitoren
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.usage
bevinden. 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
enproduct_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?
- Welke taken hebben de meeste DBU's verbruikt?
- Hoeveel gebruik kan worden toegeschreven aan resources met een specifieke tag?
- Laat me de producten zien waar het gebruik groeit
- Wat is de gebruikstrend van All Purpose Compute (Photon)?
- Wat is het DBU-verbruik van een gerealiseerde weergave of streamingtabel?
- Wat is het DBU-verbruik van een serverloze DLT-pijplijn?
- Wat is de dagelijkse trend in DBU-verbruik?
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.
- Ken kosten toe aan de berekeningseigenaar
- Gebruik verrijken met een taaknaam
- Koppel de prijzen aan de gebruikstabellen
- De extra kosten voor gebruik in de vorige kalendermaand schatten
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"