Analizza le tabelle di oggetti utilizzando le funzioni remote
Questo documento descrive come analizzare i dati non strutturati nelle tabelle degli oggetti utilizzando le funzioni remote.
Panoramica
Puoi analizzare i dati non strutturati rappresentati da una tabella degli oggetti utilizzando una funzione remota. Una funzione remota consente di chiamare una funzione in esecuzione su Cloud Run Functions o Cloud Run, che puoi programmare per accedere a risorse come:
- Modelli di AI preaddestrati di Google, tra cui l'API Cloud Vision e Document AI.
- Librerie open source come Apache Tika.
- I tuoi modelli personalizzati.
Per analizzare i dati della tabella degli oggetti utilizzando una funzione remota, devi generare e trasmettere URL firmati per gli oggetti nella tabella degli oggetti quando chiami la funzione remota. Questi URL firmati sono quelli che concedono alla funzione remota l'accesso agli oggetti.
Autorizzazioni obbligatorie
Per creare la risorsa di connessione utilizzata dalla funzione remota, devi disporre delle seguenti autorizzazioni:
bigquery.connections.create
bigquery.connections.get
bigquery.connections.list
bigquery.connections.update
bigquery.connections.use
bigquery.connections.delete
Per creare una funzione remota, devi disporre delle autorizzazioni associate ai ruoli Sviluppatore Cloud Functions o Sviluppatore Cloud Run.
Per richiamare una funzione remota, devi disporre delle autorizzazioni descritte in Funzioni remote.
Per analizzare una tabella di oggetti con una funzione remota, devi disporre dell'autorizzazione
bigquery.tables.getData
per la tabella di oggetti.
Prima di iniziare
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, Cloud Run functions APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, Cloud Run functions APIs.
- Assicurati che l'amministratore BigQuery abbia creato una connessione e configurato l'accesso a Cloud Storage.
Creare una funzione remota
Per istruzioni generali sulla creazione di una funzione remota, vedi Utilizzare le funzioni remote.
Quando crei una funzione remota per analizzare i dati della tabella degli oggetti, devi
trasmettere URL firmati
generati per gli oggetti nella tabella degli oggetti. Puoi farlo
utilizzando un parametro di input con un tipo di dati STRING
. Gli URL firmati vengono resi disponibili alla funzione remota come dati di input nel campo calls
della richiesta HTTP POST
.
Un esempio di richiesta è:
{
// 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"]
]
}
Puoi leggere un oggetto nella tua funzione remota utilizzando un metodo che esegue
una richiesta HTTP GET
all'URL firmato. La funzione remota può accedere all'oggetto perché l'URL firmato contiene informazioni di autenticazione nella relativa stringa di query.
Quando specifichi l'istruzione CREATE FUNCTION
per la funzione remota, ti consigliamo di impostare l'opzione max_batching_rows
su 1 per evitare il timeout di Cloud Run Functions e aumentare il parallelismo dell'elaborazione.
Esempio
Il seguente esempio di codice Python per le funzioni Cloud Run legge gli oggetti di archiviazione e restituisce la lunghezza dei contenuti a 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})
Se fosse stato eseguito il deployment, questa funzione avrebbe avuto un endpoint simile a
https://us-central1-myproject.cloudfunctions.net/object_length
.
L'esempio seguente mostra come creare una funzione remota BigQuery basata su questa funzione Cloud Run Functions:
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 );
Per una guida passo passo, vedi Tutorial: analizza una tabella di oggetti con una funzione remota.
Chiama una funzione remota
Per chiamare una funzione remota sui dati della tabella degli oggetti, fai riferimento alla funzione remota in select_list
della query, quindi chiama la funzione EXTERNAL_OBJECT_TRANSFORM
in FROM
per generare gli URL firmati per gli oggetti.
Il seguente esempio mostra la sintassi tipica dell'istruzione:
SELECT uri, function_name(signed_url) AS function_output FROM EXTERNAL_OBJECT_TRANSFORM(TABLE my_dataset.object_table, ["SIGNED_URL"]) LIMIT 10000;
L'esempio seguente mostra come elaborare solo un sottoinsieme dei contenuti della tabella degli oggetti con una funzione remota:
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";
Passaggi successivi
Scopri come eseguire l'inferenza sulle tabelle degli oggetti immagine.