Pengantar tabel objek

Dokumen ini menjelaskan tabel objek, yaitu tabel hanya-baca di atas objek data tidak terstruktur yang berada di Cloud Storage.

Tabel objek memungkinkan Anda untuk menganalisis data tidak terstruktur di Cloud Storage. Anda dapat melakukan analisis dengan fungsi jarak jauh atau melakukan inferensi dengan menggunakan BigQuery ML, lalu menggabungkan hasil operasi ini dengan data terstruktur lainnya di BigQuery.

Seperti tabel BigLake, tabel objek menggunakan delegasi akses, yang memisahkan akses ke tabel objek dari akses ke objek Cloud Storage. Koneksi eksternal yang terkait dengan akun layanan digunakan untuk terhubung ke Cloud Storage, sehingga Anda hanya perlu memberi pengguna akses ke tabel objek. Hal ini memungkinkan Anda menerapkan keamanan tingkat baris dan mengelola objek yang dapat diakses pengguna.

Skema tabel objek

Tabel objek menyediakan indeks metadata pada objek data tidak terstruktur di bucket Cloud Storage yang ditentukan. Setiap baris tabel berhubungan dengan sebuah objek, dan kolom tabel berhubungan dengan metadata objek yang dihasilkan oleh Cloud Storage, termasuk metadata kustom apa pun.

Tabel objek juga berisi kolom semu data yang mewakili konten file dalam byte mentah, yang diisi secara otomatis saat tabel objek dibuat. Kolom semu ini digunakan oleh fungsi ML.DECODE_IMAGE saat Anda menjalankan inferensi pada data gambar. Anda tidak dapat menyertakan kolom semu data dalam kueri, dan kolom tersebut tidak muncul sebagai bagian dari skema tabel objek.

Tabel berikut menjelaskan skema tetap yang digunakan oleh tabel objek:

Nama kolom Jenis Mode Deskripsi
uri STRING NULLABLE uri: Uniform Resource Identifier (URI) objek, dalam format gs://bucket_name/[folder_name/]object_name.
generation INTEGER NULLABLE Generasi objek ini, yang mengidentifikasi versi objek.
content_type STRING NULLABLE Jenis Konten data objek, yang mengidentifikasi jenis media tersebut. Jika objek disimpan tanpa Jenis Konten, objek tersebut akan berfungsi sebagai aliran aplikasi/oktet.
size INTEGER NULLABLE Panjang Konten data dalam byte.
md5_hash STRING NULLABLE Hash MD5 data, yang dienkode menggunakan base64. Untuk informasi selengkapnya tentang penggunaan hash MD5, lihat Metadata objek Cloud Storage.
updated TIMESTAMP NULLABLE Terakhir kali metadata objek diubah.
metadata RECORD BERULANG Metadata kustom untuk objek. Setiap bagian metadata direpresentasikan sebagai pasangan nilai kunci di kolom (metadata.)name dan (metadata.)value turunan pada kolom metadata.
(metadata.)name STRING NULLABLE Kunci dalam entri metadata individual.
(metadata.)value STRING NULLABLE Nilai dalam entri metadata individual.

Baris dalam tabel objek terlihat mirip dengan berikut ini:

------------------------------------------------------------------------------------------------------------------------------------------------
|  uri                 | generation | content_type | size  | md5_hash   | updated                        | metadata...name | metadata...value  |
-----------------------------------------------------------------------------------------------------------------------------------------------
| gs://mybucket/a.jpeg | 165842…    | image/jpeg   | 26797 | 8c33be10f… | 2022-07-21 17:35:40.148000 UTC | null            | null              |
-----------------------------------------------------------------------------------------------------------------------------------------------
| gs://mybucket/b.bmp  | 305722…    | image/bmp    | 57932 | 44eb90cd1… | 2022-05-14 12:09:38.114000 UTC | null            | null              |
-----------------------------------------------------------------------------------------------------------------------------------------------

Kasus penggunaan

Anda bisa membuat kueri metadata dalam tabel objek dengan cara yang sama seperti saat membuat kueri pada tabel BigQuery lainnya. Namun, kasus penggunaan utama untuk tabel objek adalah membuat data tidak terstruktur dapat diakses untuk analisis. Anda dapat menggunakan BigQuery ML untuk menjalankan inferensi pada tabel objek image dengan model TensorFlow, TensorFlow Lite, dan PyTorch. Anda juga dapat menggunakan fungsi jarak jauh untuk menganalisis data tidak terstruktur dengan hampir semua cara yang Anda inginkan. Misalnya, Anda dapat membuat fungsi jarak jauh yang memungkinkan Anda menganalisis image menggunakan Cloud Vision, atau fungsi jarak jauh yang dapat digunakan untuk mengekstrak metadata dari dokumen PDF menggunakan Apache Tika

Tabel berikut menjelaskan titik integrasi yang dapat Anda gunakan untuk melakukan machine learning pada data tabel objek:

Integrasi Deskripsi Kasus penggunaan Tutorial
Model BigQuery ML yang diimpor Impor model TensorFlow, TensorFlow Lite, atau ONNX ke BigQuery ML untuk menjalankan inferensi lokal di BigQuery . Anda menggunakan model open source atau kustom yang sesuai dengan batasan yang didukung. Tutorial: Menjalankan inferensi pada tabel objek dengan menggunakan model vektor fitur
Cloud Run Functions Gunakan fungsi Cloud Run untuk memanggil layanan atau model yang dihosting. Ini adalah integrasi yang paling umum. Anda menghosting model Anda sendiri di Compute Engine, Google Kubernetes Engine, atau infrastruktur milik pelanggan lainnya.
Fungsi ML.ANNOTATE_IMAGE Menggunakan Cloud Vision API untuk menganotasi gambar. Anda ingin menganotasi gambar menggunakan model terlatih Vision API. Menganotasi gambar dengan fungsi ML.ANNOTATE_IMAGE
Fungsi ML.PROCESS_DOCUMENT Gunakan Document AI API untuk mengekstrak insight dokumen. Anda ingin menggunakan prosesor dokumen kustom atau terlatih Document AI. Memproses dokumen dengan fungsi ML.PROCESS_DOCUMENT
Fungsi ML.TRANSCRIBE Gunakan Speech-to-Text API untuk mentranskripsikan file audio. Anda ingin menggunakan pengenal ucapan kustom atau yang telah dilatih Speech-to-Text. Mentranskripsikan file audio dengan fungsi ML.TRANSCRIBE

Anda dapat membuat tampilan atau tabel dari hasil analisis jika ingin menggabungkan hasil tersebut dengan data terstruktur lainnya. Misalnya, pernyataan berikut akan membuat tabel berdasarkan hasil inferensi:

CREATE TABLE my_dataset.my_inference_results AS
SELECT uri, content_type, vision_feature
FROM ML.PREDICT(
  MODEL my_dataset.vision_model,
  SELECT ML.DECODE_IMAGE(data) AS vision_input
  FROM my_dataset.object_table
);

Setelah tabel dibuat, Anda dapat menggabungkannya dengan tabel lain berdasarkan kolom metadata standar atau kustom, seperti yang ditunjukkan berikut ini:

SELECT a.vision_feature, a.uri, b.description
FROM my_dataset.my_inference_results a
JOIN my_dataset.image_description b
ON a.uri = b.uri;

Anda juga dapat membuat indeks penelusuran untuk mendukung penelusuran atas hasil analisis Anda. Misalnya, pernyataan berikut membuat indeks penelusuran atas data yang diekstrak dari file PDF:

CREATE SEARCH INDEX my_index ON pdf_text_extract(ALL COLUMNS);

