Pengantar tabel eksternal

Halaman ini memperkenalkan tabel eksternal dan memberikan panduan tentang pembuatan kueri data yang disimpan di luar BigQuery.

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 di 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.

Pertimbangan lokasi

Saat Anda memilih lokasi untuk data Anda, pertimbangkan hal berikut:

Cloud Storage

Anda dapat berinteraksi dengan data Cloud Storage menggunakan BigQuery dengan cara berikut:

Membuat kueri data Cloud Storage

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

  • Bucket region tunggal: Jika set data BigQuery Anda berada di region Warsawa (europe-central2), bucket Cloud Storage yang sesuai juga harus berada di region Warsawa, atau region ganda Cloud Storage yang mencakup Warsawa. Jika set data BigQuery Anda berada di multi-region US, maka bucket Cloud Storage dapat berada di multi-region US, satu region Iowa (us-central1), atau dual-region mana pun yang mencakup Iowa. Kueri dari region tunggal lain akan gagal, meskipun bucket berada di lokasi yang terdapat dalam multi-region set data. Misalnya, jika tabel eksternal berada dalam multi-region US dan bucket Cloud Storage berada di Oregon (us-west1), maka tugas akan gagal.

    Jika set data BigQuery Anda berada di multi-region EU, maka bucket Cloud Storage dapat berada di multi-region EU, satu region Belgia (europe-west1), atau dual-region mana pun yang mencakup Belgia. Kueri dari region tunggal lain akan gagal, meskipun bucket berada di lokasi yang terdapat dalam multi-region set data. Misalnya, jika tabel eksternal berada di multi-region EU dan bucket Cloud Storage berada di Warsawa (europe-central2), maka tugas akan gagal.

  • Bucket dual-region: Jika set data BigQuery Anda berada di region Tokyo (asia-northeast1), maka bucket Cloud Storage yang sesuai harus berada di region Tokyo, atau di dual-region yang mencakup Tokyo, seperti dual-region ASIA1. Untuk mengetahui informasi selengkapnya, lihat Membuat bucket dual-region.

    Jika bucket Cloud Storage berada di dual-region NAM4 atau dual-region mana pun yang mencakup region Iowa (us-central1), maka set data BigQuery yang sesuai dapat berada di multi-region US atau di Iowa (us-central1).

    Jika bucket Cloud Storage berada di dual-region EUR4 atau dual-region mana pun yang mencakup region Belgia (europe-west1), maka set data BigQuery yang sesuai dapat berada di multi-region EU atau di Belgia (europe-west1).

  • 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 Iowa (us-central1), seperti dual-region NAM4 , atau dalam dual-region kustom yang mencakup Iowa (us-central1).

    Jika set data BigQuery Anda berada diEU multi-region, bucket Cloud Storage yang sesuai harus berada di EU multi-region, di dual-region yang mencakup Belgia (europe-west1 ), seperti EUR4 dual-region, atau dalam region ganda kustom yang mencakup Belgia.

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

Memuat data dari Cloud Storage

Saat Anda memuat data dari Cloud Storage menggunakan tabel eksternal BigLake atau non-BigLake, data yang Anda muat harus ditempatkan bersama dengan set data BigQuery Anda.

  • Anda dapat memuat data dari bucket Cloud Storage yang berada di lokasi mana pun jika set data BigQuery Anda berada di multi-region US."

  • Bucket multi-region: Jika bucket Cloud Storage yang ingin Anda muat terletak di bucket multi-region, maka set data BigQuery dapat berada di bucket multi-region yang sama atau satu region yang disertakan dalam bucket multi-region yang sama. Misalnya, jika bucket Cloud Storage berada di region EU, maka set data BigQuery Anda dapat berada di multi-region EU atau satu region mana pun di EU.
  • Bucket dual-region: Jika bucket Cloud Storage yang ingin Anda muat terletak di bucket dual-region, maka set data BigQuery dapat ditemukan di region yang disertakan di bucket dual-region, atau di multi-region yang mencakup dual-region. Misalnya, jika bucket Cloud Storage terletak di region EUR4, maka set data BigQuery Anda dapat berlokasi di Finlandia (europe-north1) satu region, Belanda (europe-west4) satu region, atau multi-region EU.

    Untuk mengetahui informasi selengkapnya, lihat Membuat bucket dual-region.

  • Bucket satu region: Jika bucket Cloud Storage yang ingin Anda muat berada di satu region, set data BigQuery bisa berada di satu region yang sama, atau di multi-region yang mencakup satu region. Misalnya, jika bucket Cloud Storage Anda berada di region Finlandia (europe-north1), set data BigQuery Anda dapat berada di Finlandia atau multi-region EU.

  • Satu pengecualian adalah jika set data BigQuery Anda berada di region asia-northeast1, maka bucket Cloud Storage Anda dapat berada di multi-region EU.

Untuk informasi selengkapnya, lihat Pemuatan batch data.

Mengekspor data ke Cloud Storage

Tempatkan 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-region EU, bucket Cloud Storage dapat berada di region Belgia europe-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, maka bucket Cloud Storage Anda tidak boleh berada di multi-region ASIA.

Untuk informasi selengkapnya, lihat Mengekspor data tabel.

Bigtable

Saat 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 pengelolaan 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 akan dikenai biaya untuk menjalankan kueri dan byte yang berlaku dibaca jika menggunakan harga BigQuery on-demand (per TiB) atau konsumsi slot jika menggunakan harga kapasitas BigQuery (per slot per 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 informasi tentang harga Bigtable, lihat Harga.
  • Untuk mengetahui informasi tentang harga BigQuery, lihat Harga.

Langkah selanjutnya