Membaca data dengan BigQuery API menggunakan penomoran halaman
Dokumen ini menjelaskan cara membaca data tabel dan hasil kueri dengan BigQuery API menggunakan penomoran halaman.
Menelusuri hasil menggunakan API
Semua metode *collection*.list
menampilkan hasil yang diberi nomor halaman dalam keadaan tertentu. Properti maxResults
membatasi jumlah hasil per halaman.
Metode | Kriteria penomoran halaman | Nilai maxResults default |
Nilai maxResults maksimum |
Nilai maxFieldValues maksimum |
---|---|---|---|---|
tabledata.list |
Menampilkan hasil yang diberi nomor halaman jika ukuran respons melebihi
10 MB1 data atau lebih dari maxResults
baris. |
Tak terbatas | Tidak terbatas | Tak terbatas |
Semua metode *collection*.list lainnya |
Menampilkan hasil yang diberi nomor halaman jika respons memiliki lebih dari
maxResults baris dan juga kurang dari batas maksimum. |
10.000 | Tak terbatas | 300.000 |
Jika hasilnya lebih besar dari batas byte atau kolom, hasilnya
akan dipangkas agar sesuai dengan batas. Jika satu baris lebih besar dari batas byte atau kolom,
tabledata.list
dapat menampilkan hingga 100 MB data1,
yang sesuai dengan batas ukuran baris maksimum untuk kueri hasil pengujian tersebut.
Tidak ada ukuran minimum per halaman, dan beberapa halaman mungkin menampilkan lebih banyak baris daripada yang lain.
1Ukuran baris merupakan perkiraan, karena ukurannya didasarkan pada representasi internal dari data baris. Batas ukuran baris maksimum diterapkan selama tahap tertentu dari eksekusi tugas kueri.
jobs.getQueryResults
dapat menampilkan 20 MB data kecuali jika secara eksplisit
diminta lebih banyak melalui dukungan.
Halaman adalah subbagian dari jumlah total baris. Jika hasil Anda lebih dari satu halaman data, data hasil tersebut akan memiliki properti pageToken
. Untuk mengambil halaman hasil berikutnya, lakukan panggilan list
lain dan sertakan nilai token sebagai parameter URL bernama pageToken
.
Metode tabledata.list
, yang digunakan untuk menelusuri halaman data tabel, menggunakan nilai offset baris atau token halaman. Lihat Menjelajahi data tabel
untuk mengetahui informasinya.
Melakukan iterasi melalui hasil library klien
Library klien cloud menangani detail level rendah penomoran halaman API dan memberikan pengalaman yang lebih mirip iterator sehingga menyederhanakan interaksi dengan elemen individual dalam respons halaman.
Contoh berikut menunjukkan penomoran halaman melalui data tabel BigQuery.
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 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.
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.
Library Klien Cloud untuk Go akan melakukan penomoran halaman secara otomatis secara default, sehingga Anda tidak perlu menerapkan penomoran halaman sendiri, misalnya:
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.
Library Klien Cloud untuk Node.js akan diberi nomor halaman secara otomatis secara default, sehingga Anda tidak perlu menerapkan penomoran halaman sendiri, misalnya:
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.
Penomoran halaman terjadi secara otomatis di Library Klien Cloud untuk PHP
menggunakan fungsi generator rows
, yang mengambil halaman hasil berikutnya
selama iterasi.
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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Library Klien Cloud untuk Python akan melakukan penomoran halaman secara otomatis secara default, sehingga Anda tidak perlu menerapkan penomoran halaman sendiri, misalnya:
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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Penomoran halaman dilakukan secara otomatis di Library Klien Cloud untuk Ruby
menggunakan Table#data
dan Data#next
.
Minta halaman arbitrer dan hindari panggilan daftar yang berlebihan
Jika Anda memundurkan halaman atau melompat ke halaman arbitrer menggunakan
nilai pageToken
yang di-cache, data di halaman Anda mungkin telah
berubah sejak terakhir dilihat, tetapi tidak ada indikasi yang jelas bahwa
datanya mungkin telah berubah. Untuk mengurangi hal ini, Anda dapat menggunakan properti etag
.
Setiap metode collection.list
(kecuali untuk Tabledata) menampilkan properti etag
dalam hasil. Properti ini adalah hash hasil halaman yang dapat digunakan untuk memverifikasi apakah halaman telah berubah sejak permintaan terakhir. Ketika Anda membuat permintaan ke BigQuery berisi nilai ETag, BigQuery akan membandingkan nilai ETag dengan nilai ETag yang ditampilkan oleh API dan merespons berdasarkan apakah nilai ETag-nya cocok atau tidak. Anda dapat menggunakan ETag untuk menghindari panggilan daftar yang berlebihan seperti berikut ini:
Untuk menampilkan nilai daftar jika nilainya telah berubah.
Jika Anda hanya ingin menampilkan halaman yang berisi nilai daftar jika nilainya telah berubah, Anda dapat membuat panggilan daftar dengan ETag yang sebelumnya disimpan menggunakanHeader HTTP "if-none-match". Jika ETag yang Anda berikan tidak sesuai dengan ETag di server, BigQuery akan menampilkan halaman nilai daftar baru. Jika ETag sesuai, BigQuery akan menampilkan kode status
HTTP 304 Not Modified
dan tanpa nilai. Contohnya adalah halaman web tempat pengguna dapat mengisi informasi yang disimpan di BigQuery secara berkala. Jika tidak ada perubahan pada data, Anda dapat menghindari membuat panggilan daftar yang berlebihan ke BigQuery dengan menggunakan header if-none-match dengan ETag.Untuk menampilkan nilai daftar jika nilainya belum berubah.
Jika Anda hanya ingin menampilkan halaman nilai daftar jika nilai daftar belum berubah, Anda dapat menggunakan header HTTP "if-match". BigQuery mencocokkan nilai ETag dan menampilkan halaman hasil jika hasilnya tidak berubah, atau menampilkan hasil "Prakondisi Gagal" 412 jika halaman telah berubah.
Menelusuri hasil kueri
Setiap kueri menulis ke tabel tujuan. Jika tidak ada tabel tujuan yang disediakan, BigQuery API akan otomatis mengisi properti tabel tujuan dengan referensi ke tabel anonim sementara.
API
Baca kolom
jobs.config.query.destinationTable
untuk menentukan tabel tempat hasil kueri ditulis.
Panggil tabledata.list
untuk membaca hasil kueri.
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.
Untuk menetapkan jumlah baris yang ditampilkan di setiap halaman, gunakan
tugas GetQueryResults
dan tetapkan
opsi pageSize
dari objek QueryResultsOption
yang Anda teruskan, seperti yang ditunjukkan dalam
contoh berikut:
TableResult result = job.getQueryResults();
QueryResultsOption queryResultsOption = QueryResultsOption.pageSize(20);
TableResult result = job.getQueryResults(queryResultsOption);
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.
Python
Metode
QueryJob.result
menampilkan iterable hasil kueri. Sebagai alternatif,
- Baca
properti
QueryJob.destination
. Jika tidak dikonfigurasi, properti ini akan ditetapkan oleh API ke referensi ke tabel anonim sementara. - Dapatkan skema tabel dengan
metode
Client.get_table
. - Buat iterable di semua baris dalam tabel tujuan dengan
metode
Client.list_rows
.
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.