Memperkirakan dan mengontrol biaya
Halaman ini menjelaskan cara memperkirakan biaya dan mencantumkan praktik terbaik untuk mengontrol biaya di BigQuery. BigQuery menawarkan dua jenis model harga, yaitu harga sesuai permintaan dan berbasis kapasitas. Untuk mengetahui informasi tentang harga, lihat Harga BigQuery.
Dengan BigQuery, Anda dapat memperkirakan biaya menjalankan kueri, menghitung byte yang diproses oleh berbagai kueri, dan mendapatkan estimasi biaya bulanan berdasarkan proyeksi penggunaan. Untuk mengontrol biaya, Anda juga harus mengikuti praktik terbaik guna mengoptimalkan komputasi kueri dan penyimpanan BigQuery. Untuk praktik terbaik khusus biaya, lihat Mengontrol biaya kueri.
Untuk memantau biaya kueri dan penggunaan BigQuery, analisis log audit BigQuery.
Memperkirakan biaya kueri
BigQuery menyediakan berbagai metode untuk memperkirakan biaya:
- Gunakan opsi uji coba kueri untuk memperkirakan biaya sebelum menjalankan kueri menggunakan model harga on demand.
- Hitung jumlah byte yang diproses oleh berbagai jenis kueri.
- Dapatkan biaya bulanan berdasarkan proyeksi penggunaan dengan menggunakan Kalkulator Harga Google Cloud.
Penghitungan ukuran kueri sesuai permintaan
Untuk menghitung jumlah byte yang diproses oleh berbagai jenis kueri menggunakan model penagihan sesuai permintaan, lihat bagian berikut:
Membuat kueri format berdasarkan kolom di Cloud Storage
Jika data eksternal Anda disimpan di ORC atau Parquet, jumlah byte yang dikenai biaya terbatas pada kolom yang dibaca BigQuery. Karena jenis data dari sumber data eksternal dikonversi ke jenis data BigQuery berdasarkan kueri, jumlah byte yang dibaca dihitung berdasarkan ukuran jenis data BigQuery. Untuk informasi tentang konversi jenis data, lihat halaman berikut:
Menggunakan Kalkulator Harga Google Cloud
Kalkulator Harga Google Cloud dapat membantu Anda membuat estimasi biaya bulanan secara keseluruhan untuk BigQuery berdasarkan proyeksi penggunaan.
Sesuai permintaan
Untuk memperkirakan biaya di Kalkulator Harga Google Cloud saat menggunakan model harga sesuai permintaan, ikuti langkah-langkah berikut:
- Buka Kalkulator Harga Google Cloud.
- Klik BigQuery.
- Klik tab Sesuai Permintaan.
- Untuk Harga Penyimpanan, masukkan estimasi ukuran tabel di kolom penyimpanan. Anda hanya perlu memperkirakan penyimpanan fisik atau penyimpanan logis, bergantung pada model penagihan penyimpanan set data.
- Untuk Harga Kueri, masukkan estimasi byte yang dibaca dari uji coba atau validator kueri.
- Klik Tambahkan ke Estimasi.
- Estimasi akan muncul di sebelah kanan. Perhatikan bahwa Anda dapat menyimpan atau mengirim estimasi melalui email.
Untuk informasi selengkapnya, lihat harga sesuai permintaan.
Edisi
Untuk memperkirakan biaya di Kalkulator Harga Google Cloud saat menggunakan model harga berbasis kapasitas dengan edisi BigQuery, ikuti langkah-langkah berikut:
- Buka Kalkulator Harga Google Cloud.
- Klik BigQuery.
- Klik tab Edisi.
- Pilih lokasi tempat slot digunakan.
- Pilih Edisi Anda.
- Pilih Slot maksimum, Slot dasar pengukuran, Komitmen opsional, dan Estimasi penggunaan penskalaan otomatis.
- Pilih lokasi tempat data disimpan.
- Masukkan estimasi penggunaan penyimpanan untuk Active storage, Long-term storage, Streaming insert, dan Streaming read. Anda hanya perlu memperkirakan penyimpanan fisik atau penyimpanan logis, bergantung pada model penagihan penyimpanan set data.
- Klik Tambahkan ke Estimasi.
Untuk informasi selengkapnya, lihat harga berdasarkan kapasitas.
Mengontrol biaya kueri
Untuk mengoptimalkan biaya kueri, pastikan Anda memiliki penyimpanan yang dioptimalkan dan komputasi kueri. Untuk metode tambahan guna mengontrol biaya kueri, lihat bagian berikut:
Memeriksa biaya kueri sebelum menjalankannya
Praktik terbaik: Sebelum menjalankan kueri, lihat pratinjau kueri untuk memperkirakan biaya.
Kueri ditagih sesuai jumlah byte yang dibaca. Untuk memperkirakan biaya sebelum menjalankan kueri:
- Gunakan validator kueri di konsol Google Cloud.
- Gunakan Kalkulator Harga Google Cloud.
- Jalankan uji coba untuk kueri.
Menggunakan validator kueri
Saat Anda memasukkan kueri di konsol Google Cloud, validator kueri akan memverifikasi sintaksis kueri dan memberikan estimasi jumlah byte yang dibaca. Anda dapat menggunakan estimasi ini untuk menghitung biaya kueri di kalkulator harga.
Jika kueri Anda tidak valid, validator kueri akan menampilkan pesan error. Contoh:
Not found: Table myProject:myDataset.myTable was not found in location US
Jika kueri Anda valid, validator kueri akan memberikan estimasi jumlah byte yang diperlukan untuk memproses kueri. Contoh:
This query will process 623.1 KiB when run.
Melakukan uji coba
Untuk melakukan uji coba, lakukan hal berikut:
Konsol
Buka halaman BigQuery.
Masukkan kueri Anda di editor kueri.
Jika kueri valid, tanda centang akan muncul secara otomatis bersama dengan jumlah data yang akan diproses oleh kueri. Jika kueri tidak valid, tanda seru akan muncul bersama dengan pesan error.
bq
Masukkan kueri seperti berikut menggunakan flag --dry_run
.
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
Untuk kueri yang valid, perintah tersebut menghasilkan respons berikut:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
Untuk melakukan uji coba menggunakan API, kirim tugas kueri dengan
dryRun
ditetapkan ke true
pada
jenis
JobConfiguration.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery PHP API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Tetapkan properti QueryJobConfig.dry_run ke True
.
Client.query() selalu menampilkan QueryJob yang telah selesai saat diberi konfigurasi kueri uji coba.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghindari menjalankan kueri untuk menjelajahi data tabel
Praktik terbaik: Jangan menjalankan kueri untuk menjelajahi atau melihat pratinjau data tabel.
Jika ingin bereksperimen atau mengeksplorasi data, Anda dapat menggunakan opsi pratinjau tabel untuk melihat data secara gratis dan tanpa memengaruhi kuota.
BigQuery mendukung opsi pratinjau data berikut:
- Di konsol Google Cloud, pada halaman detail tabel, klik tab Pratinjau untuk mengambil sampel data.
- Di alat command line bq, gunakan perintah
bq head
dan tentukan jumlah baris yang akan dilihat pratinjaunya. - Di API, gunakan
tabledata.list
untuk mengambil data tabel dari kumpulan baris yang ditentukan. - Hindari penggunaan
LIMIT
dalam tabel yang tidak dikelompokkan. Untuk tabel yang tidak dikelompokkan, klausaLIMIT
tidak akan mengurangi biaya komputasi.
Membatasi jumlah byte yang ditagih
Praktik terbaik: Gunakan setelan penagihan byte maksimum untuk membatasi biaya kueri.
Anda dapat membatasi jumlah byte yang ditagih untuk kueri menggunakan setelan byte maksimum yang ditagih. Jika Anda menetapkan byte maksimum yang ditagih, jumlah byte yang dibaca kueri akan diperkirakan sebelum eksekusi kueri. Jika jumlah perkiraan byte melebihi batas, kueri akan dibatalkan tanpa penarikan biaya.
Untuk tabel yang dikelompokkan, estimasi jumlah byte yang ditagih untuk kueri adalah batas atas, dan dapat lebih tinggi dari jumlah byte sebenarnya yang ditagih setelah menjalankan kueri. Jadi dalam beberapa kasus, jika Anda menetapkan byte maksimum yang ditagih, kueri pada tabel yang dikelompokkan bisa gagal, meskipun byte sebenarnya yang ditagih tidak akan melebihi setelan byte maksimum yang ditagih.
Jika kueri gagal karena setelan byte maksimum yang ditagih, error yang serupa dengan yang berikut akan ditampilkan:
Error: Query exceeded limit for bytes billed: 1000000. 10485760 or higher
required.
Untuk menetapkan byte maksimum yang ditagih:
Konsol
- Di Editor kueri, klik Lainnya > Setelan kueri > Opsi lanjutan.
- Di kolom Byte maksimum yang ditagih, masukkan bilangan bulat.
- Klik Simpan.
bq
Gunakan perintah bq query
dengan flag --maximum_bytes_billed
.
bq query --maximum_bytes_billed=1000000 \ --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare'
API
Tetapkan properti maximumBytesBilled
di JobConfigurationQuery
atau
QueryRequest
.
Menghindari penggunaan LIMIT
dalam tabel yang tidak dikelompokkan
Praktik terbaik: Untuk tabel yang tidak dikelompokkan, jangan gunakan klausa LIMIT
sebagai
metode kontrol biaya.
Untuk tabel yang tidak dikelompokkan, menerapkan klausa LIMIT
ke kueri tidak akan memengaruhi
jumlah data yang dibaca. Anda dikenai biaya untuk membaca semua byte di
seluruh tabel seperti yang ditunjukkan oleh kueri, meskipun kueri hanya menampilkan
subset. Dengan tabel yang dikelompokkan, klausa LIMIT
dapat mengurangi jumlah byte
yang dipindai, karena pemindaian akan berhenti saat blok yang dipindai sudah mencukupi untuk mendapatkan
hasil. Anda hanya dikenai biaya untuk byte yang dipindai.
Melihat biaya menggunakan dasbor dan membuat kueri log audit Anda
Praktik terbaik: Buat dasbor untuk melihat data penagihan, sehingga Anda dapat melakukan penyesuaian pada penggunaan BigQuery. Pertimbangkan juga untuk menampilkan log audit secara bertahap ke BigQuery agar Anda dapat menganalisis pola penggunaan.
Anda dapat mengekspor data penagihan ke BigQuery dan memvisualisasikannya dalam alat seperti Looker Studio. Untuk tutorial tentang cara membuat dasbor penagihan, lihat Memvisualisasikan penagihan Google Cloud menggunakan BigQuery dan Looker Studio.
Anda juga dapat menampilkan log audit secara bertahap ke BigQuery dan menganalisis log untuk menemukan pola penggunaan, seperti biaya kueri berdasarkan pengguna.
Merealisasikan hasil kueri dalam tahapan
Praktik terbaik: Jika memungkinkan, realisasikan hasil kueri Anda secara bertahap.
Jika Anda membuat kueri multi-tahap yang besar, setiap kali Anda menjalankannya, BigQuery akan membaca semua data yang diperlukan oleh kueri tersebut. Anda akan ditagih untuk semua data yang dibaca setiap kali kueri dijalankan.
Sebagai gantinya, bagi kueri Anda ke dalam beberapa tahapan dengan setiap tahap merealisasikan hasil kueri dengan menuliskannya ke tabel tujuan. Membuat kueri tabel tujuan yang lebih kecil akan mengurangi jumlah data yang dibaca dan menurunkan biaya. Biaya penyimpanan hasil yang direalisasikan jauh lebih murah daripada biaya pemrosesan data dalam jumlah besar.
Menggunakan masa berlaku tabel untuk tabel tujuan
Praktik terbaik: Jika Anda menulis hasil kueri yang besar ke tabel tujuan, gunakan waktu habis masa berlaku tabel default untuk menghapus data saat tidak diperlukan lagi.
Menyimpan kumpulan hasil yang besar dalam penyimpanan BigQuery memerlukan biaya. Jika Anda tidak memerlukan akses permanen ke hasil, gunakan masa berlaku tabel default untuk menghapus data Anda secara otomatis.
Untuk informasi selengkapnya, lihat harga penyimpanan.
Langkah berikutnya
- Pelajari tentang harga BigQuery.
- Pelajari cara mengoptimalkan kueri.
- Pelajari cara mengoptimalkan penyimpanan.
Untuk mempelajari tentang penagihan, pemberitahuan, dan memvisualisasikan data, lihat topik berikut: