Pengantar tabel eksternal

Dokumen ini menjelaskan cara menggunakan data yang disimpan di luar BigQuery dalam tabel eksternal. Untuk menggunakan sumber data eksternal, Anda juga dapat menggunakan Set data eksternal.

Tabel eksternal non-BigLake memungkinkan Anda membuat kueri data terstruktur di penyimpanan data eksternal. Untuk membuat kueri tabel eksternal non-BigLake, Anda harus memiliki izin ke tabel eksternal dan sumber data eksternal. Misalnya, untuk membuat kueri tabel eksternal non-BigLake yang menggunakan sumber data di Cloud Storage, Anda harus memiliki izin berikut:

  • bigquery.tables.getData
  • bigquery.jobs.create
  • storage.buckets.get
  • storage.objects.get

Penyimpanan data yang didukung

Anda dapat menggunakan tabel eksternal non-BigLake dengan penyimpanan data berikut:

Dukungan tabel sementara

Anda dapat membuat kueri sumber data eksternal di BigQuery menggunakan tabel permanen atau tabel sementara. Tabel permanen adalah tabel yang dibuat dalam set data dan ditautkan ke sumber data eksternal Anda. Karena tabel ini bersifat permanen, Anda dapat menggunakan kontrol akses untuk membagikan tabel dengan orang lain yang juga memiliki akses ke sumber data eksternal pokok, dan Anda dapat membuat kueri tabel ini kapan saja.

Saat membuat kueri sumber data eksternal menggunakan tabel sementara, Anda mengirimkan perintah yang menyertakan kueri dan membuat tabel non-permanen yang ditautkan ke sumber data eksternal. Saat Anda menggunakan tabel sementara, Anda tidak membuat tabel di salah satu set data BigQuery. Karena tidak disimpan secara permanen dalam sebuah set data, tabel itu tidak dapat dibagikan kepada orang lain. Membuat kueri sumber data eksternal menggunakan tabel sementara berguna untuk kueri ad-hoc satu kali atas data eksternal, atau untuk proses ekstrak, transformasi, dan pemuatan (ETL).

Beberapa file sumber

Jika membuat tabel eksternal non-BigLake berdasarkan Cloud Storage, Anda dapat menggunakan beberapa sumber data eksternal, asalkan sumber data tersebut memiliki skema yang sama. Opsi ini tidak didukung untuk tabel eksternal non-BigLake yang didasarkan pada Bigtable atau Google Drive.

Batasan

Batasan berikut berlaku untuk tabel eksternal:

  • BigQuery tidak menjamin konsistensi data untuk tabel data eksternal. Perubahan pada data pokok saat kueri sedang berjalan dapat menghasilkan perilaku yang tidak terduga.
  • Performa kueri untuk tabel eksternal mungkin lambat dibandingkan dengan mengkueri data dalam tabel BigQuery standar. Jika kecepatan kueri menjadi prioritas, muat data ke BigQuery, bukan menyiapkan sumber data eksternal. Performa kueri yang menyertakan tabel eksternal bergantung pada jenis penyimpanan eksternal. Misalnya, mengkueri data yang tersimpan di Cloud Storage lebih cepat daripada membuat kueri data yang tersimpan di Google Drive. Secara umum, performa kueri untuk tabel eksternal harus setara dengan membaca data langsung dari sumber data.
  • Anda tidak dapat memodifikasi tabel data eksternal menggunakan DML atau metode lainnya. Tabel eksternal bersifat hanya baca untuk BigQuery.
  • Anda tidak dapat menggunakan metode JSON API TableDataList untuk mengambil data dari tabel eksternal. Untuk informasi selengkapnya, lihat tabledata.list. Untuk mengatasi keterbatasan ini, Anda dapat menyimpan hasil kueri di tabel tujuan. Anda kemudian dapat menggunakan metode TableDataList di tabel hasil.
  • Anda tidak dapat menjalankan tugas BigQuery yang mengekspor data dari tabel eksternal. Untuk mengatasi keterbatasan ini, Anda dapat menyimpan hasil kueri di tabel tujuan. Kemudian, jalankan tugas ekspor terhadap tabel hasil.
  • Anda tidak dapat mereferensikan tabel eksternal dalam kueri tabel karakter pengganti.
  • Tabel eksternal tidak mendukung pengelompokan. Mereka mendukung partisi dalam cara terbatas. Untuk mengetahui detailnya, lihat Membuat kueri data yang dipartisi secara eksternal.
  • Saat Anda membuat kueri sumber data eksternal selain Cloud Storage, hasilnya tidak akan disimpan di cache. (Kueri GoogleSQL di Cloud Storage didukung.) Anda akan dikenai biaya untuk setiap kueri pada tabel eksternal meskipun Anda mengeluarkan kueri yang sama beberapa kali. Jika Anda perlu berulang kali mengeluarkan kueri terhadap tabel eksternal yang tidak sering berubah, pertimbangkan untuk menulis hasil kueri ke tabel permanen dan jalankan kueri terhadap tabel permanen tabel sementara.
  • Anda dibatasi pada 16 kueri serentak terhadap sumber data eksternal Bigtable.
  • Uji coba kueri gabungan yang menggunakan tabel eksternal mungkin melaporkan batas bawah 0 byte data, meskipun baris ditampilkan. Hal ini karena jumlah data yang diproses dari tabel eksternal tidak dapat ditentukan hingga kueri yang sebenarnya selesai. Menjalankan kueri gabungan akan menimbulkan biaya untuk pemrosesan data ini.
  • Anda tidak dapat menggunakan _object_metadata sebagai nama kolom di tabel eksternal. File ini dicadangkan untuk penggunaan internal.
  • BigQuery tidak mendukung tampilan statistik penyimpanan tabel untuk tabel eksternal.
  • Tabel eksternal tidak mendukung nama kolom fleksibel.