Anda kemudian dapat menggunakan indeks untuk menemukan hal yang Anda butuhkan dalam hasil tersebut:

SELECT * FROM pdf_text_extract WHERE SEARCH(pdf_text, 'Google');

Manfaat

Menganalisis data tidak terstruktur secara native di BigQuery akan memberikan manfaat berikut:

  • Solusi ini mengurangi upaya manual dengan memungkinkan Anda mengotomatiskan langkah-langkah prapemrosesan, seperti menyesuaikan ukuran image dengan persyaratan model.
  • Library ini memungkinkan Anda menggunakan antarmuka SQL yang sederhana dan sudah dikenal untuk menangani data tidak terstruktur.
  • Hal ini membantu Anda menghemat biaya dengan memanfaatkan slot BigQuery yang ada, daripada harus menyediakan bentuk komputasi baru.

URL yang Ditandatangani

Untuk mendapatkan akses ke data yang diwakili oleh sebuah objek, buat URL yang ditandatangani. Anda dapat menggunakan URL yang ditandatangani untuk melihat data objek secara langsung, dan juga dapat meneruskan URL yang ditandatangani ke fungsi jarak jauh agar dapat berfungsi dengan data tabel objek.

Gunakan fungsi EXTERNAL_OBJECT_TRANSFORM untuk menghasilkan URL bertanda tangan, seperti yang ditunjukkan dalam contoh berikut:

SELECT uri, signed_url
FROM EXTERNAL_OBJECT_TRANSFORM(TABLE `mydataset.myobjecttable`, ['SIGNED_URL']);

Tindakan ini akan menampilkan hasil yang mirip dengan berikut ini:

---------------------------------------------------------------------------------------------------
|  uri                 | signed_url                                                               |
--------------------------------------------------------------------------------------------------
| gs://mybucket/a.docx | https://storage.googleapis.com/mybucket/a.docx?X-Goog-Signature=abcd&... |
-------------------------------------------------------------------------------------------------
| gs://mybucket/b.pdf  | https://storage.googleapis.com/mybucket/b.pdf?X-Goog-Signature=wxyz&...  |
--------------------------------------------------------------------------------------------------

URL bertanda tangan yang dihasilkan dari tabel objek memungkinkan setiap pengguna atau prosedur yang memilikinya untuk membaca objek yang sesuai. Masa berlaku URL bertanda tangan yang dihasilkan akan berakhir setelah 6 jam. Untuk informasi selengkapnya, lihat URL Bertanda Tangan Cloud Storage.

Kontrol akses

Tabel objek dibuat di atas BigLake, sehingga menggunakan koneksi eksternal berdasarkan akun layanan untuk mengakses data Cloud Storage. Tindakan ini akan memisahkan akses ke tabel dari akses ke penyimpanan objek pokok melalui delegasi akses. Anda memberikan izin pada akun layanan untuk mengakses data dan metadata dari objek dan menampilkannya dalam tabel. Anda memberikan izin hanya kepada pengguna di tabel, tempat Anda dapat mengatur akses data menggunakan Identity and Access Management (IAM) dan keamanan tingkat baris.

Tabel objek bervariasi dari tabel lain yang menggunakan delegasi akses, karena memiliki akses ke baris tabel objek yang akan memberi akses ke konten file yang mendasarinya. Meskipun tidak dapat mengakses objek secara langsung, namun pengguna dapat membuat URL bertanda tangan yang memungkinkan mereka melihat konten file. Misalnya, jika memiliki akses ke baris tabel objek yang mewakili file image flower.jpg, pengguna dapat membuat URL bertanda tangan untuk menampilkan file dan melihat bahwa file tersebut adalah gambar bunga aster.

Menetapkan kebijakan akses tingkat baris pada tabel objek akan membatasi akses pengguna atau grup ke metadata objek di baris yang dipilih, dan juga ke objek yang diwakili oleh baris tersebut. Misalnya, pernyataan berikut memberi pengguna Alice akses hanya ke baris yang mewakili objek yang dibuat sebelum 25 Juni 2022:

