Menggunakan data yang dipartisi secara eksternal

Anda dapat menggunakan tabel eksternal BigQuery untuk mengkueri data yang dipartisi di penyimpanan data berikut:

Data yang dipartisi eksternal harus menggunakan tata letak partisi Hive default dan menggunakan salah satu format berikut:

  • Avro
  • CSV
  • JSON
  • ORC
  • Parquet

Untuk membuat kueri data yang dipartisi secara eksternal, Anda harus membuat tabel BigLake atau tabel eksternal. Sebaiknya gunakan tabel BigLake karena Anda dapat menerapkan keamanan yang mendetail di level tabel. Untuk mengetahui informasi tentang tabel eksternal dan BigLake, lihat Pengantar tabel BigLake dan Pengantar tabel eksternal.

Anda mengaktifkan dukungan partisi Hive dengan menyetel opsi yang sesuai dalam file definisi tabel. Untuk petunjuk tentang cara membuat kueri tabel yang dipartisi terkelola, lihat Pengantar tabel yang dipartisi.

Skema partisi

Bagian berikut menjelaskan tata letak berpartisi Hive default dan mode deteksi skema yang didukung BigQuery.

Untuk menghindari pembacaan file yang tidak diperlukan dan untuk meningkatkan performa, Anda dapat menggunakan filter predikat pada kunci partisi dalam kueri.

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.

Pemangkasan partisi

BigQuery akan memangkas partisi jika memungkinkan menggunakan predikat kueri pada kunci partisi. Dengan demikian, BigQuery tidak perlu membaca file yang tidak diperlukan, yang dapat membantu meningkatkan performa.

Filter predikat pada kunci partisi dalam kueri

Saat membuat tabel yang dipartisi secara eksternal, Anda dapat mewajibkan penggunaan filter predikat pada kunci partisi dengan mengaktifkan opsi requirePartitionFilter di bagian HivePartitioningOptions.

Jika opsi ini diaktifkan, upaya untuk mengkueri tabel yang dipartisi secara eksternal tanpa menentukan klausa WHERE akan menghasilkan error berikut: Cannot query over table <table_name> without a filter over column(s) <partition key names> that can be used for partition elimination.

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 mengkueri sumber data eksternal yang disimpan di Cloud Storage berlaku.

Langkah berikutnya