Pertimbangan lokasi

Saat memilih lokasi untuk tabel eksternal, Anda perlu mempertimbangkan lokasi set data BigQuery dan sumber data eksternal.

Cloud Storage

Saat Anda membuat kueri data di Cloud Storage menggunakan BigLake atau tabel eksternal non-BigLake, bucket harus ditempatkan bersama dengan set data BigQuery Anda yang berisi definisi tabel eksternal. Contoh:

  • Bucket satu region

    Jika bucket Cloud Storage Anda berada di region us-central1 (Iowa), set data BigQuery Anda harus berada di region us-central1 (Iowa) atau multi-region US.

    Jika bucket Cloud Storage Anda berada di region europe-west4 (Belanda), set data BigQuery Anda harus berada di multi-region europe-west4 (Belanda) atau EU.

    Jika bucket Cloud Storage Anda berada di region europe-west1 (Belgia), set data BigQuery yang sesuai juga harus berada di region europe-west1 (Belgia).

  • Bucket dual-region

    Jika bucket Cloud Storage Anda berada di dual-region NAM4 yang telah ditentukan sebelumnya atau dual-region yang dapat dikonfigurasi yang mencakup region us-central1 (Iowa), set data BigQuery yang sesuai harus berada di region us-central1 (Iowa) atau multi-region US.

    Jika bucket Cloud Storage Anda berada di dual-region EUR4 yang telah ditentukan sebelumnya atau dual-region yang dapat dikonfigurasi yang mencakup region europe-west4 (Belanda), set data BigQuery yang sesuai harus berada di region europe-west4 (Belanda) atau multi-region EU.

    Jika bucket Cloud Storage Anda berada di dual-region ASIA1 yang telah ditentukan sebelumnya, set data BigQuery yang sesuai harus berada di region asia-northeast1 (Tokyo) atau region asia-northeast2 (Osaka).

    Jika bucket Cloud Storage Anda menggunakan dual-region yang dapat dikonfigurasi yang mencakup region australia-southeast1 (Sydney) dan australia-southeast2 (Melbourne), bucket BigQuery yang sesuai harus berada di region australia-southeast1 (Sydney) atau region australia-southeast2 (Melbourne).

  • Bucket multi-region

    Menggunakan lokasi set data multi-region dengan bucket Cloud Storage multi-region tidak direkomendasikan untuk tabel eksternal, karena performa kueri eksternal bergantung pada latensi minimal dan bandwidth jaringan yang optimal.

    Jika set data BigQuery Anda berada di multi-region US, bucket Cloud Storage yang sesuai harus berada di multi-region US, dalam dual-region yang mencakup us-central1 (Iowa), seperti dual-region NAM4, atau dalam dual-region yang dapat dikonfigurasi yang mencakup us-central1.

    Jika set data BigQuery Anda berada di multi-region EU, bucket Cloud Storage yang sesuai harus berada di multi-region EU, di dual-region yang mencakup europe-west4 (Belanda), seperti dual-region EUR4, atau di dual-region yang dapat dikonfigurasi yang mencakup europe-west4.