CREATE ROW ACCESS POLICY before_20220625
ON my_dataset.my_object_table
GRANT TO ("user:alice@example.com")
FILTER USING (updated < TIMESTAMP("2022-06-25"));

Dengan menerapkan kebijakan akses tingkat baris ini, hasil berikut berlaku untuk Alice:

  • Menjalankan kueri SELECT * FROM my_dataset.my_object_table; hanya akan menampilkan baris yang memiliki nilai updated sebelum 25 Juni 2022.
  • Menjalankan inferensi pada my_dataset.my_object_table hanya menampilkan prediksi untuk objek yang memiliki nilai updated sebelum 25 Juni 2022.
  • Membuat URL bertanda tangan untuk my_dataset.my_object_table hanya akan membuat URL untuk objek yang memiliki nilai updated sebelum 25 Juni 2022.

Anda juga dapat membatasi akses ke baris tabel objek menggunakan metadata kustom. Misalnya, pernyataan berikut membatasi grup users untuk hanya mengakses baris yang objeknya telah diberi tag sebagai tidak berisi informasi identitas pribadi:

CREATE ROW ACCESS POLICY no_pii
ON my_dataset.my_object_table
GRANT TO ("group:users@example.com")
FILTER USING (ARRAY_LENGTH(metadata)=1
AND metadata[OFFSET(0)].name="no_pii")

Model keamanan

Peran organisasi berikut biasanya terlibat dalam mengelola dan menggunakan tabel objek:

  • Administrator data lake. Administrator ini biasanya mengelola kebijakan Identity and Access Management (IAM) pada bucket dan objek Cloud Storage.
  • Administrator data warehouse. Administrator ini biasanya membuat, menghapus, dan mengupdate tabel.
  • Analis data. Analis biasanya membaca data dan menjalankan kueri.

Administrator data lake bertanggung jawab untuk membuat koneksi dan membagikannya dengan administrator data warehouse. Selanjutnya, administrator data warehouse akan membuat tabel, menetapkan kontrol akses yang sesuai, dan membagikan tabel tersebut kepada analis data.

File objek yang didukung

Anda dapat membuat tabel objek pada semua jenis serta ukuran file data tidak terstruktur, dan membuat fungsi jarak jauh untuk menangani semua jenis data tidak terstruktur. Namun, untuk melakukan inferensi dengan menggunakan BigQuery ML, tabel objek hanya dapat menggunakan file image yang memenuhi beberapa persyaratan ukuran dan jenis. Untuk mengetahui informasi selengkapnya, lihat Batasan.

Penyimpanan cache metadata untuk peningkatan performa

Anda dapat menggunakan metadata yang di-cache untuk meningkatkan performa inferensi dan jenis analisis lainnya pada tabel objek. Caching metadata sangat membantu jika tabel objek mereferensikan objek dalam jumlah besar. Metadata tersebut mencakup nama file, informasi partisi, dan metadata fisik dari file seperti jumlah baris. Anda dapat memilih apakah akan mengaktifkan caching metadata di tabel atau tidak. Kueri dengan jumlah file yang besar dan filter partisi Hive akan mendapatkan manfaat terbesar dari caching metadata.

Jika Anda tidak mengaktifkan caching metadata, kueri pada tabel harus membaca sumber data eksternal untuk mendapatkan metadata objek. Membaca data ini akan meningkatkan latensi kueri; membuat daftar jutaan file dari sumber data eksternal dapat memakan waktu beberapa menit. Jika Anda mengaktifkan caching metadata, kueri dapat menghindari pencantuman file dari sumber data eksternal serta dapat mempartisi dan memangkas file dengan lebih cepat.

