Menganalisis tabel objek menggunakan fungsi jarak jauh
Anda dapat menganalisis tabel objek dengan fungsi jarak jauh untuk mengekstrak insight dari data tidak terstruktur menggunakan alat dan library eksternal. Mengintegrasikan kueri Anda dengan Cloud Run atau Cloud Run Functions memungkinkan Anda menerapkan model AI terlatih Google, library open source, atau model kustom Anda sendiri langsung ke data BigQuery.
Untuk menganalisis data tabel objek menggunakan fungsi jarak jauh, Anda harus membuat dan meneruskan URL bertanda tangan untuk objek dalam tabel objek saat memanggil fungsi jarak jauh. URL yang ditandatangani ini 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.createbigquery.connections.getbigquery.connections.listbigquery.connections.updatebigquery.connections.usebigquery.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.getDatapada tabel objek.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery, BigQuery Connection API, Cloud Run functions APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery, BigQuery Connection API, Cloud Run functions APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.- 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 bertanda tangan yang telah dihasilkan untuk objek dalam tabel objek. Anda dapat melakukannya
menggunakan parameter input dengan jenis data STRING. URL bertanda tangan
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 bertanda tangan. Fungsi jarak jauh dapat mengakses objek karena URL bertanda tangan 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 Run Functions
dan tingkatkan paralelisme pemrosesan.
Contoh
Contoh kode Python fungsi Cloud Run 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 Run 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 fungsi EXTERNAL_OBJECT_TRANSFORM dalam klausa FROM untuk menghasilkan URL bertanda tangan 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 berikutnya
Pelajari cara menjalankan inferensi pada tabel objek gambar.