Untuk informasi selengkapnya tentang lokasi Cloud Storage yang didukung, lihat Lokasi bucket dalam dokumentasi Cloud Storage.

Bigtable

Saat Anda membuat kueri data di Bigtable melalui tabel eksternal BigQuery, instance Bigtable Anda harus berada di lokasi yang sama dengan set data BigQuery:

  • Region tunggal: Jika set data BigQuery Anda berada di lokasi regional Belgia (europe-west1), instance Bigtable yang sesuai harus berada di region Belgia.
  • Multi-region: Karena performa kueri eksternal bergantung pada latensi minimal dan bandwidth jaringan yang optimal, penggunaan lokasi set data multi-region tidak direkomendasikan untuk tabel eksternal di Bigtable.

Untuk informasi selengkapnya tentang lokasi Bigtable yang didukung, lihat Lokasi Bigtable.

Google Drive

Pertimbangan lokasi tidak berlaku untuk sumber data eksternal Google Drive.

Pengelolaan data

Kembangkan rencana manajemen data:

Memindahkan data antar-lokasi

Untuk memindahkan set data secara manual dari satu lokasi ke lokasi lain, ikuti langkah-langkah berikut:

  1. Ekspor data dari tabel BigQuery ke bucket Cloud Storage di lokasi yang sama dengan set data Anda atau di lokasi yang terdapat dalam lokasi set data Anda. Misalnya, jika set data Anda berada di lokasi multi-region EU, Anda dapat mengekspor data ke lokasi europe-west1 Belgia, yang merupakan bagian dari Uni Eropa.

    Ekspor data dari BigQuery tidak dikenai biaya, tetapi Anda akan dikenai biaya untuk menyimpan data yang diekspor di Cloud Storage. Ekspor BigQuery dikenai batas untuk tugas ekspor.

  2. Salin atau pindahkan data dari bucket Cloud Storage yang diekspor ke bucket baru yang Anda buat di lokasi tujuan. Misalnya, jika Anda memindahkan data dari multi-region US ke region asia-northeast1 Tokyo, Anda harus mentransfer data ke bucket yang Anda buat di Tokyo. Untuk informasi tentang cara mentransfer objek Cloud Storage, lihat Menyalin, mengganti nama, dan memindahkan objek dalam dokumentasi Cloud Storage.

    Mentransfer data antar-region akan menimbulkan biaya traffic keluar jaringan di Cloud Storage.

  3. Buat set data BigQuery baru di lokasi baru, lalu muat data Anda dari bucket Cloud Storage ke dalam set data baru.

    Anda tidak dikenai biaya untuk memuat data ke BigQuery, tetapi Anda akan dikenai biaya untuk penyimpanan data di Cloud Storage sampai Anda menghapus data atau bucket. Anda juga dikenai biaya untuk penyimpanan data di BigQuery setelah dimuat. Pemuatan data ke BigQuery tunduk pada batas tugas pemuatan.

Anda juga dapat menggunakan Cloud Composer untuk memindahkan dan menyalin set data besar secara terprogram.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan Cloud Storage untuk menyimpan dan memindahkan set data besar, lihat Menggunakan Cloud Storage dengan big data.

Harga

Saat membuat kueri tabel eksternal dari BigQuery, Anda dikenai biaya untuk menjalankan kueri dan byte yang berlaku yang dibaca jika menggunakan harga BigQuery on-demand (per TiB) atau penggunaan slot jika menggunakan harga kapasitas BigQuery (per slot-jam).

Jika data Anda disimpan di ORC atau Parquet di Cloud Storage, lihat Penghitungan ukuran data.

Anda juga dikenai biaya untuk penyimpanan data dan resource apa pun yang digunakan oleh aplikasi sumber, sesuai dengan panduan harga aplikasi:

  • Untuk mengetahui informasi tentang harga Cloud Storage, lihat Harga Cloud Storage.
  • Untuk mengetahui informasi tentang harga Bigtable, lihat Harga.
  • Untuk mengetahui informasi tentang harga BigQuery, lihat Harga.

Langkah berikutnya