Ada dua properti yang mengontrol fitur ini:

  • Keusangan maksimum menentukan kapan kueri menggunakan metadata yang disimpan dalam cache.
  • Mode cache metadata menentukan cara metadata dikumpulkan.

Saat mengaktifkan caching metadata, Anda dapat menentukan interval maksimum keusangan metadata yang dapat diterima untuk operasi terhadap tabel. Misalnya, jika Anda menentukan interval 1 jam, operasi terhadap tabel akan menggunakan metadata yang disimpan dalam cache jika telah diperbarui dalam satu jam terakhir. Jika metadata yang disimpan dalam cache lebih lama dari itu, operasi akan kembali untuk mengambil metadata dari Cloud Storage. Anda dapat menentukan interval keusangan antara 30 menit dan 7 hari.

Anda dapat memilih untuk memuat ulang cache secara otomatis atau manual:

  • Untuk pemuatan ulang otomatis, cache dimuat ulang pada interval yang ditentukan sistem, biasanya antara 30 dan 60 menit. Memuat ulang cache secara otomatis merupakan pendekatan yang baik jika file di Cloud Storage ditambahkan, dihapus, atau diubah secara acak. Jika Anda perlu mengontrol waktu pemuatan ulang, misalnya untuk memicu pemuatan ulang di akhir tugas pemuatan transformasi ekstrak, gunakan pemuatan ulang manual.
  • Untuk pemuatan ulang manual, Anda akan menjalankan prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE untuk memuat ulang cache metadata sesuai jadwal yang memenuhi persyaratan Anda. Memperbarui cache secara manual adalah pendekatan yang baik jika file di Cloud Storage ditambahkan, dihapus, atau diubah pada interval yang diketahui, misalnya sebagai output pipeline.

    Jika Anda melakukan beberapa pemuatan ulang manual secara serentak, hanya satu yang akan berhasil.

Cache metadata akan habis masa berlakunya setelah 7 hari jika tidak diperbarui.

Pembaruan cache manual dan otomatis dijalankan dengan prioritas kueri INTERACTIVE.

Jika Anda memilih untuk menggunakan pembaruan otomatis, sebaiknya buat pemesanan, lalu buat tugas dengan jenis tugas BACKGROUND untuk project yang menjalankan tugas pembaruan cache metadata. Hal ini mencegah tugas pembaruan bersaing dengan kueri pengguna untuk resource, dan berpotensi gagal jika tidak tersedia resource yang memadai.

Anda harus mempertimbangkan bagaimana nilai interval keusangan dan mode caching metadata akan berinteraksi sebelum menetapkannya. Perhatikan contoh berikut:

  • Jika Anda memuat ulang cache metadata secara manual untuk sebuah tabel, dan menetapkan interval usang menjadi 2 hari, Anda harus menjalankan prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE setiap 2 hari atau kurang jika menginginkan operasi terhadap tabel agar menggunakan metadata yang disimpan dalam cache.
  • Jika Anda memuat ulang cache metadata secara otomatis untuk sebuah tabel, dan menetapkan interval keusangan ke 30 menit, ada kemungkinan beberapa operasi terhadap tabel dapat dibaca dari Cloud Storage jika pembaruan cache metadata dilakukan sisi yang lebih panjang dari jendela 30 hingga 60 menit seperti biasanya.

Untuk menemukan informasi tentang tugas pemuatan ulang metadata, buat kueri tampilan INFORMATION_SCHEMA.JOBS, seperti yang ditunjukkan dalam contoh berikut:

SELECT *
FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
WHERE job_id LIKE '%metadata_cache_refresh%'
AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR)
ORDER BY start_time DESC
LIMIT 10;

Untuk mempelajari lebih lanjut, lihat Cache metadata.

Untuk mengetahui informasi selengkapnya tentang cara menyetel opsi caching metadata, lihat Membuat tabel objek.

