Contoh kueri untuk ekspor data Penagihan Cloud

Halaman 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, baca ringkasan dan batasan.

Menentukan nama tabel yang akan digunakan dalam kueri Anda

Dalam contoh ini, untuk membuat kueri data Penagihan Cloud di BigQuery, Anda harus menentukan nama tabel di klausa FROM. Nama tabel ditentukan menggunakan tiga nilai: project.dataset.BQ_table_name.

Contoh kueri berdasarkan jenis data Penagihan Cloud

Halaman 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 dapat digunakan dengan data biaya penggunaan terperinci yang diekspor ke BigQuery, meskipun tidak ditulis untuk mengambil informasi tingkat resource yang disediakan bersama opsi ekspor biaya penggunaan yang terperinci.

Nilai umum yang digunakan dalam contoh kueri biaya standar

Contoh kueri di bagian ini menggunakan nilai berikut untuk Nama tabel: project.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.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.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 2 aplikasi (grapefruit-squeezer dan chocolate-masher).
  • Untuk setiap aplikasi, Anda memiliki 2 lingkungan (dev dan prod).
  • Lingkungan pengembangan memiliki 1 instance kecil per aplikasi.
  • Lingkungan produksi memiliki 1 instance kecil di Amerika dan 1 instance kecil di Asia.
  • Setiap instance diberi label dengan aplikasi dan lingkungan.
  • Anda memiliki 1 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.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 yang cepat dan mudah untuk mengelompokkan biaya berdasarkan setiap kombinasi label.

SQL Standar

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.
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.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;
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.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;
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 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.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.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.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.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.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.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 `ivory-vim-309221.billing_export_dataset.gcp_billing_export_resource_v1_018ADD_3CEBBB_A4DF22`, 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.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.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.
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

Contoh kueri biaya penggunaan mendetail

Bagian ini memberikan contoh cara membuat kueri data biaya penggunaan mendetail Penagihan Cloud yang diekspor ke BigQuery.

Skema biaya penggunaan mendetail mencakup semua kolom dari skema biaya penggunaan standar, maka contoh kueri yang diberikan untuk data standar yang diekspor ke BigQuery juga berfungsi dengan data mendetail yang diekspor. Perhatikan bahwa 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.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.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 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.dataset.gcp_billing_export_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.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.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.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.dataset.cloud_pricing_export
  • ID SKU: 2DA5-55D3-E679 (Cloud Run - Permintaan)

Mendapatkan harga jual untuk SKU tertentu

Contoh ini menunjukkan kueri sederhana yang menampilkan list_price untuk setiap tingkat harga untuk SKU tertentu.

SQL Standar

SELECT sku.id,  sku.description, list_price.*
FROM `project.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.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 my-billing-admin-project.my_billing_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 `my-billing-admin-project.my_billing_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 VM 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.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, kita menentukan 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.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
        TaskQueue

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.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 terperinci untuk mengambil data Exports: gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>

Gunakan nama tabel harga untuk data Prices: project.dataset.cloud_pricing_export

WITH
  Exports AS (
    SELECT *
    FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
  ),
  Prices AS (
    SELECT *
    FROM `project.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

Laporan biaya dan harga tersedia di konsol Google Cloud