Menganalisis tabel objek menggunakan fungsi jarak jauh

Dokumen ini menjelaskan cara menganalisis data tidak terstruktur dalam tabel objek menggunakan fungsi jarak jauh.

Ringkasan

Anda dapat menganalisis data tidak terstruktur yang direpresentasikan oleh tabel objek menggunakan fungsi jarak jauh. Dengan fungsi jarak jauh, Anda dapat memanggil fungsi yang berjalan di Cloud Functions atau Cloud Run, yang dapat diprogram untuk mengakses resource seperti:

  • Model AI terlatih dari Google, termasuk Cloud Vision API dan Document AI.
  • Library open source seperti Apache Tika.
  • Model kustom Anda sendiri.

Untuk menganalisis data tabel objek menggunakan fungsi jarak jauh, Anda harus membuat dan meneruskan URL yang ditandatangani untuk objek dalam tabel objek saat memanggil fungsi jarak jauh. URL yang ditandatangani ini yang memberikan akses fungsi jarak jauh ke objek tersebut.

Izin yang diperlukan

  • Untuk membuat resource koneksi yang digunakan oleh fungsi jarak jauh, Anda memerlukan izin berikut:

    • bigquery.connections.create
    • bigquery.connections.get
    • bigquery.connections.list
    • bigquery.connections.update
    • bigquery.connections.use
    • bigquery.connections.delete
  • Untuk membuat fungsi jarak jauh, Anda memerlukan izin yang terkait dengan peran Developer Cloud Functions atau Developer Cloud Run.

  • Untuk memanggil fungsi jarak jauh, Anda memerlukan izin yang dijelaskan dalam Fungsi jarak jauh.

  • Untuk menganalisis tabel objek dengan fungsi jarak jauh, Anda memerlukan izin bigquery.tables.getData pada tabel objek.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Aktifkan API BigQuery, BigQuery Connection API, Cloud Functions.

    Mengaktifkan API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Aktifkan API BigQuery, BigQuery Connection API, Cloud Functions.

    Mengaktifkan API

  8. Pastikan administrator BigQuery Anda telah membuat koneksi dan menyiapkan akses ke Cloud Storage.

Membuat fungsi jarak jauh

Untuk petunjuk umum tentang cara membuat fungsi jarak jauh, lihat Bekerja dengan fungsi jarak jauh.

Saat membuat fungsi jarak jauh untuk menganalisis data tabel objek, Anda harus meneruskan URL yang ditandatangani yang telah dihasilkan untuk objek dalam tabel objek. Anda dapat melakukannya menggunakan parameter input dengan jenis data STRING. URL yang ditandatangani tersedia untuk fungsi jarak jauh sebagai data input di kolom calls dari permintaan POST HTTP. Contoh permintaan adalah:

{
  // Other fields omitted.
  "calls": [
    ["https://storage.googleapis.com/mybucket/1.pdf?X-Goog-SignedHeaders=abcd"],
    ["https://storage.googleapis.com/mybucket/2.pdf?X-Goog-SignedHeaders=wxyz"]
  ]
}

Anda dapat membaca objek dalam fungsi jarak jauh menggunakan metode yang membuat permintaan GET HTTP ke URL yang ditandatangani. Fungsi jarak jauh dapat mengakses objek karena URL yang ditandatangani berisi informasi autentikasi dalam string kuerinya.

Saat Anda menentukan pernyataan CREATE FUNCTION untuk fungsi jarak jauh, sebaiknya setel opsi max_batching_rows ke 1 untuk menghindari waktu tunggu habis Cloud Functions dan tingkatkan paralelisme pemrosesan.

Contoh

Contoh kode Python Cloud Functions berikut membaca objek penyimpanan dan menampilkan panjang kontennya ke BigQuery:

import functions_framework
import json
import urllib.request

@functions_framework.http
def object_length(request):
  calls = request.get_json()['calls']
  replies = []
  for call in calls:
    object_content = urllib.request.urlopen(call[0]).read()
    replies.append(len(object_content))
  return json.dumps({'replies': replies})

Setelah di-deploy, fungsi ini akan memiliki endpoint yang mirip dengan https://us-central1-myproject.cloudfunctions.net/object_length.

Contoh berikut menunjukkan cara membuat fungsi jarak jauh BigQuery berdasarkan fungsi Cloud Functions ini:

CREATE FUNCTION mydataset.object_length(signed_url STRING) RETURNS INT64
REMOTE WITH CONNECTION `us.myconnection`
OPTIONS(
  endpoint = "https://us-central1-myproject.cloudfunctions.net/object_length",
  max_batching_rows = 1
);

Untuk panduan langkah demi langkah, lihat Tutorial: Menganalisis tabel objek dengan fungsi jarak jauh.

Memanggil fungsi jarak jauh

Untuk memanggil fungsi jarak jauh pada data tabel objek, rujuk fungsi jarak jauh dalam select_list kueri, lalu panggil EXTERNAL_OBJECT_TRANSFORM dalam klausa FROM untuk menghasilkan URL yang ditandatangani bagi objek.

Contoh berikut menunjukkan sintaksis pernyataan standar:

SELECT uri, function_name(signed_url) AS function_output
FROM EXTERNAL_OBJECT_TRANSFORM(TABLE my_dataset.object_table, ["SIGNED_URL"])
LIMIT 10000;

Contoh berikut menunjukkan cara memproses hanya sebagian konten tabel objek dengan fungsi jarak jauh:

SELECT uri, function_name(signed_url) AS function_output
FROM EXTERNAL_OBJECT_TRANSFORM(TABLE my_dataset.object_table, ["SIGNED_URL"])
WHERE content_type = "application/pdf";

Langkah selanjutnya