Batasan

  • Tabel objek bersifat hanya baca karena dipetakan ke objek data tidak terstruktur di Cloud Storage. Anda tidak dapat mengubah tabel objek atau mengubah data tabel objek.
  • Dukungan tabel objek tidak tersedia di Legacy SQL, atau lingkungan cloud lainnya seperti AWS dan Microsoft Azure.
  • Jika ingin melakukan inferensi dengan menggunakan BigQuery ML, model dan tabel objek yang Anda gunakan harus memenuhi persyaratan yang dijelaskan dalam Batasan.
  • Kueri yang menyertakan tabel objek tidak dapat mengakses lebih dari 10 GB metadata objek. Misalnya, jika kueri mengakses 100 TB dari kombinasi kolom metadata dalam tabel objek dan data objek melalui URL yang ditandatangani, hanya 10 GB dari 100 TB tersebut yang dapat berasal dari kolom metadata.
  • Tabel objek memiliki batasan yang sama seperti semua tabel eksternal BigQuery lainnya. Untuk mengetahui informasi selengkapnya, lihat Kuota.
  • Kueri atas tabel objek memiliki batasan yang sama seperti semua kueri BigQuery lainnya. Untuk mengetahui informasi selengkapnya, lihat Kuota.
  • Fungsi jarak jauh yang memproses data tidak terstruktur dari tabel objek memiliki batasan yang sama seperti semua fungsi jarak jauh lainnya.
  • URL bertanda tangan yang dihasilkan untuk objek dalam tabel objek akan habis masa berlakunya setelah 6 jam, yang merupakan batas waktu eksekusi kueri.
  • Inferensi dengan BigQuery ML tidak didukung dengan harga sesuai permintaan atau dengan edisi Standar.
  • Fungsi berikut tidak didukung dengan harga sesuai permintaan atau dengan edisi Standar:

Biaya

Biaya dikaitkan dengan aspek tabel objek berikut:

Jika memiliki reservasi slot, Anda tidak akan dikenai biaya untuk membuat kueri tabel eksternal. Sebagai gantinya, slot digunakan untuk kueri ini.

Tabel berikut menunjukkan pengaruh model penetapan harga Anda terhadap penerapan biaya ini:


Harga sesuai permintaan

Edisi Standard, Enterprise, dan Enterprise Plus

Kueri

Anda ditagih untuk byte yang diproses oleh kueri pengguna.

Slot dalam penetapan pemesanan dengan jenis tugas QUERY digunakan selama waktu kueri.

Memuat ulang cache metadata secara manual.

Anda ditagih untuk byte yang diproses untuk memuat ulang cache.

Slot dalam penetapan pemesanan dengan jenis tugas QUERY digunakan selama pemuatan ulang cache.

Memuat ulang cache metadata secara otomatis.

Anda ditagih untuk byte yang diproses untuk memuat ulang cache.

Slot dalam penetapan pemesanan dengan jenis tugas BACKGROUND digunakan selama pemuatan ulang cache.

Jika tidak ada pemesanan BACKGROUND yang tersedia untuk memuat ulang cache metadata, BigQuery akan otomatis menggunakan slot di pemesanan QUERY jika Anda menggunakan edisi Enterprise atau Enterprise Plus.

Anda juga dikenai biaya untuk penyimpanan dan akses data oleh Cloud Storage, Amazon S3, dan Azure Blob Storage, sesuai dengan panduan harga setiap produk.

Menggunakan tabel objek dengan Analytics Hub

Tabel objek kompatibel dengan Analytics Hub. Set data yang berisi tabel objek dapat dipublikasikan sebagai listingan Analytics Hub. Pelanggan Analytics Hub dapat berlangganan listingan ini, yang menyediakan set data hanya baca, yang disebut set data tertaut, di project mereka. Pelanggan dapat membuat kueri semua tabel dalam set data tertaut, termasuk semua tabel objek. Untuk mengetahui informasi selengkapnya, lihat Berlangganan ke listingan.

Langkah berikutnya