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
saat Anda perlu mengintegrasikan data tidak terstruktur ke dalam tabel standar. Misalnya, dalam 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
dalam kolom STRUCT
yang menggunakan
ObjectRef
format,
yaitu
STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>
.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan data multimodal, lihat Menganalisis data multimodal.
Untuk tutorial yang menunjukkan cara menggunakan data ObjectRef
, lihat
Menganalisis data multimodal dengan SQL.
Untuk mengetahui informasi tentang cara menggunakan data multimodal di Python, lihat Menganalisis data multimodal di Python dengan BigQuery DataFrames.
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.
Jika ingin
mempertahankan nilai ObjectRef
dalam tabel standar
dengan menggunakan tabel objek, Anda juga harus memiliki tabel objek yang merepresentasikan objek dalam bucket tersebut.
Mempertahankan nilai ObjectRef
Anda dapat menggunakan tabel objek untuk mengisi dan memperbarui nilai ObjectRef
dalam
tabel standar. Jika Anda berada dalam daftar yang diizinkan untuk pratinjau, semua tabel objek yang Anda buat akan memiliki kolom ref
yang berisi nilai ObjectRef
untuk objek tertentu. Anda dapat menggunakan
URI objek untuk menggabungkan tabel standar ke tabel objek guna mengisi
dan memperbarui nilai ObjectRef
. Kami merekomendasikan pendekatan ini untuk skalabilitas, karena tidak perlu mengambil metadata objek dari Cloud Storage.
Jika tidak ingin membuat tabel objek, Anda dapat menggunakan fungsi
OBJ.FETCH_METADATA
dan
OBJ.MAKE_REF
untuk mengisi dan memperbarui nilai ObjectRef
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:
Tabel objek
Buat dan isi kolom ObjectRef
berdasarkan data dari kolom
tabel objek 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.*, 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 artikel Menjalankan kueri interaktif.
Fungsi SQL
Buat dan isi kolom ObjectRef
berdasarkan output dari fungsi
OBJ.FETCH_METADATA
dan 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.FETCH_METADATA(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
: NilaiSTRING
yang 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 konsol Google Cloud dan menyalin nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi. Misalnya,projects/myproject/locations/connection_location/connections/myconnection
.Anda harus memberikan peran Storage Object User (
roles/storage.objectUser
) ke akun layanan koneksi di bucket Cloud Storage 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 artikel 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 beberapa 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 perlu. Anda dapat menggunakan
operator UNNEST
untuk mengurai array nilai ObjectRef
menjadi nilai ObjectRef
individual,
termasuk menggunakan klausa WITH OFFSET
untuk mempertahankan urutan objek jika perlu.
Anda dapat menggunakan metadata objek, seperti jalur URI dan nama file objek, untuk memetakan nilai ObjectRef
yang merepresentasikan potongan objek ke nilai ObjectRef
yang merepresentasikan objek asli.
Untuk melihat contoh cara menggunakan array nilai ObjectRef
, lihat bagian
Memproses data multimodal yang diurutkan menggunakan nilai ARRAY<ObjectRef>
dalam 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 tabel objek ref
:
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 kolom tabel standarObjectRef
.
Klik
Run.
Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat artikel 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.FETCH_METADATA(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
: NilaiSTRING
yang 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 konsol Google Cloud dan menyalin nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi. Misalnya,projects/myproject/locations/connection_location/connections/myconnection
.Anda harus memberikan peran Storage Object User (
roles/storage.objectUser
) ke akun layanan koneksi di bucket Cloud Storage 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 artikel Menjalankan kueri interaktif.
Langkah berikutnya
- Menganalisis data multimodal.
- Menganalisis data multimodal dengan SQL.
- Menganalisis data multimodal di Python dengan BigQuery DataFrames.