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

  1. Di konsol Google Cloud, buka BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda dan pilih set data.
  3. Klik View actions, lalu klik Create table. Tindakan ini akan membuka panel Create table.
  4. Di bagian Source, tentukan detail berikut:
    1. Untuk Create table from, pilih Google Cloud Storage.
    2. 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.
    3. Dari daftar File format, pilih jenis file.
    4. Centang kotak Source data partitioning, lalu untuk Select Source URI Prefix, masukkan awalan Cloud Storage URI. Misalnya, gs://my_bucket/my_files.
    5. 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.
    6. 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.
  5. Di bagian Destination, tentukan detail berikut:
    1. Untuk Project, pilih project tempat Anda ingin membuat tabel.
    2. Untuk Dataset, pilih set data tempat Anda ingin membuat tabel.
    3. Untuk Table, masukkan nama tabel yang ingin Anda buat.
    4. Untuk Table type, pilih Native table .
  6. Di bagian Schema, masukkan definisi skema.
  7. Untuk mengaktifkan deteksi otomatis skema, pilih Auto detect.
  8. Untuk mengabaikan baris dengan nilai kolom ekstra yang tidak cocok dengan skema, luaskan bagian Advanced options dan pilih Unknown values.
  9. 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, atau CUSTOM.
  • Tetapkan awalan URI sumber ke gs://my_bucket/my_table/ untuk mode partisi Hive AUTO atau STRINGS. Untuk CUSTOM, berikan gs://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 dan val, masing-masing dengan nilai 2019-10-31 dan 1.

Untuk memuat data saja dari file tertentu, lakukan hal berikut:

  • Tetapkan mode partisi Hive ke AUTO, STRINGS, atau CUSTOM.
  • Tetapkan awalan URI sumber ke gs://my_bucket/my_table/ untuk mode partisi Hive AUTO atau STRINGS. Untuk CUSTOM, berikan gs://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 dan val 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 jenis STRING.

  • 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