Memuat data yang dipartisi secara eksternal
BigQuery dapat memuat data yang disimpan di Cloud Storage menggunakan tata letak partisi Hive. Partisi Hive berarti data eksternal diatur menjadi beberapa file, dengan konvensi penamaan untuk memisahkan file menjadi partisi yang berbeda. Untuk informasi selengkapnya, lihat Tata letak data yang didukung.
Secara default, data tidak dipartisi dalam BigQuery setelah Anda memuatnya, kecuali jika Anda secara eksplisit membuat tabel yang dipartisi.
Memuat data yang dipartisi Hive
Untuk memuat data yang dipartisi Hive, pilih salah satu opsi berikut:
Konsol
Di konsol Google Cloud, buka BigQuery.
- Di panel Explorer, luaskan project Anda dan pilih set data.
- Klik View actions, lalu klik Create table. Tindakan ini akan membuka panel Create table.
- Di bagian Source, tentukan detail berikut:
- Untuk Create table from, pilih Google Cloud Storage.
- Untuk Select file from Cloud Storage bucket, masukkan jalur ke folder Cloud Storage, menggunakan karakter pengganti.
Misalnya,
my_bucket/my_files*
. Bucket Cloud Storage harus berada di lokasi yang sama dengan set data yang berisi tabel yang ingin Anda buat, tambahkan, atau timpa. - Dari daftar File format, pilih jenis file.
- Centang kotak Source data partitioning, lalu untuk Select Source URI Prefix, masukkan awalan Cloud Storage URI. Misalnya,
gs://my_bucket/my_files
. - Di bagian Partition interference mode, pilih salah satu opsi berikut:
- Automatically infer types: menetapkan mode deteksi skema partisi ke
AUTO
. - All columns are strings: menetapkan mode deteksi skema partisi ke
STRINGS
. - Provide my own: menetapkan mode deteksi skema partisi ke
CUSTOM
dan memasukkan informasi skema secara manual untuk kunci partisi. Untuk mengetahui informasi selengkapnya, lihat Menyediakan skema kunci partisi kustom.
- Automatically infer types: menetapkan mode deteksi skema partisi ke
- Opsional: Untuk mewajibkan filter partisi pada semua kueri untuk tabel ini, centang kotak Require partition filter. Mewajibkan filter partisi dapat mengurangi biaya dan meningkatkan performa. Untuk mengetahui informasi selengkapnya, lihat Mewajibkan filter predikat pada kunci partisi dalam kueri.
- Di bagian Destination, tentukan detail berikut:
- Untuk Project, pilih project tempat Anda ingin membuat tabel.
- Untuk Dataset, pilih set data tempat Anda ingin membuat tabel.
- Untuk Table, masukkan nama tabel yang ingin Anda buat.
- Untuk Table type, pilih Native table .
- Di bagian Schema, masukkan definisi skema.
- Untuk mengaktifkan deteksi otomatis skema, pilih Auto detect.
- Untuk mengabaikan baris dengan nilai kolom ekstra yang tidak cocok dengan skema, luaskan bagian Advanced options dan pilih Unknown values.
- Klik Buat tabel.
SQL
Untuk membuat tabel yang dipartisi secara eksternal, gunakan klausa WITH PARTITION COLUMNS
dari pernyataan LOAD DATA
untuk menentukan detail skema partisi.
Sebagai contoh, lihat Memuat file yang dipartisi secara eksternal.
bq
Muat data yang dipartisi Hive menggunakan deteksi jenis kunci partisi otomatis:
bq load --source_format=ORC --hive_partitioning_mode=AUTO \ --hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \ dataset.table gcs_uris
Muat data yang dipartisi Hive menggunakan deteksi kunci partisi berjenis string:
bq load --source_format=CSV --autodetect \ --hive_partitioning_mode=STRINGS \ --hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \ dataset.table gcs_uris
Muat data yang dipartisi Hive menggunakan skema kunci partisi kustom yang dienkode menggunakan kolom source\_uri\_prefix
:
bq load --source_format=JSON --hive_partitioning_mode=CUSTOM \ --hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/partition_key_schema \ dataset.table gcs_uris file_schema
Skema kunci partisi dienkode segera setelah awalan URI sumber. Gunakan format berikut untuk menentukan --hive_partitioning_source_uri_prefix
:
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}
API
Dukungan untuk partisi Hive tersedia dengan menyetel HivePartitioningOptions
pada JobConfigurationLoad
.
Melakukan pemuatan inkremental
Pertimbangkan tata letak data berikut:
gs://my_bucket/my_table/dt=2019-10-31/val=1/file1
gs://my_bucket/my_table/dt=2018-10-31/val=2/file2
gs://my_bucket/my_table/dt=2017-10-31/val=3/file3
gs://my_bucket/my_table/dt=2016-10-31/val=4/file4
Untuk memuat data dari 31-10-2019 saja, lakukan hal berikut:
- Tetapkan mode partisi Hive ke
AUTO
,STRINGS
, atauCUSTOM
. - Tetapkan awalan URI sumber ke
gs://my_bucket/my_table/
untuk mode partisi HiveAUTO
atauSTRINGS
. Untuk CUSTOM, berikangs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}
. - Gunakan URI
gs://my_bucket/my_table/dt=2019-10-31/*
. - Data dimuat dengan menyertakan kolom
dt
danval
, masing-masing dengan nilai2019-10-31
dan1
.
Untuk memuat data saja dari file tertentu, lakukan hal berikut:
- Tetapkan mode partisi Hive ke
AUTO
,STRINGS
, atauCUSTOM
. - Tetapkan awalan URI sumber ke
gs://my_bucket/my_table/
untuk mode partisi HiveAUTO
atauSTRINGS
. UntukCUSTOM
, berikangs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}
. - Menggunakan URI
gs://my_bucket/my_table/dt=2017-10-31/val=3/file3,gs://my_bucket/my_table/dt=2016-10-31/val=4/file4
. - Data dimuat dari kedua file dengan kolom
dt
danval
yang terisi.
Skema partisi
Bagian berikut menjelaskan tata letak berpartisi Hive default dan mode deteksi skema yang didukung BigQuery.
Tata letak data yang didukung
Kunci partisi Hive muncul sebagai kolom normal saat Anda membuat kueri data dari Cloud Storage. Data harus mengikuti tata letak berpartisi Hive default. Misalnya, file berikut mengikuti tata letak default—key-value pair dikonfigurasi sebagai direktori dengan tanda sama dengan (=) sebagai pemisah, dan kunci partisi selalu dalam urutan yang sama:
gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/dt=2018-10-31/lang=fr/my_filename
Awalan URI sumber umum dalam contoh ini adalah gs://my_bucket/my_table
.
Tata letak data yang tidak didukung
Jika nama kunci partisi tidak dienkode di jalur direktori, deteksi skema partisi akan gagal. Misalnya, perhatikan jalur berikut, yang tidak mengenkode nama kunci partisi:
gs://my_bucket/my_table/2019-10-31/en/my_filename
File dengan skema yang tidak dalam urutan yang konsisten juga tidak akan terdeteksi. Misalnya, pertimbangkan dua file berikut dengan encoding kunci partisi terbalik:
gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/lang=fr/dt=2018-10-31/my_filename
Mode deteksi
BigQuery mendukung tiga mode deteksi skema partisi Hive:
AUTO
: Nama dan jenis kunci terdeteksi secara otomatis. Jenis berikut dapat terdeteksi:STRINGS
: Nama kunci secara otomatis dikonversi ke jenisSTRING
.CUSTOM
: Skema kunci partisi dienkode seperti yang ditentukan dalam awalan URI sumber.
Skema kunci partisi kustom
Untuk menggunakan skema CUSTOM
, Anda harus menentukan skema di kolom awalan URI sumber. Penggunaan skema CUSTOM
memungkinkan Anda menentukan jenis untuk setiap kunci partisi.
Nilai harus diurai secara valid sebagai jenis yang ditentukan atau kueri akan gagal.
Misalnya, jika Anda menetapkan flag source_uri_prefix
ke gs://my_bucket/my_table/{dt:DATE}/{val:STRING}
, BigQuery akan memperlakukan val
sebagai STRING, dt
sebagai DATE, dan menggunakan gs://my_bucket/my_table
sebagai awalan URI sumber untuk file yang cocok.
Batasan
- Dukungan partisi Hive dibuat dengan asumsi awalan URI sumber umum untuk semua URI yang segera berakhir sebelum encoding partisi, sebagai berikut:
gs://BUCKET/PATH_TO_TABLE/
. - Struktur direktori tabel yang dipartisi Hive diasumsikan memiliki kunci partisi yang sama yang muncul dalam urutan yang sama, dengan maksimum sepuluh kunci partisi per tabel.
- Data harus mengikuti tata letak partisi Hive default.
- Kunci partisi Hive dan kolom dalam file pokok tidak boleh tumpang-tindih.
Dukungan hanya untuk GoogleSQL.
Semua batasan untuk pemuatan dari Cloud Storage berlaku.
Langkah berikutnya
- Pelajari tabel berpartisi.
- Pelajari cara menggunakan SQL di BigQuery.