Dokumen ini memberikan beberapa contoh cara membuat kueri data Penagihan Cloud yang diekspor dan disimpan di BigQuery.
Untuk mengetahui informasi selengkapnya tentang cara mengekspor data penagihan Anda ke BigQuery, lihat ringkasan dan batasan.
Membuat kueri SQL dari Laporan Penagihan
Untuk menulis kueri SQL dengan cepat yang menampilkan hasil yang setara di BigQuery sebagai hasil dalam Billing Report, Anda dapat menggunakan fitur Buat kueri di Billing Reports, yang tersedia di konsol Google Cloud.
Menentukan nama tabel yang akan digunakan dalam kueri Anda
Dalam contoh ini, untuk membuat kueri data Penagihan Cloud yang diekspor di
BigQuery, Anda harus menentukan jalur lengkap ke nama tabel di
klausa FROM
. Nama tabel ditentukan menggunakan tiga nilai yang dipisahkan
titik:
project-ID.dataset_name.BQ_table_name
project-ID
adalah ID project Google Cloud yang Anda siapkan yang berisi set data BigQuery Anda.dataset_name
adalah nama set data BigQuery yang Anda siapkan untuk berisi tabel BigQuery dengan data Penagihan Cloud yang diekspor.BQ_table_name
adalah nama tabel BigQuery yang berisi data Penagihan Cloud yang diekspor yang ingin Anda kueri.Tabel BigQuery yang berisi data Penagihan Cloud yang diekspor akan otomatis diberi nama, berdasarkan jenis ekspor yang Anda aktifkan:
Tabel biaya penggunaan standar: Di set data BigQuery, tabel ini diberi nama
gcp_billing_export_v1_<BILLING-ACCOUNT-ID>
.Tabel biaya penggunaan mendetail: Di set data BigQuery, tabel ini diberi nama
gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
.Tabel harga: Di set data BigQuery, tabel ini diberi nama
cloud_pricing_export
.
Misalnya, Anda memiliki akun Penagihan Cloud yang dikonfigurasi untuk mengekspor data biaya penggunaan mendetail dan komponen konfigurasi ekspor penagihan sebagai berikut:
project-ID
:my-billing-project
dataset_name
:my_billing_dataset
BQ_table_name
:gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
BILLING-ACCOUNT-ID
:010101-F0FFF0-10X10X
– ini adalah ID akun Penagihan Cloud yang berisi data penagihan yang Anda ekspor. Pelajari cara menemukan ID akun penagihan Anda.
Berdasarkan contoh nilai, Anda akan menulis klausa FROM
sebagai berikut:
my-billing-project.my_billing_dataset.gcp_billing_export_resource_v1_010101-F0FFF0-10X10X
Contoh kueri berdasarkan jenis data Penagihan Cloud
Bagian ini memberikan contoh kueri untuk data biaya penggunaan standar, data biaya penggunaan mendetail, dan data harga.
Jika memilih untuk mengekspor data biaya penggunaan mendetail, Anda dapat menggunakan contoh kueri Biaya penggunaan standar selain contoh kueri Biaya penggunaan mendetail.
Contoh kueri biaya penggunaan standar
Bagian ini memberikan contoh cara membuat kueri data biaya penggunaan standar Penagihan Cloud yang diekspor ke BigQuery.
Contoh kueri ini juga berfungsi dengan data biaya penggunaan terperinci yang diekspor ke BigQuery, meskipun tidak ditulis untuk mengambil informasi tingkat resource apa pun yang disediakan dengan opsi ekspor biaya penggunaan terperinci.
Nilai umum yang digunakan dalam contoh kueri biaya standar
Contoh kueri di bagian ini menggunakan nilai berikut untuk Nama tabel:
project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX
Mengembalikan biaya total di invoice
Kueri berikut menunjukkan dua cara untuk melihat nilai biaya dan kredit menggunakan data penagihan yang diekspor.
- Kolom
total
menjumlahkan biaya floating point dan nilai kredit secara langsung, yang dapat menyebabkan error pembulatan floating point. - Kolom
total_exact
mengonversi biaya dan nilai kredit menjadi mikro sebelum dijumlahkan, lalu dikonversi kembali ke dolar setelah penjumlahan, untuk menghindari error pembulatan floating point.
Contoh 1: Jumlah semua biaya, per invoice
Kueri ini menampilkan total invoice setiap bulan, sebagai jumlah biaya reguler, pajak, penyesuaian, dan error pembulatan.
SQL Standar
SELECT invoice.month, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1 ORDER BY 1 ASC ;
Misalnya, hasil kueri sebelumnya mungkin adalah:
Baris | bulan | total | total_exact |
---|---|---|---|
1 | 201901 | $1005,004832999999984 | $1005,00 |
2 | 201902 | $992,3101739999999717 | $992,31 |
3 | 201903 | $1220,761089999999642 | $1220,76 |
Contoh 2: Detail pengembalian menurut jenis biaya, per bulan invoice
Kueri ini menampilkan total setiap cost_type
untuk setiap bulan. Jenis biaya
mencakup biaya reguler, pajak, penyesuaian, dan kesalahan pembulatan.
SQL Standar
SELECT invoice.month, cost_type, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1, 2 ORDER BY 1 ASC, 2 ASC ;
Misalnya, hasil kueri sebelumnya mungkin adalah:
Baris | bulan | cost_type | total | total_exact |
---|---|---|---|---|
1 | 201901 | reguler | $1000,501209987994782 | $1000,50 |
2 | 201901 | rounding_error | –$0,500489920049387 | –$0,50 |
3 | 201901 | pajak | $10,000329958477891 | $10,00 |
4 | 201901 | penyesuaian | –$5,002572999387045 | –$5,00 |
Contoh kueri dengan label
Contoh berikut menggambarkan cara lain untuk membuat kueri data dengan label.
Untuk contoh di bagian ini, asumsikan hal berikut:
- Anda memiliki dua aplikasi (grapefruit-squeezer dan chocolate-masher).
- Untuk setiap aplikasi, Anda memiliki dua lingkungan (dev dan prod).
- Lingkungan pengembangan memiliki satu instance kecil per aplikasi.
- Lingkungan produksi memiliki satu instance kecil di Amerika dan satu instance kecil di Asia.
- Setiap instance diberi label dengan aplikasi dan lingkungan.
- Anda memiliki satu instance tanpa label yang digunakan untuk eksperimen.
Total tagihan Anda adalah $24 dengan rincian sebagai berikut:
Instance | Label | Biaya Total |
---|---|---|
Instance kecil dengan 1 VCPU yang berjalan di Amerika | Tidak ada | $4 |
Instance kecil dengan 1 VCPU yang berjalan di Amerika | aplikasi: chocolate-masher lingkungan: dev |
$2 |
Instance kecil dengan 1 VCPU yang berjalan di Amerika | aplikasi: grapefruit-squeezer lingkungan: dev |
$3 |
Instance kecil dengan 1 VCPU yang berjalan di Amerika | aplikasi: chocolate-masher lingkungan: prod |
$3,25 |
Instance kecil dengan 1 VCPU yang berjalan di Asia | aplikasi: chocolate-masher lingkungan: prod |
$3,75 |
Instance kecil dengan 1 VCPU yang berjalan di Amerika | aplikasi: grapefruit-squeezer lingkungan: prod |
$3,50 |
Instance kecil dengan 1 VCPU yang berjalan di Asia | aplikasi: grapefruit-squeezer lingkungan: prod |
$4,50 |
Membuat kueri setiap baris tanpa pengelompokan
Tampilan yang paling terperinci biaya ini adalah dengan meng-kueri setiap baris tanpa pengelompokan. Asumsikan semua kolom, kecuali label dan deskripsi SKU, sama (project, layanan, dan sebagainya).
SQL Standar
SELECT sku.description, TO_JSON_STRING(labels) as labels, cost as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`;
Legacy SQL
TO_JSON_STRING not supported.
Baris | sku.description | label | cost |
---|---|---|---|
1 | Instance kecil dengan 1 VCPU yang berjalan di Amerika | [] | $4 |
2 | Instance kecil dengan 1 VCPU yang berjalan di Amerika | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] | $2 |
3 | Instance kecil dengan 1 VCPU yang berjalan di Amerika | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] | $3 |
4 | Instance kecil dengan 1 VCPU yang berjalan di Amerika | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | $3,25 |
5 | Instance kecil dengan 1 VCPU yang berjalan di Asia | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | $3,75 |
6 | Instance kecil dengan 1 VCPU yang berjalan di Amerika | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | $3,50 |
7 | Instance kecil dengan 1 VCPU yang berjalan di Asia | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | $4,50 |
TOTAL | $24 |
Mengelompokkan peta label sebagai string JSON
Ini adalah cara dasar untuk mengelompokkan biaya berdasarkan setiap kombinasi label.
SQL Standar
SELECT TO_JSON_STRING(labels) as labels, sum(cost) as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY labels;
Legacy SQL
TO_JSON_STRING not supported.
Baris | label | cost |
---|---|---|
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 |
TOTAL | $24 |
Mengelompokkan menurut nilai label untuk kunci tertentu
Memerinci biaya untuk nilai kunci label tertentu adalah kasus penggunaan yang umum. Dengan
menggunakan LEFT JOIN
dan menempatkan filter kunci dalam kondisi JOIN
(bukan
WHERE
), Anda menyertakan biaya yang tidak berisi kunci ini, sehingga Anda mendapatkan
gambaran lengkap biaya.
SQL Standar
SELECT labels.value as environment, SUM(cost) as cost FROM `project-ID.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-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX] WHERE labels.key = "environment" OR labels.key IS NULL GROUP BY environment;
Baris | environment | cost |
---|---|---|
1 | prod | $15 |
2 | dev | $5 |
3 | null | $4 |
TOTAL | $24 |
Mengelompokkan menurut key-value pair
Berhati-hatilah saat menafsirkan atau mengekspor hasil ini. Setiap baris di sini menunjukkan jumlah yang valid tanpa penghitungan ganda, tetapi tidak boleh digabungkan dengan baris lain (kecuali jika kuncinya sama, atau jika Anda yakin bahwa kunci tidak pernah disetel pada resource yang sama).
SQL Standar
SELECT labels.key as key, labels.value as value, SUM(cost) as cost FROM `project-ID.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-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX] GROUP BY key, value;
Baris | kunci | value | cost |
---|---|---|---|
1 | null | null | $4 |
2 | aplikasi | chocolate-masher | $9 |
3 | aplikasi | grapefruit-squeezer | $11 |
4 | environment | dev | $5 |
5 | environment | prod | $15 |
TOTAL | $44 |
Perhatikan bahwa jumlah total lebih besar dari tagihan Anda.
Kueri diskon abonemen
Kueri berikut menunjukkan cara melihat biaya dan kredit yang terkait dengan diskon abonemen dalam data penagihan yang diekspor. Untuk memahami bagaimana biaya komitmen dan kredit Anda diatribusikan ke project dan akun Penagihan Cloud Anda, lihat Atribusi diskon abonemen.
Melihat biaya komitmen
Untuk melihat biaya komitmen untuk diskon abonemen dalam ekspor data penagihan Anda, gunakan contoh kueri berikut.
SQL Standar
SELECT invoice.month AS invoice_month, SUM(cost) as commitment_fees FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE LOWER(sku.description) LIKE "commitment%" GROUP BY 1
Melihat kredit komitmen
Untuk melihat kredit diskon abonemen dalam ekspor data penagihan Anda, gunakan contoh kueri berikut.
SQL Standar
SELECT invoice.month AS invoice_month, SUM(credits.amount) as CUD_credits FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(credits) AS credits WHERE credits.type = "COMMITTED_USAGE_DISCOUNT" GROUP BY 1
Menggunakan filter hierarki resource untuk meninjau ancestry
Anda dapat menggunakan filter hierarki resource untuk menggabungkan biaya berdasarkan elemen hierarki seperti project, folder, dan organisasi. Contoh kueri ini menunjukkan metode untuk menjumlahkan biaya yang difilter oleh elemen hierarki resource dan menampilkan ancestries project.
Contoh 1: Filter menurut nama resource
Contoh ini menunjukkan kueri yang mengelompokkan biaya berdasarkan ancestry project dan memfilter hanya untuk biaya yang dihasilkan pada elemen hierarki tertentu, yang diidentifikasi berdasarkan nama resource relatif.
Metode string
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-ID.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
Metode 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-ID.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
Contoh 2: Memfilter menurut nama tampilan
Contoh ini menunjukkan kueri yang mengelompokkan biaya berdasarkan ancestry project dan memfilter hanya untuk biaya yang dihasilkan pada elemen hierarki tertentu, yang diidentifikasi dengan nama tampilan yang diberikan pengguna.
Metode pencocokan string
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-ID.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
Metode 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-ID.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
Contoh kueri dengan tag
Contoh berikut menggambarkan cara meng-kueri data dengan tag.
Menghitung biaya berdasarkan bulan invoice dengan tag
Kueri berikut menunjukkan cara menggunakan biaya pengembalian berdasarkan bulan invoice
untuk tag 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;
Misalnya, hasil kueri sebelumnya mungkin adalah:
Baris | 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 | personalisasi | 16,08 |
Melihat biaya resource yang tidak diberi tag
Kueri ini menampilkan total invoice untuk resource yang tidak diberi tag, yang dikelompokkan menurut bulan invoice.
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;
Misalnya, hasil kueri sebelumnya mungkin adalah:
Baris | 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 |
Contoh kueri tambahan
Biaya kueri dan kredit berdasarkan project untuk bulan invoice tertentu
Dengan memberikan bulan invoice tertentu pada Juni 2020 (dalam format YYYYMM), kueri ini akan menampilkan tampilan biaya dan kredit yang dikelompokkan menurut project beserta menampilkan label project.
SQL Standar
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-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE invoice.month = "202006" GROUP BY 1, 2 ORDER BY 1;
Baris | 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 - Penyimpanan | [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"data"}] | 7,645793 | -0,003761 |
Biaya kueri untuk melihat koreksi atau penggunaan yang dimonetisasi terlambat untuk bulan invoice tertentu
Dengan memberikan bulan invoice tertentu dan memfilter menurut tanggal saat tanggal penggunaan terjadi sebelum bulan invoice, kueri sederhana ini akan menampilkan total biaya untuk koreksi atau penggunaan yang dimonetisasi terlambat (tagihan yang seharusnya ada di invoice sebelumnya).
SQL Standar
SELECT SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE invoice.month = '202403' AND DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01';
Misalnya, hasil kueri sebelumnya mungkin adalah:
Baris | total |
---|---|
1 | 3,531752 |
Mengkueri detail biaya untuk melihat koreksi atau penggunaan yang dimonetisasi terlambat menurut layanan untuk bulan invoice tertentu
Contoh ini menunjukkan kueri yang menampilkan perincian biaya menurut layanan, untuk tagihan invoice, dengan tanggal penggunaan terjadi sebelum bulan invoice. Kueri ini menampilkan total biaya dan kredit menurut layanan untuk koreksi atau penggunaan yang dimonetisasi terlambat (tagihan yang seharusnya ada di invoice sebelumnya).
Dalam contoh kueri ini, klausa WHERE
memfilter semua tagihan dengan
bulan invoice Maret 2024 (dalam format YYYYMM), lalu menyaring lebih lanjut
hasilnya untuk hanya menampilkan tagihan bulan invoice tersebut yang memiliki tanggal penggunaan
sebelum 1 Maret 2024.
SELECT DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) AS `Day`, service.description AS `Service Description`, SUM(CAST(cost_at_list AS NUMERIC)) AS `List cost`, SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC)) AS `Negotiated savings`, SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) AS `Discounts`, SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Promotions and others`, SUM(CAST(cost_at_list AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) + SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC))+ SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Subtotal` FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE invoice.month = '202403' AND DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01' GROUP BY Day, service.description ORDER BY Day DESC, Subtotal DESC;
Misalnya, hasil kueri sebelumnya mungkin adalah:
Baris | Hari | Deskripsi Layanan | Biaya per harga jual | Penghematan yang dinegosiasikan | Diskon | Promosi dan lainnya | Subtotal |
---|---|---|---|---|---|---|---|
1 | 2024-02-29 | Compute Engine | 4,39916 | 0 | -1,00916 | 0 | 3.39000 |
2 | 2024-02-29 | Dukungan | 0,131969 | 0 | 0 | 0 | 0,131969 |
3 | 2024-02-29 | BigQuery | 0,005502 | 0 | 0 | 0 | 0,005502 |
4 | 2024-02-29 | Jaringan | 0,010972 | 0 | -0,006691 | 0 | 0.004281 |
Contoh kueri biaya penggunaan mendetail
Bagian ini memberikan contoh cara membuat kueri data biaya penggunaan mendetail Penagihan Cloud yang diekspor ke BigQuery.
Karena skema biaya penggunaan mendetail mencakup semua kolom dari skema biaya penggunaan standar, contoh kueri yang diberikan untuk data standar yang diekspor ke BigQuery juga berfungsi dengan data mendetail yang diekspor. Contoh kueri standar tidak ditulis untuk mengambil informasi level resource yang disediakan dengan opsi ekspor biaya penggunaan mendetail. Saat membuat kueri untuk data mendetail, Anda dapat menggunakan contoh kueri standar sebagai template, update Nama tabel, dan tambahkan salah satu kolom yang tersedia di skema biaya penggunaan mendetail.
Untuk persyaratan dan batasan lebih lanjut terkait data mendetail yang diekspor, lihat Skema data biaya penggunaan mendetail.
Nilai umum yang digunakan dalam contoh kueri biaya mendetail
Contoh kueri di bagian ini menggunakan nilai berikut untuk Nama tabel:
project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX
Menampilkan biaya tingkat resource pada invoice
Kueri berikut menunjukkan dua cara untuk melihat biaya tingkat resource dan nilai kredit di invoice menggunakan data penagihan yang diekspor.
- Kolom
total
menjumlahkan biaya floating point dan nilai kredit secara langsung, yang dapat menyebabkan error pembulatan floating point. - Kolom
total_exact
mengonversi biaya dan nilai kredit menjadi mikro sebelum dijumlahkan, lalu dikonversi kembali ke dolar setelah penjumlahan, untuk menghindari error pembulatan floating point.
Menjumlahkan biaya untuk setiap resource, per invoice
Kueri ini menampilkan total invoice untuk setiap resource.name
per bulan, sebagai jumlah
biaya reguler, pajak, penyesuaian, dan error pembulatan. Semua biaya yang tidak
terkait dengan item tingkat resource digabungkan dalam nama null
untuk bulan tersebut.
SQL Standar
SELECT invoice.month, resource.name, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1, 2 ORDER BY 1 ASC, 2 ASC ;
Misalnya, hasil kueri sebelumnya mungkin adalah:
Baris | bulan | name | total | total_exact |
---|---|---|---|---|
1 | 201901 | null | $1005,004832999999984 | $1005,00 |
2 | 201901 | backend1 | $781,8499760000028 | $781,85 |
3 | 201902 | null | $953,0034923645475983 | $953,03 |
4 | 201902 | backend1 | $992,3101739999999717 | $992,31 |
5 | 201902 | bitnami-launchpad-wordpress-1-wordpress | $1,2817819999999998 | $1,28 |
Menampilkan detail menurut jenis biaya untuk setiap resource, per bulan invoice
Kueri ini menampilkan total setiap cost_type
untuk setiap resource.name
per
bulan. Jenis biaya mencakup biaya reguler, pajak, penyesuaian, dan error
pembulatan. Semua biaya yang tidak terkait dengan item tingkat resource digabungkan
berdasarkan nama null
untuk bulan tersebut.
SQL Standar
SELECT invoice.month, cost_type, resource.name, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1, 2, 3 ORDER BY 1 ASC, 2 ASC, 3 ASC ;
Misalnya, hasil kueri sebelumnya mungkin adalah:
Baris | bulan | cost_type | name | total | total_exact |
---|---|---|---|---|---|
1 | 201901 | reguler | null | $1000,501209987994782 | $1000,50 |
2 | 201901 | rounding_error | null | –$0,500489920049387 | –$0,50 |
3 | 201901 | pajak | null | $10,000329958477891 | $10,00 |
4 | 201901 | penyesuaian | null | –$5,002572999387045 | –$5,00 |
5 | 201901 | reguler | backend1 | $410,998795012082947 | $411,00 |
2 | 201901 | rounding_error | backend1 | –$0,2404900489920378 | –$0,24 |
3 | 201901 | pajak | backend1 | $4,105840329977189 | $4,11 |
Mendapatkan perincian biaya cluster Google Kubernetes Engine (GKE)
Bagian ini memberikan contoh pemfilteran biaya cluster GKE dalam laporan BigQuery Export Anda. Untuk mempelajari biaya cluster GKE lebih lanjut, buka Melihat perincian biaya cluster.
Memfilter biaya GKE
Contoh kueri berikut menunjukkan cara memfilter dan mengelompokkan biaya GKE untuk jenis resource yang didukung berdasarkan nama cluster, namespace, dan label.
Biaya cluster GKE sebelum kredit
SELECT SUM(cost) AS cost_before_credits, labels.value AS cluster_name FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels ON labels.key = "goog-k8s-cluster-name" GROUP BY labels.value ;
Biaya GKE setelah kredit berdasarkan namespace
SELECT labels.value as namespace, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS cost_after_credits, FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels ON labels.key = "k8s-namespace" GROUP BY namespace ;
Biaya GKE berdasarkan SKU
SELECT project.id AS project_id, labels.value AS cluster_name, sku.id AS sku_id, sku.description AS sku_description, SUM(cost) AS cost FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` JOIN UNNEST(labels) AS labels ON labels.key = "goog-k8s-cluster-name" GROUP BY cluster_name, project_id, sku_description, sku_id ;
Contoh kueri data harga
Bagian ini memberikan berbagai contoh cara membuat kueri data harga Penagihan Cloud yang diekspor ke BigQuery.
Nilai umum yang digunakan dalam contoh kueri harga
Contoh kueri di bagian ini menggunakan nilai berikut:
- Nama tabel:
project-ID.dataset.cloud_pricing_export
- ID SKU:
2DA5-55D3-E679
(Cloud Run - Permintaan)
Mendapatkan harga jual untuk SKU tertentu
Contoh ini menunjukkan kueri dasar yang menampilkan
list_price
untuk setiap
tingkat harga
untuk SKU tertentu.
SQL Standar
SELECT sku.id, sku.description, list_price.* FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
_PARTITIONTIME
adalah kolom yang dibuat secara otomatis oleh BigQuery
dan merepresentasikan tanggal asal data. Sebagai ganti _PARTITIONTIME
,
Anda dapat menggunakan kolom yang dihasilkan secara eksplisit oleh ekspor Penagihan Cloud,
seperti
pricing_as_of_time
.
Berikut kueri yang sama yang dikonfigurasi untuk menggunakan kolom pricing_as_of_time
:
SELECT sku.id, sku.description, list_price.* FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(pricing_as_of_time) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
Hasil kueri
Baris | id | deskripsi | pricing_unit | aggregation_info. aggregation_level |
aggregation_info. aggregation_interval |
tiered_rates. pricing_unit_quantity |
tiered_rates. start_usage_amount |
tiered_rates. usd_amount |
tiered_rates. account_currency_amount |
---|---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Permintaan | COUNT | AKUN | BULANAN | 1000000 | 0 | 0 | 0 |
1000000 | 2000000 | 0,4 | 0,4 |
Mendapatkan harga jual untuk SKU tertentu, dan menyertakan deskripsi layanan
Dua contoh di bagian ini menunjukkan kueri yang menampilkan
list_price
untuk setiap
tingkat harga
untuk SKU tertentu, serta menyertakan deskripsi SKU dan deskripsi
layanan.
- Contoh 1 menampilkan satu SKU per baris, dengan tingkat harga ditampilkan sebagai data bertingkat.
- Contoh 2 menunjukkan data tidak bertingkat untuk menampilkan satu baris per SKU per tingkat harga.
Contoh 1: Menampilkan data bertingkat
Contoh ini mengkueri SKU tunggal untuk menampilkan
data list_price
. SKU ini memiliki beberapa
tingkat harga.
Nilai kolom harga jual ditampilkan dalam masing-masing baris yang bertingkat pada
baris ID SKU.
SQL Standar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, list_price.* FROM project-ID.dataset.cloud_pricing_export WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
Hasil kueri:
Baris | sku_id | sku_description | service_id | service_description | aggregation_info. aggregation_level |
aggregation_info. aggregation_interval |
tiered_rates. pricing_unit_quantity |
tiered_rates. start_usage_amount |
tiered_rates. usd_amount |
tiered_rates. account_currency_amount |
---|---|---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Permintaan | 152E-C115-5142 | Cloud Run | AKUN | BULANAN | 1000000 | 0 | 0 | 0 |
1000000 | 2000000 | 0,4 | 0,4 |
Contoh 2: Menampilkan data tidak bertingkat yang digabungkan dengan tabel yang sama
Contoh ini mengkueri SKU tunggal untuk menampilkan
list price
. SKU memiliki beberapa
tingkat harga.
Kueri menunjukkan penggunaan operator
UNNEST
untuk
meratakan array tiered_rates
dan menggabungkan kolom dengan tabel yang sama, sehingga menghasilkan satu baris per tingkat
harga.
SQL Standar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, tier.* FROM `project-ID.dataset.cloud_pricing_export` as sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
Hasil kueri:
Baris | sku_id | sku_description | service_id | service_description | pricing_unit_quantity | start_usage_amount | usd_amount | account_currency_amount |
---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Permintaan | 152E-C115-5142 | Cloud Run | 1000000,0 | 0.0 | 0.0 | 0.0 |
2 | 2DA5-55D3-E679 | Permintaan | 152E-C115-5142 | Cloud Run | 1000000,0 | 2000000,0 | 0,4 | 0,4 |
Menggunakan taksonomi produk dan taksonomi geografis untuk membuat kueri SKU
- Taksonomi produk adalah daftar kategori produk yang berlaku untuk SKU, seperti Serverless, Cloud Run, atau VMs On Demand.
- Taksonomi geografis adalah metadata geografis yang berlaku untuk SKU, yang terdiri dari jenis dan nilai region.
Mendapatkan taksonomi produk SKU
Contoh ini menunjukkan kueri yang menampilkan daftar
product_taxonomy
untuk SKU yang ditentukan, dengan ID SKU = 2DA5-55D3-E679
(Cloud Run - Permintaan).
SQL Standar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, product_taxonomy FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
Hasil kueri:
Baris | sku_id | sku_description | service_id | service_description | product_taxonomy |
---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Permintaan | 152E-C115-5142 | Cloud Run | GCP |
Serverless | |||||
Cloud Run | |||||
Lainnya |
Mendapatkan semua SKU untuk taksonomi produk tertentu
Contoh ini menunjukkan kueri yang menampilkan semua SKU yang cocok dengan
product_taxonomy
yang ditentukan.
Dalam kueri ini, tetapkan Serverless sebagai nilai product taxonomy
.
SQL Standar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, product_taxonomy FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND "Serverless" in UNNEST(product_taxonomy) LIMIT 10 ;
Hasil kueri:
Baris | sku_id | sku_description | service_id | service_description | product_taxonomy |
---|---|---|---|---|---|
1 | 0160-BD7B-4C40 | Traffic Keluar Intra Region Jaringan Cloud Tasks | F3A6-D7B7-9BDA | Cloud Tasks | GCP |
Serverless | |||||
Cloud Tasks | |||||
Lainnya | |||||
2 | FE08-0A74-7AFD | Traffic Keluar GOOGLE-API Cloud Tasks | F3A6-D7B7-9BDA | Cloud Tasks | GCP |
Serverless | |||||
Cloud Tasks | |||||
Lainnya | |||||
3 | A81A-32A2-B46D | Penyimpanan Antrean Tugas Salt Lake City | F17B-412E-CB64 | App Engine | GCP |
Serverless | |||||
GAE | |||||
Lainnya | |||||
AntreanTugas |
Mendapatkan semua SKU untuk taksonomi geografis dan taksonomi produk tertentu
Contoh ini menunjukkan kueri yang menampilkan semua SKU yang cocok dengan
geo_taxonomy
dan region yang ditentukan
product_taxonomy
,
dengan region
= us-east4 danproduct_taxonomy
= VM Sesuai Permintaan.
SQL Standar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, geo_taxonomy, product_taxonomy FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND "VMs On Demand" in UNNEST(product_taxonomy) AND geo_taxonomy.type = "REGIONAL" AND "us-east4" in UNNEST (geo_taxonomy.regions) ;
Hasil kueri:
Baris | sku_id | sku_description | service_id | service_description | geo_taxonomy.type | geo_taxonomy.regions | product_taxonomy |
---|---|---|---|---|---|---|---|
1 | 9174-81EE-425B | Premium Tenancy Tunggal untuk Ram Instance Tenancy Tunggal yang berjalan di Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | GCP |
Compute | |||||||
GCE | |||||||
VM Sesuai Permintaan | |||||||
Memori: Per GB | |||||||
2 | C3B9-E891-85ED | Ram Instance Tenancy Tunggal yang berjalan di Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | GCP |
Compute | |||||||
GCE | |||||||
VM Sesuai Permintaan | |||||||
Memori: Per GB | |||||||
3 | 6E2A-DCD9-87ED | Ram Instance Bawaan N1 yang berjalan di Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | GCP |
Compute | |||||||
GCE | |||||||
VM Sesuai Permintaan | |||||||
Memori: Per GB |
Menggabungkan data harga dengan data biaya penggunaan mendetail
Kueri ini menunjukkan cara menggabungkan ekspor Data Harga dan Biaya, untuk melihat detail
informasi harga sesuai dengan biaya Anda. Anda dapat mengonfigurasi
kueri ini untuk mengambil data yang diekspor dari
data biaya penggunaan mendetail (sebagai Exports
), dan menggabungkan data biaya penggunaan dengan data
data harga yang diekspor
(sebagai Prices
).
Gunakan
nama tabel biaya penggunaan mendetail
untuk mengambil data Exports
:
gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
Gunakan
nama tabel harga
untuk data Prices
:
project-ID.dataset.cloud_pricing_export
WITH Exports AS ( SELECT * FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` ), Prices AS ( SELECT * FROM `project-ID.dataset.cloud_pricing_export` ) SELECT Exports.sku.description AS sku_description, Exports.cost, Exports.usage, FlattenedPrices.pricing_unit_description, FlattenedPrices.account_currency_amount, FlattenedPrices.account_currency_code, FROM Exports JOIN (SELECT * FROM Prices CROSS JOIN UNNEST(Prices.list_price.tiered_rates)) AS FlattenedPrices ON Exports.sku.id = FlattenedPrices.sku.id AND Exports.price.tier_start_amount = FlattenedPrices.start_usage_amount WHERE DATE(Exports.export_time) = '2023-06-30' AND DATE(FlattenedPrices.export_time) = '2023-06-30' AND cost > 0 LIMIT 1000
Misalnya, hasil kueri sebelumnya mungkin adalah:
sku_description | cost | penggunaan | pricing_unit_description | account_currency_amount | account_currency_code |
---|---|---|---|---|---|
Kapasitas PD Seimbang | 0,001345 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte-bulan | 0,1 | USD |
Kapasitas PD Seimbang | 0,001344 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte-bulan | 0,1 | USD |
Kapasitas PD Seimbang | 0,001346 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte-bulan | 0,1 | USD |
Topik terkait
Topik terkait data Penagihan Cloud yang diekspor
- Menyiapkan ekspor data Penagihan Cloud ke BigQuery.
- Memahami tabel data Penagihan Cloud di BigQuery
- Memvisualisasikan pembelanjaan dari waktu ke waktu dengan Looker Studio
Laporan biaya dan harga tersedia di konsol Google Cloud
- Melihat laporan Penagihan Cloud dan tren biaya Anda
- Melihat dan mendownload detail biaya invoice atau laporan mutasi
- Melihat dan mendownload harga layanan cloud Google
- Memahami penghematan dengan laporan perincian biaya
- Menganalisis efektivitas diskon abonemen
- Melihat histori biaya dan pembayaran