Contoh kueri untuk ekspor data Penagihan Cloud

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

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.

Data biaya penggunaan standar Data biaya penggunaan mendetail Data harga
Contoh kueri biaya penggunaan standar Contoh kueri biaya penggunaan mendetail Contoh kueri data harga

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