Ekspor data tabel ke Cloud Storage.
Halaman ini menjelaskan cara mengekspor atau mengekstrak data dari tabel BigQuery ke Cloud Storage.
Setelah memuat data ke BigQuery, Anda dapat mengekspor data tersebut dalam beberapa format. BigQuery dapat mengekspor hingga 1 GB data ke satu file. Jika mengekspor lebih dari 1 GB data, Anda harus mengekspor data ke beberapa file. Saat Anda mengekspor data ke beberapa file, ukuran file akan bervariasi.
Anda dapat menggunakan layanan seperti Dataflow untuk membaca data dari BigQuery, alih-alih mengekspornya secara manual. Untuk mengetahui informasi lebih lanjut tentang cara menggunakan Dataflow untuk membaca dan menulis ke BigQuery, lihat BigQuery I/O di dokumentasi Apache Beam.
Anda juga dapat mengekspor hasil kueri menggunakan pernyataan EXPORT DATA
. Anda dapat menggunakan EXPORT DATA OPTIONS
untuk mengekspor tampilan ke Cloud Storage.
Batasan ekspor
Saat Anda mengekspor data dari BigQuery, perhatikan hal-hal berikut:
- Anda tidak dapat mengekspor data tabel ke file lokal, ke Google Spreadsheet, atau Google Drive. Satu-satunya lokasi ekspor yang didukung adalah Cloud Storage. Untuk mengetahui informasi tentang cara menyimpan hasil kueri, lihat Mendownload dan menyimpan hasil kueri.
- Anda dapat mengekspor hingga 1 GB data tabel ke satu file. Jika Anda mengekspor lebih dari 1 GB data, gunakan karakter pengganti untuk mengekspor data ke beberapa file. Saat Anda mengekspor data ke beberapa file, ukuran file akan bervariasi. Untuk membatasi ukuran file yang diekspor, Anda dapat mempartisi data dan mengekspor setiap partisi.
- Ukuran file yang dihasilkan saat menggunakan pernyataan
EXPORT DATA
tidak dijamin. - Jumlah file yang dihasilkan oleh tugas ekspor dapat bervariasi.
- Anda tidak dapat mengekspor data bertingkat dan berulang dalam format CSV. Data bertingkat dan berulang didukung untuk ekspor Avro, JSON, dan Parquet.
- Saat Anda mengekspor data dalam format JSON, jenis data INT64 (bilangan bulat) dienkode sebagai string JSON untuk mempertahankan presisi 64-bit saat data tersebut dibaca oleh sistem lain.
- Anda tidak dapat mengekspor data dari beberapa tabel dalam satu tugas ekspor.
- Anda tidak dapat memilih jenis kompresi selain
GZIP
saat mengekspor data menggunakan Konsol Google Cloud. - Saat Anda mengekspor data ke bucket Cloud Storage yang dikonfigurasi dengan kebijakan retensi, BigQuery mungkin gagal menulis file ke bucket. Konfigurasi periode retensi data agar lebih lama daripada durasi tugas ekspor.
- Saat Anda mengekspor tabel dalam format JSON, simbol
<
,>
, dan&
akan dikonversi menggunakan notasi unicode\uNNNN
, denganN
adalah digit heksadesimal. Misalnya,profit&loss
menjadiprofit\u0026loss
. Konversi unicode ini dilakukan untuk menghindari kerentanan keamanan. - Urutan data tabel yang diekspor tidak dijamin kecuali jika Anda menggunakan pernyataan
EXPORT DATA
dan menentukan klausaORDER BY
diquery_statement
. - BigQuery tidak mendukung jalur resource Cloud Storage
yang mencakup beberapa garis miring berturut-turut setelah garis miring ganda di awal.
Nama objek Cloud Storage dapat berisi beberapa karakter garis miring ("/") berturut-turut. Namun, BigQuery mengonversi beberapa garis miring berturut-turut menjadi satu garis miring. Misalnya, jalur resource berikut, meskipun valid di Cloud Storage, tidak berfungsi di BigQuery:
gs://bucket/my//object//name
. - Anda tidak dapat mengekspor data dari snapshot tabel.
Sebelum memulai
Berikan peran Identity and Access Management (IAM) yang akan memberikan izin yang diperlukan pengguna untuk melakukan setiap tugas dalam dokumen ini.
Izin yang diperlukan
Untuk melakukan tugas dalam dokumen ini, Anda memerlukan izin berikut.
Izin untuk mengekspor data dari tabel BigQuery
Untuk mengekspor data dari tabel BigQuery, Anda memerlukan izin IAM bigquery.tables.export
.
Setiap peran IAM yang telah ditetapkan berikut menyertakan izin bigquery.tables.export
:
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Izin untuk menjalankan tugas ekspor
Untuk menjalankan tugas ekspor, Anda memerlukan izin IAM bigquery.jobs.create
.
Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang diperlukan untuk menjalankan tugas ekspor:
roles/bigquery.user
roles/bigquery.jobUser
roles/bigquery.admin
Izin untuk menulis data ke bucket Cloud Storage
Untuk menulis data ke bucket Cloud Storage yang ada, Anda memerlukan izin IAM berikut:
storage.objects.create
storage.objects.delete
Masing-masing peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk menulis data ke bucket Cloud Storage yang ada:
roles/storage.objectAdmin
roles/storage.admin
Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, lihat Peran dan izin yang telah ditetapkan.
Pertimbangan lokasi
Alokasikan bucket Cloud Storage Anda untuk mengekspor data:- Jika set data BigQuery Anda berada di multi-region
EU
, bucket Cloud Storage yang berisi data yang Anda ekspor harus berada di multi-region yang sama atau di lokasi yang terdapat dalam multi-region tersebut. Misalnya, jika set data BigQuery Anda berada di multi-regionEU
, bucket Cloud Storage dapat berada di region Belgiaeurope-west1
, yang berada di Uni Eropa.Jika set data Anda berada di multi-region
US
, Anda dapat mengekspor data ke bucket Cloud Storage di lokasi mana pun. - Jika set data Anda berada di suatu region, bucket Cloud Storage Anda harus berada di region yang sama. Misalnya, jika set data Anda berada di region Tokyo
asia-northeast1
, bucket Cloud Storage Anda tidak boleh berada di multi-regionASIA
.
- Jika Anda memilih resource penyimpanan regional seperti set data BigQuery atau bucket Cloud Storage, kembangkan rencana untuk mengelola data Anda secara geografis.
Untuk mengetahui informasi selengkapnya tentang lokasi Cloud Storage, lihat Lokasi Bucket dalam dokumentasi Cloud Storage.
Memindahkan data BigQuery antarlokasi
Anda tidak dapat mengubah lokasi set data setelah dibuat, tetapi Anda dapat membuat salinan set data. Anda tidak dapat memindahkan set data dari satu lokasi ke lokasi lain, tetapi Anda dapat memindahkan (membuat ulang) set data secara manual.
Mengekspor format dan jenis kompresi
BigQuery mendukung format data dan jenis kompresi berikut untuk data yang diekspor.
Format data | Jenis kompresi yang didukung | Detail |
---|---|---|
CSV | GZIP | Anda dapat mengontrol delimiter CSV dalam data yang diekspor menggunakan
flag alat command line bq
Data bertingkat dan berulang tidak didukung. |
JSON | GZIP | Data bertingkat dan berulang didukung. |
Avro | DEFLATE, SNAPPY | GZIP tidak didukung untuk ekspor Avro. Data bertingkat dan berulang didukung. Lihat detail ekspor Avro. |
Parquet | SNAPPY, GZIP, ZSTD | Data bertingkat dan berulang didukung. Lihat Detail ekspor Parquet. |
Mengekspor data
Anda dapat mengekspor data tabel dengan:
- Menggunakan konsol Google Cloud
- Menggunakan perintah
bq extract
di alat command line bq - Mengirimkan
extract
tugas ekstrak melalui API atau library klien.
Ekspor data tabel
Untuk mengekspor data dari tabel BigQuery:
Konsol
Buka halaman BigQuery di konsol Google Cloud.
Di panel Penjelajah, luaskan project dan set data Anda, lalu pilih tabel.
Di panel detail, klik Ekspor dan pilih Ekspor ke Cloud Storage.
Pada dialog Ekspor tabel ke Google Cloud Storage:
- Untuk bagian Pilih lokasi Google Cloud Storage, cari bucket, folder, atau file tempat Anda ingin mengekspor data.
- Untuk Format ekspor, pilih format untuk data yang diekspor: CSV, JSON (Newline Dibatasi), Avro, atau Parquet.
- Untuk Kompresi, pilih format kompresi atau pilih
None
jika tidak ada kompresi. - Klik Ekspor untuk mengekspor tabel.
Untuk memeriksa progres tugas, lihat di dekat bagian atas navigasi untuk Histori tugas untuk tugas Ekspor.
Untuk mengekspor tampilan ke Cloud Storage, gunakan pernyataan EXPORT DATA OPTIONS
.
SQL
Gunakan
pernyataan EXPORT DATA
.
Contoh berikut mengekspor kolom yang dipilih dari tabel bernama mydataset.table1
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
EXPORT DATA OPTIONS ( uri = 'gs://bucket/folder/*.csv', format = 'CSV', overwrite = true, header = true, field_delimiter = ';') AS ( SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 );
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Gunakan perintah bq extract
dengan flag --destination_format
.
(Opsional) Berikan flag --location
dan tetapkan nilainya ke lokasi Anda.
Flag opsional lainnya meliputi:
--compression
: Jenis kompresi yang akan digunakan untuk file yang diekspor.--field_delimiter
: Karakter yang menunjukkan batas antar-kolom dalam file output untuk ekspor CSV. Baik\t
maupuntab
diizinkan untuk pembatas tab.--print_header
: Jika ditentukan, cetak baris header untuk format yang memiliki header seperti CSV.
bq extract --location=location \ --destination_format format \ --compression compression_type \ --field_delimiter delimiter \ --print_header=boolean \ project_id:dataset.table \ gs://bucket/filename.ext
Dengan keterangan:
- location adalah nama lokasi Anda. Flag
--location
bersifat opsional. Misalnya, jika menggunakan BigQuery di region Tokyo, Anda dapat menetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file.bigqueryrc. - format adalah format untuk data yang diekspor:
CSV
,NEWLINE_DELIMITED_JSON
,AVRO
, atauPARQUET
. - compression_type adalah jenis kompresi yang didukung untuk format data Anda. Lihat Mengekspor format dan jenis kompresi.
- delimiter adalah karakter yang menunjukkan batas antar-kolom dalam ekspor CSV.
\t
dantab
adalah nama yang diterima untuk tab. - boolean adalah
true
ataufalse
. Jika ditetapkan ketrue
, baris header akan dicetak ke data yang diekspor jika format data mendukung header. Nilai defaultnya adalahtrue
. - project_id adalah project ID Anda.
- dataset adalah nama set data sumber.
- table adalah tabel yang Anda ekspor. Jika menggunakan
dekorator partisi,
Anda harus mengapit jalur tabel dengan tanda kutip tunggal atau
meng-escape karakter
$
. - bucket adalah nama bucket Cloud Storage tempat Anda mengekspor data. Set data BigQuery dan bucket Cloud Storage harus berada di lokasi yang sama.
- filename.ext adalah nama dan ekstensi file data yang diekspor. Anda dapat mengekspor ke beberapa file menggunakan karakter pengganti.
Contoh:
Misalnya, perintah berikut mengekspor mydataset.mytable
ke file terkompresi
gzip yang bernama myfile.csv
. myfile.csv
disimpan di bucket Cloud Storage bernama example-bucket
.
bq extract \ --compression GZIP \ 'mydataset.mytable' \ gs://example-bucket/myfile.csv
Format tujuan default adalah CSV. Untuk mengekspor ke JSON atau Avro, gunakan flag destination_format
dan tetapkan ke NEWLINE_DELIMITED_JSON
atau AVRO
. Contoh:
bq extract \ --destination_format NEWLINE_DELIMITED_JSON \ 'mydataset.mytable' \ gs://example-bucket/myfile.json
Perintah berikut mengekspor mydataset.mytable
ke dalam file Avro yang
dikompresi menggunakan Snappy. Nama filenya adalah myfile.avro
. myfile.avro
diekspor ke bucket Cloud Storage bernama example-bucket
.
bq extract \ --destination_format AVRO \ --compression SNAPPY \ 'mydataset.mytable' \ gs://example-bucket/myfile.avro
Perintah berikut mengekspor satu partisi mydataset.my_partitioned_table
ke file CSV di Cloud Storage:
bq extract \ --destination_format CSV \ 'mydataset.my_partitioned_table$0' \ gs://example-bucket/single_partition.csv
API
Untuk mengekspor data, buat tugas extract
dan isi konfigurasi tugas.
(Opsional) Tentukan lokasi Anda di properti location
di bagian jobReference
pada resource tugas.
Buat tugas ekstrak yang mengarah ke data sumber BigQuery dan tujuan Cloud Storage.
Tentukan tabel sumber menggunakan objek konfigurasi
sourceTable
yang berisi project ID, ID set data, dan ID tabel.Properti
destination URI(s)
harus sepenuhnya memenuhi syarat, dalam formatgs://bucket/filename.ext
. Setiap URI dapat berisi satu karakter pengganti '*' dan harus muncul setelah nama bucket.Tentukan format data dengan menetapkan properti
configuration.extract.destinationFormat
. Misalnya, untuk mengekspor file JSON, tetapkan properti ini ke nilaiNEWLINE_DELIMITED_JSON
.Untuk memeriksa status tugas, panggil jobs.get(job_id) dengan ID tugas yang ditampilkan oleh permintaan awal.
- Jika
status.state = DONE
, tugas berhasil diselesaikan. - Jika properti
status.errorResult
ada, permintaan gagal, dan objek tersebut akan menyertakan informasi yang menjelaskan penyebabnya. - Jika
status.errorResult
tidak ada, tugas berhasil diselesaikan, meskipun mungkin ada beberapa error non-fatal. Error non-fatal tercantum dalam propertistatus.errors
objek tugas yang ditampilkan.
- Jika
Catatan API:
Sebagai praktik terbaik, buat ID unik dan teruskan sebagai
jobReference.jobId
saat memanggiljobs.insert
untuk membuat tugas. Pendekatan ini lebih tangguh untuk kegagalan jaringan karena klien dapat melakukan polling atau mencoba ulang ID tugas yang diketahui.Memanggil
jobs.insert
pada ID pekerjaan tertentu bersifat idempoten; dengan kata lain, Anda dapat mencoba sebanyak yang Anda inginkan pada ID tugas yang sama, dan maksimal satu dari operasi tersebut akan berhasil.
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.
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.
Detail ekspor Avro
BigQuery mengekspresikan data berformat Avro dengan cara berikut:
- File ekspor yang dihasilkan adalah file kontainer Avro.
- Setiap baris BigQuery direpresentasikan sebagai data Avro. Data bertingkat direpresentasikan oleh objek data bertingkat.
- Kolom
REQUIRED
direpresentasikan sebagai jenis Avro yang sesuai. Misalnya, jenisINTEGER
BigQuery dipetakan ke jenisLONG
Avro. - Kolom
NULLABLE
direpresentasikan sebagai union Avro dari jenis yang sesuai dan "null". - Kolom
REPEATED
direpresentasikan sebagai array Avro. - Jenis data
TIMESTAMP
direpresentasikan sebagai jenis logikatimestamp-micros
(menganotasi jenisLONG
Avro) secara default di tugas Ekstrak dan Ekspor Data SQL. (Perhatian: Anda dapat menambahkanuse_avro_logical_types=False
hinggaExport Data Options
menonaktifkan tipe logika sehingga menggunakanstring
sebagai gantinya di kolom stempel waktu, tetapi dalam Tugas Ekstraksi, selalu menggunakan jenis logika Avro.) - Jenis data
DATE
direpresentasikan sebagai jenis logikadate
(menganotasi jenisINT
Avro) secara default di Export Data SQL, tetapi direpresentasikan sebagai jenisstring
secara default di tugas Ekstraksi. (Catatan: Anda dapat menambahkanuse_avro_logical_types=False
keExport Data Options
untuk menonaktifkan jenis logika, atau menggunakan flag--use_avro_logical_types=True
untuk mengaktifkan jenis logika dalam tugas Ekstrak.) - Jenis data
TIME
direpresentasikan sebagai jenis logikatimestamp-micro
(menganotasi jenisLONG
Avro) secara default di Export Data SQL, tetapi direpresentasikan sebagai jenisstring
secara default di tugas Ekstraksi. (Catatan: Anda dapat menambahkanuse_avro_logical_types=False
keExport Data Options
untuk menonaktifkan jenis logika, atau menggunakan flag--use_avro_logical_types=True
untuk mengaktifkan jenis logika dalam tugas Ekstraksi.) - Jenis data
DATETIME
direpresentasikan sebagai jenisSTRING
Avro (jenis string dengan jenis logika bernama kustomdatetime
) secara default dalam Export Data SQL, tetapi direpresentasikan sebagaistring
secara default di tugas Ekstrak. (Catatan: Anda dapat menambahkanuse_avro_logical_types=False
keExport Data Options
untuk menonaktifkan jenis logika, atau menggunakan flag--use_avro_logical_types=True
untuk mengaktifkan jenis logis dalam tugas Ekstraksi.)
Jenis data NUMERIC(P[, S])
dan BIGNUMERIC(P[, S])
yang berparameter akan mentransfer
parameter jenis skala dan presisi keduanya ke jenis logika desimal Avro.
Format Avro tidak dapat digunakan bersama dengan kompresi GZIP. Untuk mengompresi
data Avro, gunakan alat command line bq atau API dan tentukan salah satu
jenis kompresi yang didukung untuk data Avro: DEFLATE
atau SNAPPY
.
Detail ekspor Parquet
BigQuery mengonversi jenis data GoogleSQL ke jenis data Parquet berikut:
Jenis data BigQuery | Jenis primitif Parquet | Jenis logika Parquet |
---|---|---|
Bilangan bulat | INT64 |
NONE |
Angka | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = 38, scale = 9) |
Numeric(P[, S]) | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = P, scale = S) |
BigNumeric | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = 76, scale = 38) |
BigNumeric(P[, S]) | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = P, scale = S) |
Titik mengambang | FLOAT |
NONE |
Boolean | BOOLEAN |
NONE |
String | BYTE_ARRAY |
STRING (UTF8) |
Byte | BYTE_ARRAY |
NONE |
Tanggal | INT32 |
DATE |
Datetime | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Waktu | INT64 |
TIME (isAdjustedToUTC = true, unit = MICROS) |
Stempel waktu | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Skema Parquet mewakili data bertingkat sebagai grup dan data berulang sebagai grup berulang. Untuk mengetahui informasi selengkapnya tentang penggunaan data bertingkat dan berulang di BigQuery, lihat Menentukan kolom bertingkat dan berulang.
Anda dapat menggunakan solusi berikut untuk jenis DATETIME
:
- Muat file ke tabel staging. Kemudian, gunakan kueri SQL untuk mentransmisikan kolom ke
DATETIME
dan menyimpan hasilnya ke tabel baru. Untuk mengetahui informasi selengkapnya, lihat Mengubah jenis data kolom. - Berikan skema untuk tabel menggunakan flag
--schema
dalam tugas pemuatan. Tentukan kolom tanggal dan waktu sebagaicol:DATETIME
.
Mengekspor data ke satu atau beberapa file
Properti destinationUris
menunjukkan satu atau beberapa lokasi dan nama file tempat BigQuery harus mengekspor file Anda.
BigQuery mendukung operator karakter pengganti tunggal (*) di setiap URI. Karakter pengganti dapat muncul di mana saja dalam URI kecuali sebagai bagian dari nama bucket. Penggunaan operator karakter pengganti menginstruksikan BigQuery untuk membuat beberapa file shard berdasarkan pola yang diberikan. Operator karakter pengganti diganti dengan angka (dimulai dari 0), dengan padding kiri hingga 12 digit. Misalnya, URI dengan
karakter pengganti di akhir nama file akan membuat file dengan000000000000
ditambahkan ke file pertama, 000000000001
ditambahkan ke file kedua, dan
selanjutnya.
Tabel berikut menjelaskan beberapa kemungkinan opsi untuk properti destinationUris
:
Opsi destinationUris |
|
---|---|
URI tunggal |
Gunakan URI tunggal jika Anda mengekspor data tabel yang berukuran 1 GB atau kurang. Opsi ini adalah kasus penggunaan yang paling umum, karena data yang diekspor
umumnya kurang dari nilai maksimum 1 GB. Opsi ini tidak
didukung untuk
pernyataan Definisi properti:
Membuat: gs://my-bucket/file-name.json |
URI karakter pengganti tunggal |
Gunakan URI karakter pengganti tunggal jika menurut Anda data yang diekspor akan lebih besar dari nilai maksimum 1 GB. BigQuery melakukan sharding data menjadi beberapa file berdasarkan pola yang diberikan. Ukuran file yang diekspor akan bervariasi. Jika Anda menggunakan karakter pengganti di komponen URI selain nama file, pastikan komponen jalur tidak ada sebelum mengekspor data Anda. Definisi properti:
Membuat: gs://my-bucket/file-name-000000000000.json gs://my-bucket/file-name-000000000001.json gs://my-bucket/file-name-000000000002.json ... |
Membatasi ukuran file yang diekspor
Jika Anda mengekspor lebih dari 1 GB data dalam sekali ekspor, Anda harus menggunakan karakter pengganti untuk mengekspor data ke beberapa file, dan ukuran file dapat bervariasi. Jika Anda perlu membatasi ukuran maksimum setiap file yang diekspor, salah satu opsinya adalah mempartisi data Anda secara acak, lalu mengekspor setiap partisi ke file:
- Tentukan jumlah partisi yang Anda perlukan, yang sama dengan ukuran total data dibagi dengan ukuran file hasil ekspor yang diinginkan. Misalnya, jika Anda memiliki data sebesar 8.000 MB dan ingin setiap file yang diekspor berukuran sekitar 20 MB, maka Anda memerlukan 400 partisi.
Buat tabel baru yang dipartisi dan dikelompokkan oleh kolom baru yang dibuat secara acak yang disebut
export_id
. Contoh berikut menunjukkan cara membuatprocessed_table
baru dari tabel yang ada bernamasource_table
yang memerlukan partisin
untuk mencapai ukuran file yang diinginkan:CREATE TABLE my_dataset.processed_table PARTITION BY RANGE_BUCKET(export_id, GENERATE_ARRAY(0, n, 1)) CLUSTER BY export_id AS ( SELECT *, CAST(FLOOR(n*RAND()) AS INT64) AS export_id FROM my_dataset.source_table );
Untuk setiap bilangan bulat
i
antara 0 dann-1
, jalankan pernyataanEXPORT DATA
pada kueri berikut:SELECT * EXCEPT(export_id) FROM my_dataset.processed_table WHERE export_id = i;
Mengekstrak tabel terkompresi
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.
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.
Contoh kasus penggunaan
Contoh ini menunjukkan cara mengekspor data ke Cloud Storage.
Misalkan Anda melakukan streaming data ke Cloud Storage dari log endpoint secara kontinu. Snapshot harian akan diekspor ke Cloud Storage untuk tujuan pencadangan dan pengarsipan. Pilihan terbaik adalah tugas ekstraksi yang tunduk pada quotas dan batasan tertentu.
Kirim tugas ekstraksi dengan
API
atau
library klien,
dengan meneruskan ID unik sebagai jobReference.jobId
. Tugas Ekstraksi
bersifat asinkron.
Periksa status tugas
menggunakan ID tugas unik yang digunakan untuk membuat tugas. Tugas berhasil diselesaikan
jika status.status
adalah DONE
. Jika status.errorResult
ada,
tugas gagal dan perlu dicoba lagi.
Pemrosesan data batch
Misalnya tugas batch per malam digunakan untuk memuat data berdasarkan batas waktu tetap. Setelah tugas pemuatan ini selesai, tabel dengan statistik akan terwujud dari sebuah kueri seperti yang dijelaskan di bagian sebelumnya. Data dari tabel ini diambil dan dikompilasi ke dalam laporan PDF lalu dikirim ke badan pengatur.
Karena jumlah data yang perlu dibaca kecil, gunakan tabledata.list
API untuk mengambil semua baris tabel dalam format kamus JSON. Jika ada
lebih dari satu halaman data, hasilnya akan menetapkan properti pageToken
. Untuk mengambil halaman hasil berikutnya, lakukan panggilan tabledata.list
lain dan
sertakan nilai token sebagai parameter pageToken
. Jika panggilan API gagal
dengan error
5xx,
coba lagi dengan backoff eksponensial. Sebagian besar error 4xx tidak dapat dicoba lagi. Untuk pemisahan yang lebih baik antara ekspor BigQuery dan pembuatan laporan, hasil harus disimpan ke disk.
Kebijakan kuota
Untuk mengetahui informasi tentang kuota tugas ekspor, lihat Tugas Ekspor di halaman Kuota dan batas.
Penggunaan untuk tugas ekspor tersedia di INFORMATION_SCHEMA
.
Entri tugas di tabel sistem JOBS_BY_*
untuk tugas ekspor berisi nilai total_processed_bytes
yang dapat digunakan untuk memantau penggunaan agregat untuk memastikannya tetap di bawah 50 TB per hari. Untuk mempelajari cara membuat kueri tampilan INFORMATION_SCHEMA.JOBS
guna mendapatkan nilai total_processed_bytes
, lihat Mendapatkan byte yang diproses oleh tugas ekspor
Melihat penggunaan kuota saat ini
Anda dapat melihat penggunaan tugas kueri, pemuatan, ekstrak, atau penyalinan saat ini dengan menjalankan kueri INFORMATION_SCHEMA
untuk melihat metadata tentang tugas yang dijalankan selama jangka waktu yang ditentukan. Anda dapat membandingkan penggunaan saat ini dengan batas kuota untuk menentukan penggunaan kuota jenis tugas tertentu. Contoh kueri berikut menggunakan tampilan INFORMATION_SCHEMA.JOBS
untuk mencantumkan jumlah tugas kueri, pemuatan, ekstraksi, dan penyalinan menurut project:
SELECT sum(case when job_type="QUERY" then 1 else 0 end) as QRY_CNT, sum(case when job_type="LOAD" then 1 else 0 end) as LOAD_CNT, sum(case when job_type="EXTRACT" then 1 else 0 end) as EXT_CNT, sum(case when job_type="COPY" then 1 else 0 end) as CPY_CNT FROM `region-eu`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE date(creation_time)= CURRENT_DATE()
Anda dapat menyiapkan kebijakan pemberitahuan Cloud Monitoring yang memberikan notifikasi tentang jumlah byte yang diekspor.
Di konsol Google Cloud, buka halaman Monitoring.
Di panel navigasi, pilih Metrics Explorer.
Di editor kueri MQL, siapkan pemberitahuan untuk memantau byte yang diekspor per hari, seperti yang terlihat pada contoh berikut:
fetch consumer_quota | filter resource.service == 'bigquery.googleapis.com' | { metric serviceruntime.googleapis.com/quota/rate/net_usage | align delta_gauge(1m) | group_by [resource.project_id, metric.quota_metric, resource.location], sum(value.net_usage) ; metric serviceruntime.googleapis.com/quota/limit | filter metric.limit_name == 'ExtractBytesPerDay' | group_by [resource.project_id, metric.quota_metric, resource.location], sliding(1m), max(val()) } | ratio | every 1m | condition gt(val(), 0.01 '1')
Untuk menyiapkan pemberitahuan, klik Jalankan kueri.
Untuk informasi selengkapnya, lihat Kebijakan pemberitahuan dengan MQL.
Harga
Untuk mengetahui informasi tentang harga ekspor data, lihat halaman Harga BigQuery.
Setelah data diekspor, Anda akan dikenai biaya penyimpanan data di Cloud Storage. Untuk mengetahui informasi lebih lanjut, lihat Harga Cloud Storage.
Keamanan tabel
Untuk mengontrol akses ke tabel di BigQuery, lihat Pengantar kontrol akses tabel.
Langkah selanjutnya
- Untuk mempelajari konsol Google Cloud lebih lanjut, lihat Menggunakan Konsol Google Cloud.
- Untuk mempelajari alat command line bq lebih lanjut, lihat Menggunakan alat command line bq.
- Untuk mempelajari cara membuat aplikasi menggunakan library klien BigQuery API, lihat Panduan memulai library klien.