Menjalankan kueri
BigQuery memungkinkan Anda menjalankan kueri secara langsung (interaktif), dalam batch, atau terus-menerus, bergantung pada kasus penggunaan Anda. Untuk memvalidasi sintaksis SQL dan memperkirakan jumlah data yang diproses kueri agar dapat mengontrol biaya dengan lebih baik, Anda dapat melakukan uji coba.
Jenis kueri
Anda dapat membuat kueri data BigQuery menggunakan salah satu jenis tugas kueri berikut:
Tugas kueri interaktif. Secara default, BigQuery menjalankan kueri sebagai tugas kueri interaktif, yang dimaksudkan untuk mulai dieksekusi secepat mungkin.
Tugas kueri batch. Kueri batch memiliki prioritas lebih rendah daripada kueri interaktif. Saat project atau pemesanan menggunakan semua resource komputasi yang tersedia, kueri batch lebih mungkin dimasukkan ke dalam antrean dan tetap berada dalam antrean. Setelah kueri batch mulai berjalan, kueri batch akan berjalan sama seperti kueri interaktif. Untuk informasi selengkapnya, lihat antrean kueri.
Tugas kueri berkelanjutan. Dengan tugas ini, kueri berjalan terus-menerus, sehingga Anda dapat menganalisis data yang masuk di BigQuery secara real time, lalu menulis hasilnya ke tabel BigQuery, atau mengekspor hasilnya ke Bigtable atau Pub/Sub. Anda dapat menggunakan kemampuan ini untuk melakukan tugas yang mendesak, seperti membuat dan segera menindaklanjuti insight, menerapkan inferensi machine learning (ML) real-time, dan membangun pipeline data berbasis peristiwa.
Anda dapat menjalankan tugas kueri menggunakan metode berikut:
- Buat dan jalankan kueri di konsolGoogle Cloud .
- Jalankan perintah
bq querydi alat command line bq. - Secara terprogram panggil metode
jobs.queryataujobs.insertdi BigQuery REST API. - Menggunakan library klien BigQuery.
BigQuery menyimpan hasil kueri ke tabel sementara (default) atau tabel permanen. Saat menentukan tabel permanen sebagai tabel tujuan untuk hasil, Anda dapat memilih apakah akan menambahkan atau menimpa tabel yang sudah ada, atau membuat tabel baru dengan nama unik.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menjalankan tugas kueri, minta administrator untuk memberi Anda peran IAM berikut:
- Pengguna Tugas BigQuery (
roles/bigquery.jobUser) pada project. - Penampil Data BigQuery (
roles/bigquery.dataViewer) pada semua tabel dan tampilan yang dirujuk oleh kueri Anda. Untuk membuat kueri tampilan, Anda juga memerlukan peran ini di semua tabel dan tampilan yang mendasarinya. Jika menggunakan tampilan yang diotorisasi atau set data yang diotorisasi, Anda tidak memerlukan akses ke data sumber pokok.
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk menjalankan tugas kueri. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk menjalankan tugas kueri:
-
bigquery.jobs.createpada project tempat kueri dijalankan, terlepas dari lokasi penyimpanan data. -
bigquery.tables.getDatadi semua tabel dan tampilan yang dirujuk oleh kueri Anda. Untuk membuat kueri tampilan, Anda juga memerlukan izin ini pada semua tabel dan tampilan yang mendasarinya. Jika menggunakan tampilan yang diotorisasi atau set data yang diotorisasi, Anda tidak memerlukan akses ke data sumber pokok.
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Pemecahan masalah
Access Denied: Project [project_id]: User does not have bigquery.jobs.create
permission in project [project_id].
Error ini terjadi jika akun utama tidak memiliki izin untuk membuat tugas kueri dalam project.
Penyelesaian: Administrator harus memberi Anda izin bigquery.jobs.create
pada project yang Anda kueri. Izin ini diperlukan selain izin yang diperlukan untuk mengakses data yang dikueri.
Untuk mengetahui informasi selengkapnya tentang izin BigQuery, lihat Kontrol akses dengan IAM.
Menjalankan kueri interaktif
Untuk menjalankan kueri interaktif, pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Klik Kueri SQL.
Di editor kueri, masukkan kueri GoogleSQL yang valid.
Misalnya, buat kueri set data publik BigQuery
usa_namesuntuk menentukan nama yang paling umum di Amerika Serikat antara tahun 1910 dan 2013:SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;Atau, Anda dapat menggunakan panel Reference untuk membuat kueri baru.
Opsional: Untuk menampilkan saran kode secara otomatis saat Anda mengetik kueri, klik Tools > Parser-based auto-completion. Jika Anda tidak memerlukan saran pelengkapan otomatis, batalkan pilihan Parser-based auto-completion. Tindakan ini juga akan menonaktifkan saran isi otomatis nama project.
Opsional: Untuk memilih setelan kueri tambahan, klik Edit > Setelan kueri.
Klik Run.
Jika Anda tidak menentukan tabel tujuan, tugas kueri akan menulis output ke tabel sementara (cache).
Sekarang Anda dapat mempelajari hasil kueri di tab Results pada panel Query results.
Opsional: Untuk mengurutkan hasil kueri berdasarkan kolom, klik Buka menu pengurutan di samping nama kolom, lalu pilih tata urutan. Jika estimasi byte yang diproses untuk pengurutan lebih dari nol, jumlah byte akan ditampilkan di bagian atas menu.
Opsional: Untuk melihat visualisasi hasil kueri Anda, buka tab Visualization. Anda dapat memperbesar atau memperkecil diagram, mendownload diagram sebagai file PNG, atau mengalihkan visibilitas legenda.
Di panel Konfigurasi visualisasi, Anda dapat mengubah jenis visualisasi serta mengonfigurasi ukuran dan dimensi visualisasi. Kolom di panel ini diisi otomatis dengan konfigurasi awal yang disimpulkan dari skema tabel tujuan kueri. Konfigurasi dipertahankan di antara kueri berikut yang dijalankan di editor kueri yang sama.
Untuk visualisasi Garis, Batang, atau Sebar, dimensi yang didukung adalah jenis data
INT64,FLOAT64,NUMERIC,BIGNUMERIC,TIMESTAMP,DATE,DATETIME,TIME, danSTRING, sedangkan pengukuran yang didukung adalah jenis dataINT64,FLOAT64,NUMERIC, danBIGNUMERIC.Jika hasil kueri Anda menyertakan jenis
GEOGRAPHY, Peta adalah jenis visualisasi default, yang memungkinkan Anda memvisualisasikan hasil di peta interaktif.Opsional: Di tab JSON, Anda dapat menjelajahi hasil kueri dalam format JSON, dengan kunci sebagai nama kolom dan nilai sebagai hasil untuk kolom tersebut.
bq
-
Di konsol Google Cloud , aktifkan Cloud Shell.
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan prompt command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
Gunakan perintah
bq query. Pada contoh berikut, flag--use_legacy_sql=falsememungkinkan Anda menggunakan sintaksis GoogleSQL.bq query \ --use_legacy_sql=false \ 'QUERY'
Ganti QUERY dengan kueri GoogleSQL yang valid. Misalnya, buat kueri set data publik BigQuery
usa_namesuntuk menentukan nama yang paling umum di Amerika Serikat antara tahun 1910 dan 2013:bq query \ --use_legacy_sql=false \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;'Tugas kueri menulis output ke tabel sementara (cache).
Selain itu, Anda dapat menentukan tabel tujuan dan lokasi untuk hasil kueri. Untuk menulis hasilnya ke tabel yang sudah ada, sertakan flag yang sesuai untuk menambahkan (
--append_table=true) atau menimpa (--replace=true) tabel.bq query \ --location=LOCATION \ --destination_table=TABLE \ --use_legacy_sql=false \ 'QUERY'
Ganti kode berikut:
LOCATION: region atau multi-region untuk tabel tujuan—misalnya,
USDalam contoh ini, set data
usa_namesdisimpan di lokasi multi-region AS. Jika Anda menentukan tabel tujuan untuk kueri ini, set data yang berisi tabel tujuan juga harus berada di multi-region AS. Anda tidak dapat mengkueri set data di satu lokasi dan menulis hasilnya ke tabel di lokasi lain.Anda dapat menetapkan nilai default untuk lokasi menggunakan .bigqueryrc file.
TABLE: nama untuk tabel tujuan—misalnya,
myDataset.myTableJika tabel tujuan adalah tabel baru, BigQuery akan membuat tabel tersebut saat Anda menjalankan kueri. Namun, Anda harus menentukan set data yang sudah ada.
Jika tabel tidak ada dalam project Anda saat ini, tambahkan project IDGoogle Cloud menggunakan format
PROJECT_ID:DATASET.TABLE—misalnya,myProject:myDataset.myTable. Jika--destination_tabletidak ditentukan, tugas kueri akan dibuat yang menulis output ke tabel sementara.
Terraform
Gunakan
resource google_bigquery_job.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Contoh berikut menjalankan kueri. Anda dapat mengambil hasil kueri dengan melihat detail tugas:
Untuk menerapkan konfigurasi Terraform di project Google Cloud , selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf—misalnyamain.tf. Dalam tutorial ini, file ini disebut sebagaimain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tfyang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yespada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di konsol Google Cloud , buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
API
Untuk menjalankan kueri menggunakan API, sisipkan tugas baru
dan isi properti konfigurasi tugas query. Anda juga bisa menentukan lokasi di properti location di bagian jobReference di resource tugas.
Lakukan polling untuk hasil dengan memanggil
getQueryResults.
Polling hingga jobComplete sama dengan true. Periksa error dan peringatan dalam
daftar errors.
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery C# API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
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 mengetahui 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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Untuk menjalankan kueri dengan proxy, lihat Mengonfigurasi proxy.
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 mengetahui 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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Ruby API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Uji coba
Uji coba di BigQuery memberikan informasi berikut:
- perkiraan tagihan dalam mode on demand
- validasi kueri
- perkiraan byte yang diproses oleh kueri dalam mode kapasitas
Uji coba tidak menggunakan slot kueri, dan Anda tidak dikenai biaya untuk melakukan uji coba. Anda dapat menggunakan perkiraan yang ditampilkan oleh uji coba untuk menghitung biaya kueri di kalkulator harga.
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 mengetahui 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 mengetahui 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 mengetahui 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 mengetahui 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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Memecahkan masalah kueri
Untuk mengetahui informasi tentang cara menyelesaikan masalah saat Anda menjalankan kueri, lihat Memecahkan masalah kueri.
Menjalankan kueri batch
Untuk menjalankan kueri batch, pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Klik Kueri SQL.
Di editor kueri, masukkan kueri GoogleSQL yang valid.
Misalnya, buat kueri set data publik BigQuery
usa_namesuntuk menentukan nama yang paling umum di Amerika Serikat antara tahun 1910 dan 2013:SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;Klik Edit > Query settings.
Di bagian Resource management, pilih Batch.
Opsional: Sesuaikan setelan kueri Anda.
Klik Simpan.
Klik Run.
Jika Anda tidak menentukan tabel tujuan, tugas kueri akan menulis output ke tabel sementara (cache).
bq
-
Di konsol Google Cloud , aktifkan Cloud Shell.
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan prompt command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
Gunakan perintah
bq querydan tentukan flag--batch. Pada contoh berikut, flag--use_legacy_sql=falsememungkinkan Anda menggunakan sintaksis GoogleSQL.bq query \ --batch \ --use_legacy_sql=false \ 'QUERY'
Ganti QUERY dengan kueri GoogleSQL yang valid. Misalnya, buat kueri set data publik BigQuery
usa_namesuntuk menentukan nama yang paling umum di Amerika Serikat antara tahun 1910 dan 2013:bq query \ --batch \ --use_legacy_sql=false \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;'Tugas kueri menulis output ke tabel sementara (cache).
Selain itu, Anda dapat menentukan tabel tujuan dan lokasi untuk hasil kueri. Untuk menulis hasilnya ke tabel yang sudah ada, sertakan flag yang sesuai untuk menambahkan (
--append_table=true) atau menimpa (--replace=true) tabel.bq query \ --batch \ --location=LOCATION \ --destination_table=TABLE \ --use_legacy_sql=false \ 'QUERY'
Ganti kode berikut:
LOCATION: region atau multi-region untuk tabel tujuan—misalnya,
USDalam contoh ini, set data
usa_namesdisimpan di lokasi multi-region AS. Jika Anda menentukan tabel tujuan untuk kueri ini, set data yang berisi tabel tujuan juga harus berada di multi-region AS. Anda tidak dapat mengkueri set data di satu lokasi dan menulis hasilnya ke tabel di lokasi lain.Anda dapat menetapkan nilai default untuk lokasi menggunakan .bigqueryrc file.
TABLE: nama untuk tabel tujuan—misalnya,
myDataset.myTableJika tabel tujuan adalah tabel baru, BigQuery akan membuat tabel tersebut saat Anda menjalankan kueri. Namun, Anda harus menentukan set data yang sudah ada.
Jika tabel tidak ada dalam project Anda saat ini, tambahkan project IDGoogle Cloud menggunakan format
PROJECT_ID:DATASET.TABLE—misalnya,myProject:myDataset.myTable. Jika--destination_tabletidak ditentukan, tugas kueri akan dibuat yang menulis output ke tabel sementara.
API
Untuk menjalankan kueri menggunakan API, sisipkan tugas baru
dan isi properti konfigurasi tugas query. Anda juga bisa menentukan lokasi di properti location di bagian jobReference di resource tugas.
Saat Anda mengisi properti tugas kueri, sertakan properti configuration.query.priority dan tetapkan nilainya ke BATCH.
Lakukan polling untuk hasil dengan memanggil
getQueryResults.
Polling hingga jobComplete sama dengan true. Periksa error dan peringatan dalam
daftar errors.
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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Untuk menjalankan kueri batch, tetapkan prioritas kueri ke QueryJobConfiguration.Priority.BATCH saat membuat QueryJobConfiguration.
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 mengetahui 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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menjalankan kueri berkelanjutan
Menjalankan tugas kueri berkelanjutan memerlukan konfigurasi tambahan. Untuk mengetahui informasi selengkapnya, lihat Membuat kueri berkelanjutan.
Menggunakan panel Referensi
Di editor kueri, panel Reference secara dinamis menampilkan informasi yang peka konteks tentang tabel, snapshot, tampilan, dan tampilan terwujud. Panel ini memungkinkan Anda melihat pratinjau detail skema resource ini, atau membukanya di tab baru. Anda juga dapat menggunakan panel Reference untuk membuat kueri baru atau mengedit kueri yang ada dengan menyisipkan cuplikan kueri atau nama kolom.
Untuk membuat kueri baru menggunakan panel Reference, ikuti langkah-langkah berikut:
Di konsol Google Cloud , buka halaman BigQuery.
Klik Kueri SQL.
Klik quick_reference_all Reference.
Klik tabel atau tampilan terbaru atau berbintang. Anda juga dapat menggunakan kotak penelusuran untuk menemukan tabel dan tampilan.
Klik View actions, lalu klik Insert query snippet.

