시스템 테이블을 사용하여 비용 모니터링
이 문서에서는 system.billing.usage
테이블을 자체적으로 사용하거나 다른 시스템 테이블과 조인하여 계정의 Azure Databricks 사용 현황을 파악하는 방법을 설명합니다. 다음 특정 기능 관련 문서를 확인할 수 있습니다.
사용 현황 테이블을 읽는 방법
시스템 테이블 데이터에 액세스할 수 있는 권한이 있는 사용자는 system.billing.usage
있는 계정의 청구 로그를 보고 쿼리할 수 있습니다. 모든 청구 레코드에는 관련 리소스, ID 및 제품에 대한 사용량의 특성을 지정하는 열이 포함됩니다.
-
usage_metadata
열에는 사용과 관련된 리소스 또는 개체에 대한 정보가 포함된 구조체가 포함되어 있습니다. -
identity_metadata
열에는 사용량이 발생한 사용자 또는 서비스 주체에 대한 정보가 포함됩니다. -
custom_tags
열에는 사용량과 연결된 컴퓨팅 리소스에 적용되는 태그가 포함됩니다. 여기에는 서버리스 사용량을 특성화할 수 있도록 예산 정책에 의해 추가된 태그도 포함됩니다. -
billing_origin_product
및product_features
열은 사용되는 정확한 제품 및 기능에 대한 정보를 제공합니다.
사용 현황 테이블에 대한 전체 참조는 청구 가능한 사용량 시스템 테이블 참조 참조하세요.
청구 데이터를 운영화하다
Databricks는 AI/BI 대시보드 사용하여 시스템 테이블 청구 데이터를 사용하여 비용 모니터링 대시보드를 만드는 것이 좋습니다. 새 대시보드를 만들거나 계정 관리자가 미리 빌드된 사용자 지정 가능한 비용 모니터링 대시보드를 가져올 수 있습니다. 사용량 대시보드참조하세요.
또한 쿼리에 경고를 추가하여 사용량 현황 데이터에 대한 정보를 유지할 수 있습니다. 경고를만들기 참조하세요.
샘플 쿼리
다음 쿼리는 system.billing.usage
테이블 데이터를 사용하여 계정의 사용량에 대한 인사이트를 얻는 방법에 대한 예제를 제공합니다.
- 이번 달 동안 사용된 각 제품의 DPU는 몇 개입니까?
- DTU를 가장 많이 사용한 작업은 무엇입니까?
- 특정 태그가 있는 리소스의 사용량은 얼마인가요?
- 사용량이 증가하는 제품 표시
- 다목적 컴퓨팅(Photon)의 사용 추세는 무엇인가요?
- 구체화된 뷰 또는 스트리밍 테이블의 DBU 사용량은 무엇인가요?
- 서버리스 DLT 파이프라인의 DBU 사용량은 무엇인가요?
- DBU 소비의 일일 추세는 무엇인가요?
이번 달 동안 사용된 각 제품의 DPU는 몇 개입니까?
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
DTU를 가장 많이 사용한 작업은 무엇입니까?
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
특정 태그가 있는 리소스의 사용량은 얼마인가요?
다양한 방법으로 비용을 절감할 수 있습니다. 이 예제에서는 사용자 지정 태그로 비용을 구분하는 방법을 보여줍니다. 쿼리에서 사용자 지정 태그의 키와 값을 바꿔야 합니다.
SELECT
sku_name, usage_unit, SUM(usage_quantity) as `Usage`
FROM
system.billing.usage
WHERE
custom_tags [:key] = :value
GROUP BY 1, 2
사용량이 증가하는 제품 표시
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
다목적 컴퓨팅(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
구체화된 뷰 또는 스트리밍 테이블의 DBU 사용량은 무엇인가요?
특정 구체화된 뷰 또는 스트리밍 테이블에 대한 DBU 사용량 및 SKU를 가져오려면 usage_metadata.dlt_pipeline_id
구체화된 뷰 또는 스트리밍 테이블과 연결된 파이프라인의 ID로 설정된 레코드에 대한 청구 가능한 사용량 시스템 테이블에 쿼리를 제출합니다. 구체화된 뷰 또는 스트리밍 테이블을 볼 때 카탈로그 탐색기의 세부 정보 탭에서 파이프라인 ID를 찾을 수 있습니다. 사용량을 날짜별로 제한하려면 시작 날짜, 종료 날짜 또는 날짜 범위를 지정합니다. 다음 쿼리는 ID 00732f83-cd59-4c76-ac0d-57958532ab5b
및 사용 시작 날짜가 2024-05-30
파이프라인에 대한 DBU 사용량을 검색합니다.
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
서버리스 DLT 파이프라인의 DBU 사용량은 무엇인가요?
서버리스 DLT 파이프라인에 대한 DBU 사용량 및 SKU를 가져오려면 usage_metadata.dlt_pipeline_id
파이프라인의 ID로 설정된 레코드에 대한 청구 가능한 사용 시스템 테이블에 쿼리를 제출합니다. Delta Live Tables UI에서 파이프라인을 볼 때 파이프라인 세부 정보 탭에서 파이프라인 ID를 찾을 수 있습니다. 사용량을 날짜별로 제한하려면 시작 날짜, 종료 날짜 또는 날짜 범위를 지정합니다. 다음 쿼리는 00732f83-cd59-4c76-ac0d-57958532ab5b
인 ID를 가진 파이프라인에 대한 2024년 12월부터 DBU 사용량을 조회합니다.
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
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
테이블 조인 사용 예제
다음 예제에서는 사용 현황 테이블을 다른 시스템 테이블과 조인하여 추가 인사이트를 얻을 수 있는 방법을 보여 줍니다.
- 특성 비용을 컴퓨팅 소유자에게 배정
- 작업 이름 사용하여 사용량 보강
- 사용량 테이블을 사용하여 가격 책정 조인
- 이전 월 사용량에 대한 추가 비용을 예측합니다.
컴퓨트 소유자에게 비용을 할당하십시오
컴퓨팅 비용을 줄이려는 경우 이 쿼리를 사용하여 계정에서 가장 많은 DTU를 사용하는 클러스터 소유자를 확인할 수 있습니다.
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;
작업 이름으로 사용량 보강
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"
사용량 테이블을 사용하여 가격 책정 조인
list_prices
테이블에는 사용 가능한 각 SKU에 대한 시간별 정가가 포함됩니다.
usage
테이블에 조인하여 특정 사용량의 목록 비용을 볼 수 있습니다.
예를 들어 다음 쿼리는 한 달 동안 특정 태그에 기인하는 총 비용을 반환합니다.
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"
이전 월의 사용량에 대한 추가 기능 비용 예측
이 쿼리는 해당 기간의 모든 사용량에 간단한 백분율을 적용합니다. 일부 추가 기능에 대한 자격이 관리되는 방식 때문에 실제 수익 창출과 약간 다를 수 있습니다. 계정의 요금으로 추가 요금을 바꿉니다.
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"