Menentukan kolom ObjectRef dalam skema tabel
Dokumen ini menjelaskan cara menentukan skema tabel standar BigQuery dengan kolom yang dapat menyimpan nilai ObjectRef.
Nilai ObjectRef memberikan metadata dan informasi koneksi untuk objek di Cloud Storage. Gunakan nilai ObjectRef jika Anda perlu mengintegrasikan data tidak terstruktur ke dalam tabel standar. Misalnya, di tabel produk, Anda dapat menyimpan gambar produk di baris yang sama dengan informasi produk lainnya dengan menambahkan kolom yang berisi nilai ObjectRef. Anda dapat
menyimpan nilai ObjectRef di kolom STRUCT yang menggunakan format
ObjectRef,
yaitu
STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan data multimodal, lihat
Menganalisis data multimodal.
Untuk mengetahui tutorial yang menunjukkan cara menggunakan data ObjectRef, lihat
Menganalisis data multimodal dengan SQL.
Prasyarat
Untuk mengisi dan memperbarui nilai ObjectRef dalam tabel standar, tabel harus memiliki kolom STRING yang berisi informasi URI untuk objek Cloud Storage terkait.
Anda harus memiliki bucket Cloud Storage yang berisi objek yang sama dengan yang diidentifikasi dalam data URI tabel standar target.
Mempertahankan nilai ObjectRef
Tabel objek yang Anda buat memiliki kolom ref yang berisi nilai ObjectRef untuk objek tertentu. Jika memiliki tabel objek yang ada, Anda dapat menggabungkannya dengan tabel standar di kolom URI objek untuk mengisi dan memperbarui nilai ObjectRef. Cara ini lebih efisien karena menghindari pengambilan ulang metadata dari Cloud Storage untuk membuat nilai ObjectRef baru.
Demikian pula, jika sudah memiliki set data
Storage Insights untuk metadata objek,
Anda dapat menggunakan kolom ref.uri atau selfLink untuk menggabungkan tabel standar
dengan set data Storage Insights guna mengisi dan memperbarui nilai ObjectRef.
Nilai ObjectRef yang dibuat di set data Storage Insights tidak memiliki pengotorisasi. Untuk membuat kueri objek ini, Anda harus memiliki
akses langsung ke objek
atau menambahkan pengotorisasi ke ObjectRef untuk menggunakan
akses yang didelegasikan.
Jika tidak memiliki tabel objek atau set data Storage Insights yang ada,
Anda dapat menggunakan
OBJ.MAKE_REF
fungsi untuk mengisi dan memperbarui ObjectRef nilai dengan mengambil metadata objek
langsung dari Cloud Storage. Pendekatan ini mungkin kurang skalabel, karena memerlukan pengambilan metadata objek dari Cloud Storage.
Membuat kolom ObjectRef
Untuk membuat dan mengisi kolom ObjectRef dalam tabel standar, pilih salah satu opsi berikut:
Fungsi SQL
Buat dan isi kolom ObjectRef berdasarkan output dari fungsi OBJ.MAKE_REF:
Di Google Cloud konsol, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE OR REPLACE TABLE PROJECT_ID.DATASET_ID.TABLE_NAME AS SELECT TABLE_NAME.*, OBJ.MAKE_REF(uri, 'CONNECTION_ID') AS objectrefcolumn FROM DATASET_ID.TABLE_NAME;
Ganti kode berikut:
PROJECT_ID: project ID Anda. Anda dapat melewati argumen ini jika membuat tabel di project saat ini.DATASET_ID: ID set data yang Anda buat.TABLE_NAME: nama tabel standar yang Anda buat ulang.CONNECTION_ID: NilaiSTRINGyang berisi koneksi resource Cloud yang dapat digunakan layanan untuk mengakses objek di Cloud Storage, dalam formatlocation.connection_id. Misalnya,us-west1.myconnection. Anda bisa mendapatkan ID koneksi dengan melihat detail koneksi di Google Cloud konsol dan menyalin nilai di bagian terakhir ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di Connection ID. Misalnya,projects/myproject/locations/connection_location/connections/myconnection.Anda harus memberikan peran Pengguna Objek Storage (
roles/storage.objectUser) ke akun layanan koneksi di bucket Cloud Storage mana pun tempat Anda menggunakannya untuk mengakses objek.Koneksi harus berada di project dan region yang sama dengan kueri tempat Anda memanggil fungsi.
Klik Run.
Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Tabel objek
Buat dan isi kolom ObjectRef berdasarkan data dari kolom ref tabel objek:
Di Google Cloud konsol, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE OR REPLACE TABLE PROJECT_ID.DATASET_ID.TABLE_NAME AS SELECT TABLE_NAME.*, OBJECT_TABLE.ref AS objectrefcolumn FROM DATASET_ID.TABLE_NAME INNER JOIN DATASET_ID.OBJECT_TABLE ON OBJECT_TABLE.uri = TABLE_NAME.uri;
Ganti kode berikut:
PROJECT_ID: project ID Anda. Anda dapat melewati argumen ini jika membuat tabel di project saat ini.DATASET_ID: ID set data yang Anda buat.TABLE_NAME: nama tabel standar yang Anda buat ulang.OBJECT_TABLE: nama tabel objek yang berisi data objek yang ingin Anda integrasikan ke dalam tabel standar.
Klik Run.
Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Membuat kolom ARRAY<ObjectRef>
Anda dapat membuat kolom
ARRAY<STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>>
untuk berisi array nilai ObjectRef. Misalnya, Anda dapat membagi video menjadi gambar terpisah, lalu menyimpan gambar ini sebagai array nilai ObjectRef.
Anda dapat menggunakan fungsi
ARRAY_AGG
untuk menggabungkan array nilai ObjectRef, termasuk menggunakan klausa ORDER BY
untuk mempertahankan urutan objek jika diperlukan. Anda dapat menggunakan operator
UNNEST
untuk mengurai array nilai ObjectRef menjadi nilai ObjectRef individual,
termasuk menggunakan klausa WITH OFFSET untuk mempertahankan urutan objek jika diperlukan.
Anda dapat menggunakan metadata objek, seperti jalur URI dan nama file objek, untuk memetakan nilai ObjectRef yang mewakili bagian objek ke nilai ObjectRef yang mewakili objek asli.
Untuk melihat contoh cara menggunakan array nilai ObjectRef, lihat bagian
Memproses data multimodal yang diurutkan menggunakan nilai ARRAY<ObjectRef>
dari tutorial
Menganalisis data multimodal dengan SQL.
Memperbarui kolom ObjectRef
Untuk memperbarui kolom ObjectRef dalam tabel standar, pilih salah satu opsi berikut:
Tabel objek
Perbarui kolom ObjectRef menggunakan data dari kolom ref tabel objek:
Di Google Cloud konsol, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME SET objectrefcolumn = (SELECT ref FROM DATASET_ID.OBJECT_TABLE WHERE OBJECT_TABLE.uri = TABLE_NAME.uri) WHERE uri != "";
Ganti kode berikut:
PROJECT_ID: project ID Anda. Anda dapat melewati argumen ini jika membuat tabel di project saat ini.DATASET_ID: ID set data yang Anda buat.TABLE_NAME: nama tabel standar yang Anda buat ulang.OBJECT_TABLE: nama tabel objek yang berisi data objek yang sama dengan kolomObjectReftabel standar.
Klik Run.
Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Fungsi SQL
Perbarui kolom ObjectRef menggunakan output dari fungsi OBJ.FETCH_METADATA dan OBJ.MAKE_REF:
Di Google Cloud konsol, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME SET objectrefcolumn = (SELECT OBJ.MAKE_REF(uri, 'CONNECTION_ID')) WHERE uri != "";
Ganti kode berikut:
PROJECT_ID: project ID Anda. Anda dapat melewati argumen ini jika membuat tabel di project saat ini.DATASET_ID: ID set data yang Anda buat.TABLE_NAME: nama tabel standar yang Anda buat ulang.CONNECTION_ID: NilaiSTRINGyang berisi koneksi resource Cloud yang dapat digunakan layanan untuk mengakses objek di Cloud Storage, dalam formatlocation.connection_id. Misalnya,us-west1.myconnection. Anda bisa mendapatkan ID koneksi dengan melihat detail koneksi di Google Cloud konsol dan menyalin nilai di bagian terakhir ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di Connection ID. Misalnya,projects/myproject/locations/connection_location/connections/myconnection.Anda harus memberikan peran Pengguna Objek Storage (
roles/storage.objectUser) ke akun layanan koneksi di bucket Cloud Storage mana pun tempat Anda menggunakannya untuk mengakses objek.Koneksi harus berada di project dan region yang sama dengan kueri tempat Anda memanggil fungsi.
Klik Run.
Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.