Opsional: Anda dapat melihat pratinjau detail skema tabel atau tampilan, atau membukanya di tab baru.
Sekarang Anda dapat mengedit kueri secara manual atau menyisipkan nama kolom langsung ke kueri. Untuk menyisipkan nama kolom, arahkan kursor dan klik tempat di editor kueri tempat Anda ingin menyisipkan nama kolom, lalu klik nama kolom di panel Reference.
Setelan kueri
Saat menjalankan kueri, Anda dapat menentukan setelan berikut:
Tabel tujuan untuk hasil kueri.
Prioritas tugas.
Apakah akan menggunakan hasil kueri yang di-cache.
Waktu tunggu tugas dalam milidetik.
Apakah akan menggunakan mode sesi.
Jenis enkripsi yang akan digunakan.
Jumlah byte maksimum yang ditagih untuk kueri.
Dialek SQL yang akan digunakan.
Lokasi tempat menjalankan kueri. Kueri harus berjalan di lokasi yang sama dengan tabel yang direferensikan dalam kueri.
Pemesanan untuk menjalankan kueri Anda.
Mode pembuatan tugas opsional
Mode pembuatan tugas opsional dapat meningkatkan latensi keseluruhan kueri yang berjalan
dalam durasi singkat, seperti kueri dari dasbor atau workload eksplorasi
data. Mode ini menjalankan kueri dan menampilkan hasil inline untuk pernyataan SELECT tanpa memerlukan penggunaan jobs.getQueryResults untuk mengambil hasil. Kueri yang menggunakan mode pembuatan tugas opsional tidak membuat tugas saat dijalankan, kecuali jika BigQuery menentukan bahwa pembuatan tugas diperlukan untuk menyelesaikan kueri.
Untuk mengaktifkan mode pembuatan tugas opsional, tetapkan kolom jobCreationMode dari instance QueryRequest ke JOB_CREATION_OPTIONAL dalam isi permintaan jobs.query.
Jika nilai kolom ini ditetapkan ke JOB_CREATION_OPTIONAL, BigQuery akan menentukan apakah kueri dapat menggunakan mode pembuatan tugas opsional. Jika demikian, BigQuery akan menjalankan kueri dan menampilkan semua hasil di kolom rows respons. Karena tugas tidak dibuat untuk kueri ini, BigQuery tidak menampilkan jobReference dalam isi respons. Sebagai gantinya, fungsi ini menampilkan kolom queryId, yang dapat Anda gunakan untuk mendapatkan insight tentang kueri menggunakan tampilan INFORMATION_SCHEMA.JOBS. Karena tidak ada tugas yang dibuat, tidak ada jobReference yang dapat diteruskan ke API jobs.get dan jobs.getQueryResults untuk mencari kueri ini.
Jika BigQuery menentukan bahwa tugas diperlukan untuk menyelesaikan kueri, jobReference akan ditampilkan. Anda dapat memeriksa kolom job_creation_reason
di tampilan
INFORMATION_SCHEMA.JOBS untuk menentukan
alasan tugas dibuat untuk kueri. Dalam hal ini, Anda harus menggunakan
jobs.getQueryResults
untuk mengambil hasil saat kueri selesai.
Saat Anda menggunakan nilai JOB_CREATION_OPTIONAL, kolom jobReference mungkin tidak ada dalam respons. Periksa apakah kolom tersebut ada sebelum mengaksesnya.
Jika JOB_CREATION_OPTIONAL ditentukan untuk kueri multi-pernyataan (skrip), BigQuery dapat mengoptimalkan proses eksekusi. Sebagai bagian dari pengoptimalan ini, BigQuery mungkin menentukan bahwa BigQuery dapat menyelesaikan skrip dengan membuat resource tugas yang lebih sedikit daripada jumlah pernyataan individual, bahkan berpotensi mengeksekusi seluruh skrip tanpa membuat tugas sama sekali.
Pengoptimalan ini bergantung pada penilaian BigQuery terhadap skrip, dan pengoptimalan mungkin tidak diterapkan dalam setiap kasus. Pengoptimalan sepenuhnya
diotomatiskan oleh sistem. Tidak diperlukan kontrol atau tindakan pengguna.
Untuk menjalankan kueri menggunakan mode pembuatan tugas opsional, pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Klik Kueri SQL.
Di editor kueri, masukkan kueri GoogleSQL yang valid.
Misalnya, buat kueri set data publik BigQuery
usa_namesuntuk menentukan nama yang paling umum di Amerika Serikat antara tahun 1910 dan 2013:SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;Klik Edit > Query mode > Optional job creation. Untuk mengonfirmasi pilihan ini, klik Konfirmasi.
Klik Run.
bq
-
Di konsol Google Cloud , aktifkan Cloud Shell.
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan prompt command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
Gunakan perintah
bq querydan tentukan flag--job_creation_mode=JOB_CREATION_OPTIONAL. Pada contoh berikut, flag--use_legacy_sql=falsememungkinkan Anda menggunakan sintaksis GoogleSQL.bq query \ --rpc=true \ --use_legacy_sql=false \ --job_creation_mode=JOB_CREATION_OPTIONAL \ --location=LOCATION \ 'QUERY'
Ganti QUERY dengan kueri GoogleSQL yang valid, dan ganti LOCATION dengan region yang valid tempat set data berada. Misalnya, buat kueri set data publik BigQuery
usa_namesuntuk menentukan nama yang paling umum di Amerika Serikat antara tahun 1910 dan 2013:bq query \ --rpc=true \ --use_legacy_sql=false \ --job_creation_mode=JOB_CREATION_OPTIONAL \ --location=us \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;'Tugas kueri menampilkan output inline dalam respons.
API
Untuk menjalankan kueri dalam mode pembuatan tugas opsional menggunakan API, jalankan kueri secara sinkron
dan isi properti QueryRequest. Sertakan properti jobCreationMode dan tetapkan nilainya ke JOB_CREATION_OPTIONAL.
Periksa responsnya. Jika jobComplete sama dengan true dan jobReference kosong, baca hasilnya dari kolom rows. Anda juga bisa mendapatkan queryId dari respons.
Jika jobReference ada, Anda dapat memeriksa jobCreationReason untuk mengetahui alasan tugas dibuat oleh BigQuery. Lakukan polling untuk hasil dengan memanggil
getQueryResults.
Polling hingga jobComplete sama dengan true. Periksa error dan peringatan dalam
daftar errors.
Java
Versi yang tersedia: 2.51.0 dan yang lebih baru
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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Untuk menjalankan kueri dengan proxy, lihat Mengonfigurasi proxy.
Python
Versi yang tersedia: 3.34.0 dan yang lebih baru
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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node
Versi yang tersedia: 8.1.0 dan yang lebih baru
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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Go
Versi yang tersedia: 1.69.0 dan yang lebih baru
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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Driver JDBC
Versi yang tersedia: JDBC v1.6.1 dan yang lebih baru
Memerlukan setelan JobCreationMode=2 dalam string koneksi.
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;JobCreationMode=2;Location=US;
Driver ODBC
Versi yang tersedia: ODBC v3.0.7.1016 dan yang lebih baru
Memerlukan setelan JobCreationMode=2 di file .ini.
[ODBC Data Sources] Sample DSN=Simba Google BigQuery ODBC Connector 64-bit [Sample DSN] JobCreationMode=2
Kueri global
Kueri dijalankan di lokasi data yang dirujuk. Namun, jika kueri mereferensikan data yang disimpan di lebih dari satu lokasi, kueri global akan dijalankan. Saat menjalankan kueri global, BigQuery dapat mengumpulkan semua data yang diperlukan dari berbagai lokasi di satu tempat, menjalankan kueri, dan menampilkan hasilnya. Karena kueri global memerlukan transfer data antar-lokasi, kueri tersebut memerlukan izin tambahan dan dapat menimbulkan biaya tambahan.
Untuk mengetahui informasi selengkapnya tentang kueri global, lihat Kueri global.
Kuota
Untuk mengetahui informasi tentang kuota terkait kueri batch dan interaktif, baca Tugas kueri.
Untuk memecahkan masalah error kuota terkait kueri, lihat halaman Pemecahan Masalah BigQuery. Error kuota berikut dan informasi pemecahan masalahnya terkait langsung dengan kueri:
Memantau kueri
Anda bisa mendapatkan informasi tentang kueri saat kueri tersebut dieksekusi menggunakan
penjelajah tugas atau dengan membuat kueri
tampilan INFORMATION_SCHEMA.JOBS_BY_PROJECT.
Runtime tingkat lanjut
Runtime BigQuery tingkat lanjut adalah serangkaian peningkatan performa yang dirancang untuk mempercepat workload analisis secara otomatis tanpa memerlukan tindakan pengguna atau perubahan kode. Kueri memanfaatkan pengoptimalan runtime tingkat lanjut secara otomatis saat vektorisasi yang ditingkatkan atau pengoptimalan kueri singkat tersedia.
Vektorisasi yang ditingkatkan
Eksekusi vektor adalah model pemrosesan kueri yang beroperasi pada kolom data dalam blok yang selaras dengan ukuran cache CPU dan menggunakan petunjuk single instruction, multiple data (SIMD). Vektorisasi yang ditingkatkan memperluas eksekusi kueri vektor di BigQuery ke aspek pemrosesan kueri berikut:
- Dengan memanfaatkan encoding data khusus dalam format penyimpanan Capacitor, operasi evaluasi filter dapat dijalankan pada data yang dienkode.
- Encoding khusus disebarkan melalui rencana kueri, sehingga lebih banyak data dapat diproses saat masih dienkode.
- Dengan menerapkan pelipatan ekspresi untuk mengevaluasi fungsi deterministik dan ekspresi konstan, BigQuery dapat menyederhanakan predikat kompleks menjadi nilai konstan.
Pengoptimalan kueri singkat
BigQuery biasanya menjalankan kueri di lingkungan terdistribusi menggunakan lapisan perantara shuffle. Pengoptimalan kueri singkat secara dinamis mengidentifikasi kueri yang dapat dijalankan sebagai satu tahap, sehingga mengurangi latensi dan konsumsi slot. Encoding khusus dapat digunakan secara lebih efektif saat kueri dijalankan dalam satu tahap. Pengoptimalan ini paling efektif jika digunakan dengan mode pembuatan tugas opsional, yang meminimalkan latensi startup tugas, pemeliharaan, dan pengambilan hasil.
Kelayakan untuk pengoptimalan kueri singkat bersifat dinamis dan dipengaruhi oleh faktor-faktor berikut:
- Perkiraan ukuran pemindaian data.
- Jumlah pemindahan data yang diperlukan.
- Selektivitas filter kueri.
- Jenis dan tata letak fisik data dalam penyimpanan.
- Struktur kueri secara keseluruhan.
- Statistik historis dari eksekusi kueri sebelumnya.
Memperkirakan dampak runtime tingkat lanjut
Untuk memperkirakan dampak runtime tingkat lanjut, Anda dapat menggunakan kueri SQL berikut untuk mengidentifikasi kueri project dengan perkiraan peningkatan waktu eksekusi terbesar:
WITH
jobs AS (
SELECT
*,
query_info.query_hashes.normalized_literals AS query_hash,
TIMESTAMP_DIFF(end_time, start_time, MILLISECOND) AS elapsed_ms,
EXISTS(
SELECT 1
FROM UNNEST(JSON_QUERY_ARRAY(query_info.optimization_details.optimizations)) AS o
WHERE JSON_VALUE(o, '$.enhanced_vectorization') = 'applied'
) AS has_advanced_runtime
FROM region-LOCATION.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE EXTRACT(DATE FROM creation_time) > DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
),
most_recent_jobs_without_advanced_runtime AS (
SELECT *
FROM jobs
WHERE NOT has_advanced_runtime
QUALIFY ROW_NUMBER() OVER (PARTITION BY query_hash ORDER BY end_time DESC) = 1
)
SELECT
job.job_id,
100 * SAFE_DIVIDE(
original_job.elapsed_ms - job.elapsed_ms,
original_job.elapsed_ms) AS percent_execution_time_saved,
job.elapsed_ms AS new_elapsed_ms,
original_job.elapsed_ms AS original_elapsed_ms,
FROM jobs AS job
INNER JOIN most_recent_jobs_without_advanced_runtime AS original_job
USING (query_hash)
WHERE
job.has_advanced_runtime
AND original_job.end_time < job.start_time
ORDER BY percent_execution_time_saved DESC
LIMIT 10;
Ganti kode berikut:
LOCATION: lokasi tempat performa tugas harus diukur
Jika runtime tingkat lanjut diterapkan, hasil kueri ini mungkin mirip dengan berikut ini:
/*--------------+----------------------------+----------------+---------------------*
| job_id | percent_elapsed_time_saved | new_elapsed_ms | original_elapsed_ms |
+--------------+----------------------------+----------------+---------------------+
| sample_job1 | 45.38834951456311 | 225 | 412 |
| sample_job2 | 45.19480519480519 | 211 | 385 |
| sample_job3 | 33.246753246753244 | 257 | 385 |
| sample_job4 | 29.28802588996764 | 1311 | 1854 |
| sample_job5 | 28.18181818181818 | 1027 | 1430 |
| sample_job6 | 25.804195804195807 | 1061 | 1430 |
| sample_job7 | 25.734265734265733 | 1062 | 1430 |
| sample_job8 | 25.454545454545453 | 1066 | 1430 |
| sample_job9 | 25.384615384615383 | 1067 | 1430 |
| sample_job10 | 25.034965034965033 | 1072 | 1430 |
*--------------+----------------------------+----------------+---------------------*/
Hasil kueri ini hanyalah perkiraan dampak runtime tingkat lanjut. Banyak faktor yang dapat memengaruhi performa kueri, termasuk, tetapi tidak terbatas pada ketersediaan slot, perubahan data dari waktu ke waktu, definisi tampilan atau UDF, dan perbedaan nilai parameter kueri.
Jika hasil kueri ini kosong, berarti tidak ada tugas yang menggunakan runtime lanjutan, atau semua tugas telah dioptimalkan lebih dari 30 hari yang lalu.
Kueri ini dapat diterapkan ke metrik performa kueri lainnya seperti
total_slot_ms dan total_bytes_billed. Untuk mengetahui informasi selengkapnya, lihat skema untuk INFORMATION_SCHEMA.JOBS_BY_PROJECT.
Langkah berikutnya
- Pelajari cara mengelola tugas kueri.
- Pelajari cara melihat histori kueri.
- Pelajari cara menyimpan dan membagikan kueri.
- Pelajari antrean kueri.
- Pelajari cara menulis hasil kueri.