이 페이지에서는 BigQuery의 각 테이블로 내보내는 Cloud Billing 표준 사용량 비용 데이터의 스키마에 대한 참조 정보를 제공합니다.
표준 사용량 비용 데이터의 스키마
BigQuery 데이터 세트에서 표준 Google Cloud 사용량 비용 데이터가 gcp_billing_export_v1_<BILLING_ACCOUNT_ID>
라는 데이터 테이블에 로드됩니다.
다음 정보는 BigQuery로 내보내는 Google Cloud 표준 사용량 비용 데이터의 스키마를 설명합니다. 여기에는 계정 ID, 인보이스 날짜, 서비스, SKU, 프로젝트, 라벨, 위치, 비용, 사용량, 크레딧, 조정, 통화 등 표준 Cloud Billing 계정 비용 사용량 정보가 포함됩니다.
BigQuery에서 표준 사용량 비용 데이터를 사용하는 경우 다음에 유의하세요.
- 표준 사용량 비용 데이터에 BigQuery 데이터 세트를 만들거나 선택할 때 Cloud Billing 데이터에서 사용할 수 있도록 지원되는 데이터 세트 위치를 선택할 수 있습니다.
- Cloud Billing에서 표준 사용량 비용 데이터 내보내기를 처음 사용 설정할 때 멀티 리전 위치(EU 또는 미국)를 사용하도록 구성된 데이터 세트를 선택하면 Cloud Billing 데이터가 이전 달 초부터 소급되어 제공됩니다. 시간순으로 데이터를 내보냅니다. 내보낸 데이터의 초기 백필의 경우 최신 사용량 데이터가 표시되기 전에 소급 Cloud Billing 데이터 내보내기가 완료되는 데 최대 5일이 걸릴 수 있습니다.
- 표준 사용량 비용 데이터 내보내기를 사용 설정하고 지원되는 리전 위치를 사용하도록 구성된 데이터 세트를 선택하면 Cloud Billing 데이터가 내보내기를 사용 설정한 날짜부터 소급되어 제공됩니다.
- 표준 사용량 비용 데이터 내보내기를 사용 설정, 중지했다가 다시 사용 설정하면 데이터 내보내기가 명시적으로 중단된 기간 동안에는 Cloud Billing 데이터를 사용할 수 없습니다.
- BigQuery 테이블에 로드되는 데이터의 빈도에 대해 자세히 알아보세요.
- 표준 사용량 비용 데이터에는 서비스 사용을 발생시키는 가상 머신 또는 SSD와 같은 리소스 수준 비용 데이터가 포함되지 않습니다. 분석을 위해 리소스 수준 비용 데이터를 BigQuery로 내보내려면 상세 사용량 비용 데이터 내보내기를 사용 설정하는 것이 좋습니다. 내보낸 자세한 사용 비용 데이터에는 표준 사용 비용 데이터에 포함된 모든 필드 및 정보가 포함됩니다.
- 고객 관리 암호화 키(CMEK)가 사용 설정된 데이터 세트와 같이 BigQuery로 결제 데이터를 내보내는 데 영향을 줄 수 있는 다른 제한사항을 참조하세요.
필드 | 유형 | 설명 |
---|---|---|
billing_account_id |
문자열 | 사용량에 연결된 Cloud Billing 계정 ID입니다. 리셀러: Cloud Billing 하위 계정을 통해 사용량 비용이 생성된 경우 상위 리셀러 Cloud Billing 계정 ID가 아닌 하위 계정 ID입니다. |
invoice.month |
문자열 | 비용 항목이 포함된 인보이스의 연도 및 월(YYYYMM)입니다. 예를 들어 '201901'은 2019년 1월입니다. 이 필드를 사용하여 인보이스에 대한 총 청구 금액을 확인할 수 있습니다. BigQuery 쿼리로 Cloud Billing 내보내기 예시를 참조하세요. |
cost_type |
문자열 | 정기 비용, 세금, 조정 또는 반올림 오류 등 이 항목이 나타내는 비용 유형입니다. |
service.id |
문자열 | 사용량에 연결된 서비스의 ID입니다. |
service.description |
문자열 | Cloud Billing 데이터를 보고한 Google Cloud 서비스입니다. |
sku.id |
문자열 | 서비스에서 사용한 리소스의 ID입니다. SKU의 전체 목록은 Google Cloud SKU를 참조하세요. |
sku.description |
문자열 | 서비스에서 사용한 리소스 유형에 대한 설명입니다. 예를 들어 Cloud Storage의 리소스 유형은 Standard Storage US입니다. |
usage_start_time |
타임스탬프 | 주어진 비용이 계산된 시간별 사용 기간의 시작 시간입니다. 모든 서비스의 사용량/비용은 시간 단위로 상세하게 표시됩니다. 즉 장기간 실행되는 서비스 사용량은 여러 개의 시간별 기간에 걸쳐 표시됩니다.
자세한 내용은 타임스탬프 데이터 유형에 대한 BigQuery 문서를 참조하세요. 또한 아래의 내보낸 데이터와 인보이스의 차이점을 참조하세요. |
usage_end_time |
타임스탬프 | 주어진 비용이 계산된 시간별 사용 기간의 종료 시간입니다. 모든 서비스의 사용량/비용은 시간 단위로 상세하게 표시됩니다. 즉 장기간 실행되는 서비스 사용량은 여러 개의 시간별 기간에 걸쳐 표시됩니다.
자세한 내용은 타임스탬프 데이터 유형에 대한 BigQuery 문서를 참조하세요. 또한 아래의 내보낸 데이터와 인보이스의 차이점을 참조하세요. |
project |
구조체 | project 에는 ID, 숫자, 이름, 상위 항목 번호, 라벨 등 Cloud Billing 프로젝트를 설명하는 필드가 포함됩니다.
|
project.id |
문자열 | Cloud Billing 데이터를 생성한 Google Cloud 프로젝트의 ID입니다. |
project.number |
문자열 | Cloud Billing 데이터를 생성한 Google Cloud 프로젝트의 내부적으로 생성되고 익명처리된 고유 식별자입니다. 지원 기록과 기타 고객 커뮤니케이션에서 Google은 이 프로젝트 번호로 프로젝트를 참조합니다. |
project.name |
문자열 | Cloud Billing 데이터를 생성한 Google Cloud 프로젝트의 이름입니다. |
project.ancestry_numbers |
문자열 | 명시된 project.id 로 식별된 프로젝트에 대한 리소스 계층 구조의 상위 항목입니다(예: my-project-123).예: /ParentOrgNumber/ParentFolderNumber/. 리소스 계층 구조에 대해 자세히 알아보세요. |
project.ancestors | 구조체 |
이 필드에서는 프로젝트, 폴더, 조직을 포함하여 비용 항목의 리소스 계층 구조의 구조체 및 값에 대해 설명합니다. 상위 노드는 노드에서 루트로 정렬됩니다(프로젝트, 폴더, 조직). |
project.ancestors.resource_name | 문자열 | 각 상위 항목에 대한 'resourceType/resourceNumber' 형식의 상대적 리소스 이름입니다. project.ancestors.resource_name 을 사용하면 project.ancestry_numbers 에 대해 보다 완전한 보기가 제공됩니다. |
project.ancestors.display_name | 문자열 | Console에서 리소스에 대해 만든 이름입니다. |
project.labels.key | 문자열 | 라벨이 있는 경우 사용량이 발생한 Google Cloud 프로젝트의 라벨을 구성하는 키:값 쌍의 키 부분입니다. 라벨 사용에 대한 자세한 내용은 라벨 사용을 참조하세요. |
project.labels.value |
문자열 | 라벨이 있는 경우 사용량이 발생한 Google Cloud 프로젝트의 라벨을 구성하는 키:값 쌍의 값 부분입니다. 라벨 사용에 대한 자세한 내용은 라벨 사용을 참조하세요. |
labels.key |
문자열 | 라벨이 있는 경우 사용량이 발생한 Google Cloud 리소스의 라벨을 구성하는 키:값 쌍의 키 부분입니다. 라벨 사용에 대한 자세한 내용은 라벨 사용을 참조하세요. |
labels.value |
문자열 | 라벨이 있는 경우 사용량이 발생한 Google Cloud 리소스의 라벨을 구성하는 키:값 쌍의 값 부분입니다. 라벨 사용에 대한 자세한 내용은 라벨 사용을 참조하세요. |
system_labels.key |
문자열 | 라벨이 있는 경우, 사용량이 발생한 리소스의 시스템 생성 라벨을 구성하는 키:값 쌍에서 키 부분입니다. 사용 가능한 시스템 라벨도 참조하세요. |
system_labels.value |
문자열 | 라벨이 있는 경우, 사용량이 발생한 리소스의 시스템 생성 라벨을 구성하는 키:값 쌍에서 값 부분입니다. 사용 가능한 시스템 라벨도 참조하세요. |
location.location |
문자열 | 멀티 리전, 국가, 리전 또는 영역 수준의 사용량이 발생한 위치이거나 특정 위치가 없는 리소스의 경우 global 입니다.
자세한 내용은 위치 및 리전과 Google Cloud 위치를 참조하세요.
|
location.country |
문자열 | location.location 이 국가, 리전 또는 영역인 경우 이 필드는 사용량이 발생한 국가입니다(예: US ).
자세한 내용은 위치 및 리전과 Google Cloud 위치를 참조하세요.
|
location.region |
문자열 | location.location 이 리전 또는 영역인 경우 이 필드는 사용량이 발생한 리전입니다(예: us-central1 ).
자세한 내용은 위치 및 리전과 Google Cloud 위치를 참조하세요.
|
location.zone |
문자열 | location.location 이 영역인 경우 이 필드는 사용량이 발생한 영역입니다(예: us-central1-a ).
자세한 내용은 위치 및 리전과 Google Cloud 위치를 참조하세요.
|
cost |
부동 소수점 수 | 크레딧 적용 전 사용 비용으로, 정밀도는 소수점 최대 6자리까지입니다. 크레딧을 포함한 총 비용을 계산하려면 credits.amount 를 비용에 추가해야 합니다.
자세한 내용은 이 예시 쿼리를 참조하세요. |
currency |
문자열 | 청구된 비용의 통화입니다. 자세한 내용은 현지 통화로 청구 및 결제를 참조하세요. |
currency_conversion_rate |
부동 소수점 수 | 미국 달러와 현지 통화의 환율입니다. 즉, cost /currency_conversion_rate 는 미국 달러로 계산한 비용입니다. |
usage.amount |
부동 소수점 수 | 사용한 usage.unit 의 양입니다. |
usage.unit |
문자열 | 리소스 사용량을 측정하는 기본 단위입니다. 예를 들어 표준 스토리지의 기본 단위는 byte-seconds입니다. |
usage.amount_in_pricing_units
|
부동 소수점 수 | 사용한 usage.pricing_unit 의 양입니다.
|
usage.pricing_unit
|
문자열 | Cloud Billing Catalog API에 따른 리소스 사용량 측정 단위입니다. |
credits |
구조체 | credits 에는 Google Cloud 및 Google Maps Platform SKU와 관련된 크레딧의 구조와 값을 설명하는 필드가 포함됩니다. |
credits.id |
문자열 | 이 ID가 있는 경우 크레딧이 제품 SKU와 연결되어 있음을 나타냅니다.
credits.id 값은 영숫자로 된 고유 식별자(예: 12-b34-c56-d78) 또는 크레딧 유형의 설명(예: 약정 사용 할인: CPU)입니다.
|
credits.full_name |
문자열 | 제품 SKU와 연결된 크레딧의 이름입니다. 인간이 읽을 수 있는 영숫자 credits.id 에 대한 설명입니다.
예를 들어 무료 체험 크레딧 또는 지출 기반 약정 사용 할인이 있습니다.
|
credits.type |
문자열 | 이 필드는 credits.id 의 목적 또는 원본을 설명합니다.
크레딧 유형은 다음과 같습니다.
|
credits.name |
문자열 | Cloud Billing 계정에 적용된 크레딧에 대한 설명입니다. |
credits.amount |
부동 소수점 수 | 사용량에 적용된 크레딧 금액입니다. |
adjustment_info |
구조체 | adjustment_info 에는 Cloud Billing 계정과 연결된 비용 항목에 대한 조정 값과 구조를 설명하는 필드가 포함되어 있습니다.
|
adjustment_info.id |
문자열 | 존재하는 경우 비용 항목과 연결된 조정임을 나타냅니다. adjustment_info.id 는 문제로 인해 연결된 모든 조정의 고유 ID입니다.
|
adjustment_info.description |
문자열 | 조정 및 조정의 이유에 대한 설명입니다. |
adjustment_info.type |
문자열 | 조정 유형입니다. 유형은 다음과 같습니다.
|
adjustment_info.mode |
문자열 | 조정이 수행된 방법입니다. 모드에는 다음이 포함됩니다.
|
export_time |
타임스탬프 | Cloud Billing 데이터 추가와 연결된 처리 시간입니다.
새로 내보낼 때마다 항상 늘어나게 됩니다. 또한 아래의 내보낸 데이터와 인보이스의 차이점을 참조하세요. |
tags |
구조체 | 키, 값, 네임스페이스 등 태그를 설명하는 필드 |
tags.key |
문자열 | 이 특정 태그와 연결된 키의 짧은 이름 또는 표시 이름입니다. |
tags.value |
문자열 |
|
tags.inherited |
불리언 | 태그 바인딩이 상속되었는지(태그 상속됨 = True) 또는 직접/상속되지 않았는지(태그 상속됨 = False) 여부를 나타냅니다. 리소스 계층 구조에서 상위 리소스에 대한 태그 바인딩을 생성할 수 있습니다. |
tags.namespace |
문자열 | 태그 키 및 값을 정의하는 리소스 계층 구조를 나타냅니다. 네임스페이스를 태그 키 및 태그 값 짧은 이름과 결합하여 태그 키 또는 태그 값에 대해 전역적으로 고유한 정규화된 이름을 만들 수 있습니다. |
cost_at_list |
부동 소수점 수 | Cloud Billing 계정에 청구되는 모든 항목과 연결된 정가입니다. |
transaction_type |
문자열 | 판매자의 거래 유형입니다. 거래 유형은 다음 중 하나일 수 있습니다.
|
seller_name |
문자열 | 판매자의 법적 이름입니다. |
표준 및 세부 사용량 비용 데이터 이해하기
다음 섹션에서는 BigQuery로 내보낸 표준 및 상세 사용량 비용 데이터를 설명합니다.
라벨 정보
특정 라벨의 비용 데이터에는 해당 라벨이 리소스에 적용된 이후의 데이터 사용량만 표시됩니다. 예를 들어 2024년 1월 15일 Compute Engine VM에 environment:dev
라벨을 추가하는 경우 environment:dev
분석에는 1월 15일 이후 해당 VM에 대한 사용량만 포함됩니다.
또한 각 서비스에서 제공되는 시간에 따라 여러 다른 서비스에 대해 여러 다른 시간에 라벨 데이터가 표시될 수도 있습니다.
사용 가능한 시스템 라벨
시스템 라벨은 사용량을 생성한 리소스에 대한 중요 메타데이터의 키-값 쌍입니다. 다음 시스템 라벨은 적용 가능한 사용량에 자동으로 포함됩니다.
system_labels.key |
예시 system_labels.value |
설명 |
---|---|---|
compute.googleapis.com/machine_spec |
n1-standard-1, custom-2-2048 | 가상 머신의 구성입니다. 자세한 내용은 머신 유형을 참조하세요. |
compute.googleapis.com/cores |
n1-standard-4의 경우는 4, custom-2-2048의 경우는 2 | 가상 머신에 사용할 수 있는 vCPU 수입니다. |
compute.googleapis.com/memory |
n1-standard-4의 경우는 15360(즉, 15GB * 1024MB/GB), custom-2-2048의 경우는 2048 | 가상 머신에 사용할 수 있는 메모리 양(MB)입니다. |
compute.googleapis.com/is_unused_reservation |
true; false | 영역별 예약을 통해 예약되었지만 사용되지 않은 사용량을 나타냅니다. |
storage.googleapis.com/object_state |
live; noncurrent; soft_deleted; multipart | 청구 중인 스토리지 객체의 상태입니다. |
내보낸 데이터와 인보이스의 차이점
Google Cloud 제품은 다양한 간격으로 Cloud Billing 프로세스에 사용량 및 비용 데이터를 보고합니다. 따라서 Google Cloud 서비스 사용 및 Cloud Billing에서 볼 수 있는 사용량과 비용 사이에 지연이 발생할 수 있습니다. 일반적으로 비용은 1일 이내에 제공되지만 경우에 따라 24시간이 초과될 수도 있습니다.
캘린더 월이 끝나는 막바지 시점에 보고된 사용량은 해당 월의 인보이스에 포함되지 않고 다음 달 인보이스로 이월될 수 있습니다.
타임스탬프 필드를 사용하여 비용을 쿼리할 경우 원래 같은 사용 월에 생성된 인보이스에 포함되지 않았던 최근 보고된 사용량이 반환된 데이터에 나타날 수 있습니다. 따라서 반환된 Cloud Billing 데이터가 인보이스에 직접 매핑되지 않을 수 있습니다.
타임스탬프 필드는 다음과 같습니다.
usage_start_time
usage_end_time
export_time
인보이스에 직접 매핑되는 Cloud Billing 데이터를 반환하려면 타임스탬프 필드 대신 invoice.month
를 쿼리합니다.
세금
2020년 9월 1일부터 사용량 비용 데이터에 세금 책임이 단일 항목이 아니라 프로젝트별로 표시됩니다. 세금 데이터를 사용하는 쿼리 또는 시각화가 있는 경우 이러한 변경사항이 반영되도록 쿼리를 업데이트해야 할 수 있습니다.
예를 들어 9월 1일 이전에 기록된 비용의 경우 사용량 비용 데이터가 다음 예시와 유사하게 표시되며 여기서 총 세금 책임은 10달러입니다.
billing_account_id |
project.id |
cost_type |
cost |
---|---|---|---|
123456-ABCDEF-123456 | example-project | 일반 | $60 |
123456-ABCDEF-123456 | test-project | 일반 | $40 |
123456-ABCDEF-123456 | [empty] | 세금 | $10 |
9월 1일 이후에 기록된 비용의 경우 $10가 example-project
에는 $6, test-project
에는 $4로 세분화됩니다.
billing_account_id |
project.id |
cost_type |
cost |
---|---|---|---|
123456-ABCDEF-123456 | example-project | 일반 | $60 |
123456-ABCDEF-123456 | test-project | 일반 | $40 |
123456-ABCDEF-123456 | example-project | 세금 | $6 |
123456-ABCDEF-123456 | test-project | 세금 | $4 |
오류 및 조정
드물지만 Cloud Billing 데이터에 오류가 있거나 조정이 필요한 경우 수정 데이터가 추가됩니다. 이러한 조정은 결제 수정사항 또는 수정사항이라는 두 가지 카테고리 중 하나에 해당합니다.
결제 수정
결제 수정사항은 별도의 항목으로 표시됩니다. 결제 수정을 받으면 BigQuery로 Cloud Billing 내보내기의 새 항목에 변경사항이 표시됩니다. 표시된 조정 금액은 Google Cloud 콘솔의 결제 섹션에 있는 문서 영역에서 사용할 수 있는 인보이스, 대변 메모, 차변 메모 문서에 해당합니다.
결제 수정 및 적용 방법에 대한 자세한 내용은 메모 및 조정 이해를 참고하세요.
수정사항
수정사항은 소스 SKU에서 잘못된 데이터를 무효화하는 새로운 데이터로 표시됩니다. 잘못된 청구를 대체하는 새로운 데이터가 있는 경우도 있습니다. 결제 데이터 내보내기의 모든 열은 다음 열을 제외하고 원본 데이터와 일치합니다.
cost
credit
usage.amount
export_time
예를 들어 1월 1일에 SKU A
사용에 대해 $10가 청구되었다고 가정해 보겠습니다. 1월 인보이스(2월 초에 발행됨)에는 SKU A
에 대한 청구 금액 $10가 표시됩니다. 하지만 2월 2일에 Google Cloud에서 SKU A
에 대한 수정사항을 발표하여 사용 비용을 $5로 줄였습니다. 2월 인보이스(3월 초에 발행됨)에 다음과 같은 항목 2개가 추가로 표시됩니다.
- 1월 1일 사용량에 대해 -$10(원래 청구 금액을 무효화)
- 1월 1일 사용량에 대해 $5(의도된 청구 금액 명시)
이러한 새 항목에는 결제 데이터 내보내기에 adjustment_info
열이 있습니다. 과다 청구가 표시된 원래의 1월 인보이스는 조정되지 않습니다.
결제 데이터 내보내기에서 usage_start_time
별 비용을 확인하고 Day
별로 그룹화하여 청구 내역을 확인할 수 있습니다.
이러한 뷰에서는 지연된 수익 창출 사용량에 대한 수정사항이나 요금이 누적되므로 일시적으로 잘못된 데이터에 대해 걱정할 필요가 없습니다.
수정사항에 대한 자세한 정보를 확인하려면 인보이스 대상 월의 모든 청구 내역을 확인하고 사용일이 인보이스 대상 월 이전인 청구 내역을 찾습니다. 이러한 요금은 수정사항이나 지연된 수익 창출 사용량의 결과입니다.
다음 코드 샘플은 수정사항 또는 수익 창출이 지연된 사용의 총 비용을 반환하는 기본 쿼리를 만드는 방법을 보여줍니다.
SELECT
SUM(cost)
+ SUM(IFNULL((SELECT SUM(c.amount)
FROM UNNEST(credits) c), 0))
AS total
FROM `project.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE
invoice.month = '202311' AND
DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2023-11-01';
인보이스 요금에 대해 서비스별 비용 분석을 반환하는 쿼리 예시(사용일이 인보이스 대상 월 이전인 경우)는 'Cloud Billing 데이터 내보내기의 쿼리 예시'의 비용 세부정보를 쿼리하여 지정된 인보이스 대상 월의 서비스별 수정사항 또는 지연된 수익 창출 사용량 보기를 참고하세요.
커스텀 가격 책정 계약의 프로모션 크레딧 정보
커스텀 가격 책정 계약이 있는 경우 계약의 일부로 Google Cloud에서 사용할 수 있는 프로모션 크레딧을 받을 수 있습니다. 예를 들어 Compute Engine 리소스에서 사용할 수 있는 $1,000 크레딧을 받을 수 있습니다. 프로모션 크레딧은 일반적으로 결제 방법으로 간주됩니다. 프로모션 크레딧이 있으면 이 크레딧이 자동으로 적용되어 총 청구액이 줄어듭니다.
계약 약관에 따라 SKU의 정가 또는 순가격(할인 후)으로 계산된 비용에 프로모션 크레딧 적용 여부가 지정됩니다.
프로모션 크레딧이 정가로 계산된 비용에 적용되는 경우 비용 테이블 보고서에 Contract billing adjustment
라는 SKU가 있는 Invoice
라는 서비스가 있습니다. 이 SKU는 크레딧이 정가 비용에 적용되도록 크레딧을 조정합니다. 조정되는 사용량을 확인하려면 system.labels
열을 쿼리합니다. system.labels.key
의 키는 cloud-invoice.googleapis.com/sku_id
이고 system.labels.value
의 값에는 크레딧 및 조정이 적용된 SKU ID가 포함됩니다.
태그 정보
태그는 키-값 쌍 형식의 리소스로, 리소스에 직접 또는 상속을 통해 연결할 수 있습니다. 태그를 사용하여 지불 거절, 감사, 기타 비용 할당 분석을 수행할 수 있습니다. 태그 및 조건부 정책 적용을 사용하여 리소스 계층 구조 전반을 세밀하게 제어할 수도 있습니다.
태그는 강력한 권한 모델을 가지며 상속, 중앙 집중식 관리, 명명 표준, 정책 엔진 통합을 지원할 수 있는 반면 라벨은 리소스에 주석을 추가할 수 있는 별도의 도구입니다.
태그 데이터는 리소스, 프로젝트, 폴더, 조직의 BigQuery 내보내기에 표시됩니다.
사용 가능한 태그
리소스, 프로젝트, 폴더, 조직의 표준 비용 및 상세 비용 내보내기에는 태그 키, 태그 값, 상속된 태그, 태그 네임스페이스와 같은 태그 데이터의 필드에 포함됩니다.
Cloud Billing 데이터 내보내기의 리소스 수준 태그는 다음 리소스에 사용할 수 있습니다.
- Compute Engine 인스턴스
- Cloud Storage 버킷
- Spanner 인스턴스
- Cloud Run 서비스 및 작업
- Artifact Registry 저장소
- Memorystore for Redis 인스턴스
태그 제한사항
- 태그가 BigQuery 내보내기에 전파되는 데 최대 1시간이 걸릴 수 있습니다. 1시간 내에 태그가 추가 또는 삭제되었거나 1시간 미만 동안 리소스가 존재하면 내보내기에 표시되지 않을 수 있습니다.
표준 사용량 비용 쿼리 예시
이 섹션에서는 BigQuery로 내보낸 Cloud Billing 표준 사용 비용 데이터를 쿼리하는 방법에 대한 예시를 제공합니다.
쿼리에 사용할 테이블 이름 지정
이 예시에서는 BigQuery에서 Cloud Billing 데이터를 쿼리하려면 FROM
절에 테이블 이름을 지정해야 합니다. 테이블 이름은 project.dataset.BQ_table_name의 세 가지 값을 사용하여 결정됩니다.
- project는 BigQuery 데이터 세트가 포함되어 있는 설정한 Google Cloud 프로젝트의 ID입니다.
- dataset는 내보낸 Cloud Billing 데이터가 있는 BigQuery 테이블을 포함하도록 설정한 BigQuery 데이터 세트입니다.
- BQ_table_name은 쿼리하려는 내보낸 Cloud Billing 데이터가 포함된 BigQuery 테이블의 이름입니다.
Cloud Billing 데이터가 포함된 BigQuery 테이블은 세 가지가 있습니다.
- 표준 사용량 비용 테이블: BigQuery 데이터 세트에서 이 테이블의 이름은
gcp_billing_export_v1_<BILLING_ACCOUNT_ID>
입니다. - 상세 사용량 비용 테이블: BigQuery 데이터 세트에서 이 테이블의 이름은
gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
입니다. - 가격 책정 테이블: BigQuery 데이터 세트에서 이 테이블의 이름은
cloud_pricing_export
입니다.
- 표준 사용량 비용 테이블: BigQuery 데이터 세트에서 이 테이블의 이름은
예시 표준 비용 쿼리에서 사용된 공통 값
이 섹션의 쿼리 예시에서는 테이블 이름에 대해 project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX
값을 사용합니다.
이러한 쿼리 예시는 상세 사용량 비용 내보내기 옵션과 함께 제공된 리소스 수준 정보를 검색하기 위해 작성되지는 않지만 BigQuery로 내보낸 상세 사용량 비용 데이터와 함께 작동합니다.
인보이스의 총 비용 반환
다음 쿼리는 내보낸 결제 데이터를 사용해서 비용 및 크레딧 값을 볼 수 있는 두 가지 방법을 보여줍니다.
total
필드는 부동 소수점 비용과 크레딧 값을 직접 합산하므로 부동 소수점 반올림 오차가 발생할 수 있습니다.total_exact
필드는 비용과 크레딧 값을 합산하기 전 micro로 변환한 다음 합산 후에 다시 dollar로 변환하므로, 부동 소수점 반올림 오차가 방지됩니다.
예시 1: 인보이스당 모든 비용 합계
이 쿼리는 일반 비용 합계로 된 각 월의 인보이스 합계, 세금, 조정 및 반올림 오류를 보여줍니다.
표준 SQL
SELECT invoice.month, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost * 1000000 AS int64)) + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64)) FROM UNNEST(credits) c), 0))) / 1000000 AS total_exact FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` GROUP BY 1 ORDER BY 1 ASC ;
예를 들어 앞의 쿼리에 대한 결과는 다음과 같습니다.
행 | 월 | 합계 | total_exact |
---|---|---|---|
1 | 201901 | $1005.004832999999984 | $1005.00 |
2 | 201902 | $992.3101739999999717 | $992.31 |
3 | 201903 | $1220.761089999999642 | $1220.76 |
예시 2: 인보이스 대상 월당 비용 유형별 세부정보 반환
이 쿼리에서는 월별로 각 cost_type
의 합계를 보여줍니다. 비용 유형에는 일반 비용, 세금, 조정 및 반올림 오류가 포함됩니다.
표준 SQL
SELECT invoice.month, cost_type, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost * 1000000 AS int64)) + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64)) FROM UNNEST(credits) c), 0))) / 1000000 AS total_exact FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` GROUP BY 1, 2 ORDER BY 1 ASC, 2 ASC ;
예를 들어 앞의 쿼리에 대한 결과는 다음과 같습니다.
행 | 월 | cost_type | 합계 | total_exact |
---|---|---|---|---|
1 | 201901 | regular | $1000.501209987994782 | $1000.50 |
2 | 201901 | rounding_error | –$0.500489920049387 | –$0.50 |
3 | 201901 | 세금 | $10.000329958477891 | $10.00 |
4 | 201901 | 조정 | –$5.002572999387045 | –$5.00 |
라벨이 있는 쿼리 예시
다음 예는 라벨로 데이터를 쿼리하는 다른 방법을 보여줍니다.
이 섹션의 예시에서는 다음을 가정합니다.
- 2가지 앱(grapefruit-squeezer 및 chocolate-masher)이 있습니다.
- 각 앱에는 2가지 환경(dev 및 prod)이 있습니다.
- dev 환경의 경우 앱마다 1개의 소형 인스턴스가 있습니다.
- prod 환경의 경우 미국에 소형 인스턴스 1개, 아시아에 소형 인스턴스 1개가 있습니다.
- 각 인스턴스에 앱 및 환경 라벨이 지정됩니다.
- 실험에 사용되며 라벨이 없는 인스턴스가 1개 있습니다.
총 청구 요금은 $24이며 상세 내역은 다음과 같습니다.
인스턴스 | 라벨 | 총 비용 |
---|---|---|
소형 인스턴스(VCPU 1개), 미국에서 실행 | 없음 | $4 |
소형 인스턴스(VCPU 1개), 미국에서 실행 | 앱: chocolate-masher 환경: dev |
$2 |
소형 인스턴스(VCPU 1개), 미국에서 실행 | 앱: grapefruit-squeezer 환경: dev |
$3 |
소형 인스턴스(VCPU 1개), 미국에서 실행 | 앱: chocolate-masher 환경: prod |
$3.25 |
소형 인스턴스(VCPU 1개), 아시아에서 실행 | 앱: chocolate-masher 환경: prod |
$3.75 |
소형 인스턴스(VCPU 1개), 미국에서 실행 | 앱: grapefruit-squeezer 환경: prod |
$3.50 |
소형 인스턴스(VCPU 1개), 아시아에서 실행 | 앱: grapefruit-squeezer 환경: prod |
$4.50 |
그룹화 없이 모든 행 쿼리
이러한 비용을 가장 자세히 보려면 그룹화 없이 모든 행을 쿼리해야 합니다. 라벨 및 SKU 설명을 제외한 프로젝트, 서비스 등의 모든 필드는 동일하다고 가정합니다.
표준 SQL
SELECT sku.description, TO_JSON_STRING(labels) as labels, cost as cost FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`;
legacy SQL
TO_JSON_STRING not supported.
행 | sku.description | 라벨 | 비용 |
---|---|---|---|
1 | 소형 인스턴스(VCPU 1개), 미국에서 실행 | [] | $4 |
2 | 소형 인스턴스(VCPU 1개), 미국에서 실행 | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] | $2 |
3 | 소형 인스턴스(VCPU 1개), 미국에서 실행 | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] | $3 |
4 | 소형 인스턴스(VCPU 1개), 미국에서 실행 | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | $3.25 |
5 | 소형 인스턴스(VCPU 1개), 아시아에서 실행 | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | $3.75 |
6 | 소형 인스턴스(VCPU 1개), 미국에서 실행 | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | $3.50 |
7 | 소형 인스턴스(VCPU 1개), 아시아에서 실행 | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | $4.50 |
합계 | $24 |
라벨 맵에 따라 JSON 문자열로 그룹화
빠르고 쉽게 비용을 라벨 조합별로 분류하는 방법입니다.
표준 SQL
SELECT TO_JSON_STRING(labels) as labels, sum(cost) as cost FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` GROUP BY labels;
legacy SQL
TO_JSON_STRING not supported.
행 | 라벨 | 비용 |
---|---|---|
1 | [] | $4 |
2 | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] | $2 |
3 | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] | $3 |
4 | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | $7 |
5 | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | $8 |
합계 | $24 |
라벨 값의 특정 키에 따라 그룹화
특정 라벨 키의 값에 따라 비용을 분류하는 경우가 많습니다. WHERE 대신 LEFT JOIN을 사용하고 JOIN 조건에 키 필터를 넣으면 이 키를 포함하지 않는 비용이 포함되므로 비용의 전체 보기가 수신됩니다.
표준 SQL
SELECT labels.value as environment, SUM(cost) as cost FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` LEFT JOIN UNNEST(labels) as labels ON labels.key = "environment" GROUP BY environment;
legacy SQL
SELECT labels.value as environment, SUM(cost) as cost FROM [project:dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX] WHERE labels.key = "environment" OR labels.key IS NULL GROUP BY environment;
행 | 환경 | 비용 |
---|---|---|
1 | prod | $15 |
2 | dev | $5 |
3 | null | $4 |
합계 | $24 |
키-값 쌍으로 그룹화
이 결과를 해석하거나 내보낼 때는 주의해야 합니다. 여기에서 개별 행은 중복 합산되지 않은 올바른 합계를 표시하지만 다른 행과 조합해서는 안 됩니다. 키가 동일하거나, 같은 리소스에 키가 설정되지 않은 것이 확실한 경우에는 괜찮습니다.
표준 SQL
SELECT labels.key as key, labels.value as value, SUM(cost) as cost FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` LEFT JOIN UNNEST(labels) as labels GROUP BY key, value;
legacy SQL
SELECT labels.key as key, labels.value as value, SUM(cost) FROM [project:dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX] GROUP BY key, value;
행 | 키 | 값 | 비용 |
---|---|---|---|
1 | null | null | $4 |
2 | 앱 | chocolate-masher | $9 |
3 | 앱 | grapefruit-squeezer | $11 |
4 | 환경 | dev | $5 |
5 | 환경 | prod | $15 |
합계 | $44 |
총합이 결제 금액보다 높습니다.
약정 사용 할인 쿼리
다음 쿼리는 내보낸 결제 데이터에서 약정 사용 할인과 관련된 수수료 및 크레딧을 확인하는 방법을 보여줍니다. 약정 요금 및 크레딧이 Cloud Billing 계정과 프로젝트에 적용되는 방식을 알아보려면 약정 사용 할인 기여 분석을 참조하세요.
약정 수수료 보기
결제 데이터 내보내기에서 약정 사용 할인에 대한 약정 수수료를 보려면 다음 샘플 쿼리를 사용하세요.
표준 SQL
SELECT invoice.month AS invoice_month, SUM(cost) as commitment_fees FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` WHERE LOWER(sku.description) LIKE "commitment%" GROUP BY 1
약정 크레딧 보기
결제 데이터 내보내기에서 약정 사용 할인 크레딧을 보려면 다음 샘플 쿼리를 사용하세요.
표준 SQL
SELECT invoice.month AS invoice_month, SUM(credits.amount) as CUD_credits FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` LEFT JOIN UNNEST(credits) AS credits WHERE LOWER(credits.name) LIKE "committed use discount%" GROUP BY 1
리소스 계층 구조 필터를 사용하여 상위 항목 검토
리소스 계층 구조 필터를 사용하여 프로젝트, 폴더, 조직과 같은 계층 구조 요소에 따라 비용을 집계할 수 있습니다. 이러한 쿼리 예시는 리소스 계층 구조 요소로 필터링된 비용을 합산하고 프로젝트 상위 항목을 표시하기 위한 방법을 보여줍니다.
예시 1: 리소스 이름으로 필터링
이 예시에서는 프로젝트 상위 항목으로 비용을 그룹화하고 상대적 리소스 이름으로 식별되고, 지정된 계층 구조 요소에 따라 생성된 비용만 필터링하는 쿼리를 보여줍니다.
문자열 방법
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` as bq WHERE TO_JSON_STRING(project.ancestors) like "%resource_name\":\"folders/1234" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
UNNEST 방법
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` as bq, UNNEST(project.ancestors) as ancestor WHERE ancestor.resource_name = "folders/1234" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
예시 2: 표시 이름으로 필터링
이 예시에서는 프로젝트 상위 항목으로 비용을 그룹화하고 사용자가 제공한 표시 이름으로 식별되고, 지정된 계층 구조 요소에 따라 생성된 비용만 필터링하는 쿼리를 보여줍니다.
문자열 일치 방법
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` as bq WHERE TO_JSON_STRING(project.ancestors) like "%display_name\":\"MyFolderName%" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
UNNEST 방법
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` as bq, UNNEST(project.ancestors) as ancestor WHERE ancestor.display_name = "MyFolderName" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
태그가 있는 쿼리 예시
다음 예시는 태그를 사용하여 데이터를 쿼리하는 방법을 보여줍니다.
태그를 사용하여 인보이스 대상 월별 비용 계산
다음 쿼리는 cost_center
태그에 대해 인보이스 대상 월별로 반환 비용을 사용하는 방법을 보여줍니다.
SELECT invoice.month AS invoice_month, tag.value AS cost_center, ROUND((SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM (CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))), 2) AS net_cost FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`, UNNEST(tags) AS tag WHERE tag.key = "cost_center" AND tag.namespace = "821092389413" GROUP BY invoice.month, tag.value ORDER BY invoice.month, tag.value;
예를 들어 앞의 쿼리에 대한 결과는 다음과 같습니다.
행 | invoice_month | cost_center | net_cost |
---|---|---|---|
1 | 202208 | android_mobile_apps | 9.93 |
2 | 202208 | ios_mobile_apps | 9.93 |
3 | 202209 | android_mobile_apps | 25.42 |
4 | 202209 | ios_mobile_apps | 25.4 |
5 | 202209 | 맞춤설정 | 16.08 |
태그가 지정되지 않은 리소스의 비용 보기
이 쿼리는 태그되지 않은 리소스의 인보이스 합계를 인보이스 대상 월별로 그룹화하여 표시합니다.
SELECT invoice.month AS invoice_month, ROUND((SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))), 2) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE "color" NOT IN (SELECT key FROM UNNEST(tags)) GROUP BY invoice_month ORDER BY invoice_month;
예를 들어 앞의 쿼리에 대한 결과는 다음과 같습니다.
행 | invoice_month | net_cost |
---|---|---|
1 | 202202 | 0 |
2 | 202203 | 16.81 |
3 | 202204 | 54.09 |
4 | 202205 | 55.82 |
5 | 202206 | 54.09 |
6 | 202207 | 55.83 |
7 | 202208 | 31.49 |
추가 쿼리 예시
지정된 인보이스 대상 월에 프로젝트별 비용 및 크레딧 쿼리
이 쿼리는 2020년 6월의 특정 인보이스 대상 월(YYYYMM 형식)을 제공하여 프로젝트별로 그룹화된 비용 및 크레딧 보기를 반환합니다.
표준 SQL
SELECT project.name, TO_JSON_STRING(project.labels) as project_labels, sum(cost) as total_cost, SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) as total_credits FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX` WHERE invoice.month = "202006" GROUP BY 1, 2 ORDER BY 1;
legacy SQL
TO_JSON_STRING not supported.
행 | name | project_labels | total_cost | total_credits |
---|---|---|---|---|
1 | CTG - Dev | [{"key":"ctg_p_env","value":"dev"}] | 79.140979 | -4.763796 |
2 | CTG - Prod | [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"eng"}] | 32.466272 | -3.073356 |
3 | CTG - Sandbox | [{"key":"ctg_p_env","value":"dev"}] | 0 | 0 |
4 | CTG - Storage | [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"data"}] | 7.645793 | -0.003761 |
관련 주제
내보낸 Cloud Billing 데이터와 관련된 주제
- BigQuery로 Cloud Billing 데이터 내보내기 설정
- Cloud Billing 데이터를 BigQuery로 내보내는 쿼리 예시
- Looker Studio로 시간별 지출 시각화
Google Cloud 콘솔에서 사용 가능한 비용 및 가격 책정 보고서
- Cloud Billing 보고서 및 비용 추세 보기
- 인보이스 또는 명세서의 비용 세부정보 조회 및 다운로드
- Google Cloud 서비스의 가격 보기 및 다운로드
- 비용 분석 보고서로 절감되는 비용 알아보기
- 약정 사용 할인의 효과 분석
- 비용 및 결제 내역 보기