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 di kolom STRUCT yang menggunakan format ObjectRef, yaitu STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>.

Untuk 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 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 menggunakan tabel objek, Anda juga harus memiliki tabel objek yang mewakili objek dalam bucket tersebut.

Mempertahankan nilai ObjectRef

Anda dapat menggunakan tabel objek untuk mengisi dan memperbarui nilai ObjectRef dalam tabel standar. Jika Anda tercantum dalam daftar yang diizinkan untuk pratinjau, setiap tabel objek yang Anda buat 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. Sebaiknya gunakan 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 ref tabel objek:

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

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

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

Fungsi SQL

Buat dan isi kolom ObjectRef berdasarkan output dari fungsi OBJ.FETCH_METADATA dan OBJ.MAKE_REF:

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. 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: Nilai STRING yang berisi Koneksi resource cloud yang dapat digunakan layanan untuk mengakses objek di Cloud Storage, dalam format location.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 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 mana pun tempat Anda menggunakannya untuk mengakses objek.

      Koneksi harus berada di project dan region yang sama dengan kueri tempat Anda memanggil fungsi.

  3. Klik Run.

Untuk 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 mengelompokkan 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 setiap nilai ObjectRef, 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 potongan 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> 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 ref tabel objek:

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. 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 ObjectRef tabel standar.

  3. Klik Run.

Untuk 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:

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. 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: Nilai STRING yang berisi Koneksi resource cloud yang dapat digunakan layanan untuk mengakses objek di Cloud Storage, dalam format location.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 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 mana pun tempat Anda menggunakannya untuk mengakses objek.

      Koneksi harus berada di project dan region yang sama dengan kueri tempat Anda memanggil fungsi.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

Langkah berikutnya