Analizzare le tabelle di oggetti utilizzando funzioni remote
Questo documento descrive come analizzare i dati non strutturati in tabelle di oggetti utilizzando funzioni remote.
Panoramica
Puoi analizzare i dati non strutturati rappresentati da una tabella di oggetti utilizzando una funzione remota. Una funzione remota consente di chiamare una funzione in esecuzione Cloud Functions o Cloud Run, a cui puoi programmare per accedere di risorse come:
- I 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 di oggetti utilizzando una funzione remota, è necessario generare e trasmettere URL firmati per nella tabella degli oggetti quando chiami la funzione remota. Questi hanno firmato Gli URL sono gli elementi 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 alla 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, è necessario il Autorizzazione
bigquery.tables.getData
per la tabella dell'oggetto.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API BigQuery, BigQuery Connection API, Cloud Functions.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API BigQuery, BigQuery Connection API, Cloud Functions.
- Assicurati che l'amministratore BigQuery abbia creato una connessione e imposta a Cloud Storage.
Crea una funzione remota
Per istruzioni generali sulla creazione di una funzione remota, consulta Utilizzo delle funzioni da remoto.
Quando crei una funzione remota per analizzare i dati della tabella degli oggetti, devi
trasmettere URL firmati
generate per gli oggetti nella tabella. Puoi farlo
utilizzando un parametro di input con un tipo di dati STRING
. Gli URL firmati sono
resi disponibili alla funzione remota come dati di input
Campo calls
della richiesta HTTP POST
.
Ecco 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 funzione remota utilizzando un metodo che rende
una richiesta GET
HTTP all'URL firmato. La funzione remota può accedere
perché l'URL firmato contiene informazioni di autenticazione nel suo
stringa di query.
Se specifichi
Dichiarazione CREATE FUNCTION
per la funzione remota, ti consigliamo di impostare max_batching_rows
su 1 per
evita il timeout di Cloud Functions
e aumentare il parallelismo dell'elaborazione.
Esempio
Il seguente esempio di codice Python di Cloud Functions legge lo spazio di archiviazione oggetti e restituisce la lunghezza del contenuto 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})
Deployment eseguito, questa funzione avrebbe un endpoint simile
https://us-central1-myproject.cloudfunctions.net/object_length
.
L'esempio seguente mostra come creare un progetto remoto BigQuery basata su questa funzione di Cloud 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 istruzioni dettagliate, vedi Tutorial: analisi di una tabella di oggetti con una funzione remota.
Richiama una funzione remota
Per chiamare una funzione remota sui dati della tabella degli oggetti, fai riferimento al comando
nel
select_list
della query e quindi richiamare
Funzione EXTERNAL_OBJECT_TRANSFORM
nel
FROM
clausola
per generare gli URL firmati per gli oggetti.
L'esempio seguente mostra la tipica sintassi delle istruzioni:
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 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 di oggetti immagine.
- Prova ad analizzare una tabella di oggetti utilizzando una funzione remota.