Monitorowanie kosztów przy użyciu tabel systemowych
W tym artykule wyjaśniono, jak użyć tabeli system.billing.usage
samodzielnie lub sprzężonej z innymi tabelami systemowymi, aby uzyskać obraz użycia usługi Azure Databricks konta. Dostępne są również następujące artykuły specyficzne dla funkcji:
- Monitorowanie kosztów obliczeń bezserwerowych
- Monitorowanie kosztów zadań i wydajności
- Monitorowanie kosztów obsługi modelu
Jak odczytać tabelę użycia
Użytkownicy z uprawnieniami dostępu do danych tabeli systemu mogą wyświetlać i wykonywać zapytania dotyczące dzienników rozliczeniowych konta znajdujących się w system.billing.usage
. Każdy rekord rozliczeniowy zawiera kolumny, które przypisują ilość użycia do określonych zasobów, tożsamości i produktów.
- Kolumna
usage_metadata
zawiera strukturę zawierającą informacje o zasobach lub obiektach zaangażowanych w użycie. - Kolumna
identity_metadata
zawiera informacje o użytkowniku lub jednostce usługi, która poniosła użycie. - Kolumna
custom_tags
zawiera tagi zastosowane do zasobu obliczeniowego skojarzonego z użyciem. Obejmuje to również tagi, które są dodawane zgodnie z zasadami budżetu, aby można było przypisywać użycie bezserwerowe. - Kolumny
billing_origin_product
iproduct_features
zawierają informacje o dokładnych używanych produktach i funkcjach.
Aby uzyskać pełne odniesienie do tabeli użycia, zobacz Odniesienie do tabeli systemu rozliczania użycia.
Operacjonalizacja danych rozliczeniowych
Databricks zaleca użycie dashboardów AI/BI do tworzenia paneli monitorujących koszty przy użyciu danych rozliczeniowych z tabel systemowych. Możesz utworzyć nowy pulpit nawigacyjny lub administratorzy kont mogą importować wstępnie utworzony, dostosowywalny pulpit nawigacyjny monitorowania kosztów. Zobacz Pulpity użycia.
Możesz również dodać alerty do zapytań, aby ułatwić ci informowanie o danych użycia. Zobacz Tworzenie alertu.
Przykładowe zapytania
Poniższe zapytania zawierają przykłady użycia danych tabeli system.billing.usage
w celu uzyskania szczegółowych informacji na temat użycia konta.
- Ile jednostek DBU poszczególnych produktów było używanych w tym miesiącu?
- Które zadania zużywały najwięcej jednostek DBU?
- Ile użycia można przypisać zasobom za pomocą określonego tagu?
- Pokaż mi produkty, w których rośnie użycie
- Jaki jest trend użycia usługi All Purpose Compute (Photon)?
- Jaka jest konsumpcja DBU widoku zmaterializowanego lub tabeli strumieniowej?
- Jakie jest zużycie jednostek DBU bezserwerowego potoku DLT?
- Jaki jest dzienny trend zużycia jednostek DBU?
Ile jednostek DBU poszczególnych produktów było używanych w tym miesiącu?
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
Które zadania zużywały najwięcej jednostek 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
Ile użycia można przypisać zasobom za pomocą określonego tagu?
Koszty można podzielić na różne sposoby. W tym przykładzie pokazano, jak podzielić koszty według tagu niestandardowego. Pamiętaj, aby zastąpić w zapytaniu klucz i wartość tagu niestandardowego.
SELECT
sku_name, usage_unit, SUM(usage_quantity) as `Usage`
FROM
system.billing.usage
WHERE
custom_tags [:key] = :value
GROUP BY 1, 2
Pokaż mi produkty, w których rośnie użycie
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
Jaki jest trend użycia usługi 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
Jakie jest zużycie jednostek DBU przez zmaterializowany widok lub tabelę przesyłania strumieniowego?
Aby uzyskać informacje o wykorzystaniu DBU i SKU dla określonego zmaterializowanego widoku lub tabeli przesyłania strumieniowego, prześlij zapytanie do tabeli systemu rozliczania wykorzystania dla rekordów, w których usage_metadata.dlt_pipeline_id
jest ustawione na identyfikator potoku skojarzonego z tym zmaterializowanym widokiem lub tabelą przesyłania strumieniowego. Identyfikator potoku można znaleźć na karcie Szczegóły w Eksploratorze katalogu podczas wyświetlania zmaterializowanego widoku lub tabeli przesyłania strumieniowego. Aby ograniczyć zużycie według daty, określ datę rozpoczęcia, datę zakończenia lub zakres dat. Następujące zapytanie pobiera użycie DBU dla pipeline'u o ID 00732f83-cd59-4c76-ac0d-57958532ab5b
z datą rozpoczęcia 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 wygląda zużycie jednostek DBU w przypadku bezserwerowego potoku DLT?
Aby uzyskać użycie jednostek DBU i jednostkę SKU dla bezserwerowego potoku DLT, prześlij zapytanie do tabeli systemu użycia rozliczanego dla rekordów, w których usage_metadata.dlt_pipeline_id
jest ustawiona na identyfikator potoku. Identyfikator potoku można znaleźć na karcie Szczegóły potoku podczas wyświetlania potoku w interfejsie użytkownika DLT. Aby ograniczyć zużycie według daty, określ datę rozpoczęcia, datę zakończenia lub zakres dat. Następujące zapytanie pobiera użycie DBU od grudnia 2024 r. dla potoku o identyfikatorze 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
Jaki jest dzienny trend zużycia 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
Przykłady użycia łączenia tabel
W poniższych przykładach przedstawiono sposoby łączenia tabeli użycia z innymi tabelami systemowymi w celu uzyskania dodatkowych szczegółowych informacji.
- Przypisz koszty właścicielowi zasobów obliczeniowych
- Wzbogacanie użycia przy użyciu nazwy zadania
- Połącz cennik z tabelami użycia
- Oszacuj dodatkowe koszty za użytkowanie w poprzednim miesiącu kalendarzowym
Przypisywanie kosztów właścicielowi zasobów obliczeniowych
Jeśli chcesz zmniejszyć koszty obliczeń, możesz użyć tego zapytania, aby dowiedzieć się, którzy właściciele klastrów na twoim koncie korzystają z większości jednostek 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;
Wzbogacenie użycia poprzez nadanie nazwy zadaniu
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"
Połącz cenniki z tabelami użycia
Tabela list_prices
zawiera ceny katalogowe z biegiem czasu dla każdego dostępnego SKU. Możesz dołączyć tabelę usage
, aby zobaczyć koszt wymienionego użycia.
Na przykład następujące zapytanie zwraca łączny koszt przypisany do określonego tagu w ciągu miesiąca:
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"
Oszacuj dodatkowe koszty związane z użyciem w poprzednim miesiącu kalendarzowym
To zapytanie stosuje prostą wartość procentową do wszystkich użycia w danym okresie. Należy pamiętać, że może się to nieco różnić od rzeczywistej monetyzacji ze względu na sposób zarządzania uprawnieniami dla niektórych dodatków. Zastąp stawkę dodatku stawką swojego konta.
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"