Introduzione alle tabelle di oggetti
Questo documento descrive le tabelle di oggetti, che sono tabelle di sola lettura di oggetti di dati non strutturati che risiedono in Cloud Storage.
Le tabelle degli oggetti consentono di analizzare i dati non strutturati in di archiviazione ideale in Cloud Storage. Puoi eseguire analisi con funzioni remote eseguire l'inferenza utilizzando BigQuery ML e poi unire i risultati operazioni con gli altri dati strutturati in BigQuery.
Come per le tabelle BigLake, le tabelle di oggetti utilizzano la delega di accesso, che disaccoppia l'accesso alla tabella degli oggetti dall'accesso oggetti Cloud Storage. Un connessione esterna associati a un account di servizio vengono utilizzati per la connessione a Cloud Storage, quindi devi solo concedere agli utenti l'accesso alla tabella degli oggetti. Questo consente di applicare la sicurezza a livello di riga e gestire a quali oggetti hanno accesso gli utenti.
Schema della tabella degli oggetti
Una tabella di oggetti fornisce un indice di metadati sugli oggetti di dati non strutturati in di un bucket Cloud Storage specificato. Ogni riga della tabella corrisponde a un oggetto e le colonne della tabella corrispondono metadati dell'oggetto generati da Cloud Storage, inclusi eventuali metadati personalizzati.
Una tabella di oggetti contiene anche una pseudocolonna data
che rappresenta il file
contenuti in byte non elaborati, che vengono compilati automaticamente al momento della creazione della tabella dell'oggetto.
Questa pseudocolonna viene utilizzata
Funzione ML.DECODE_IMAGE
quando esegui l'inferenza sui dati immagine. Non puoi includere la pseudocolonna data
nelle query e non viene visualizzato come parte dello schema della tabella degli oggetti.
La seguente tabella descrive lo schema fisso utilizzato dalle tabelle di oggetti:
Nome campo | Tipo | Modalità | Descrizione |
---|---|---|---|
uri |
STRINGA | NULLABLE | uri : l'URI (Uniform Resource Identifier) del
, nel formato
gs://bucket_name/[folder_name/]object_name . |
generation |
INTEGER | NULLABLE | La generazione di questo oggetto, che identifica la versione dell'oggetto. |
content_type |
STRINGA | NULLABLE | Il parametro Content-Type dei dati oggetto, che identifica il tipo di contenuto multimediale. Se viene archiviato senza un valore Content-Type, viene pubblicato come flusso di applicazione/ottettore. |
size |
INTEGER | NULLABLE | La Contenuti-Lunghezza dei dati in byte. |
md5_hash |
STRINGA | NULLABLE | L'hash MD5 dei dati, codificati con base64. Per ulteriori informazioni sull'utilizzo dell'hash MD5, consulta Metadati degli oggetti Cloud Storage. |
updated |
TIMESTAMP | NULLABLE | L'ultima volta che sono stati modificati i metadati dell'oggetto. |
metadata |
RECORD | REPEATED | Metadati personalizzati per
. Ogni metadati è rappresentato
come coppia chiave-valore nell'account secondario (metadata.)name e
(metadata.)value campi del campo metadata . |
(metadata.)name |
STRINGA | NULLABLE | Chiave di una singola voce di metadati. |
(metadata.)value |
STRINGA | NULLABLE | Valore in una singola voce di metadati. |
Le righe di una tabella di oggetti sono simili alle seguenti:
------------------------------------------------------------------------------------------------------------------------------------------------
| uri | generation | content_type | size | md5_hash | updated | metadata...name | metadata...value |
—-----------------------------------------------------------------------------------------------------------------------------------------------
| gs://mybucket/a.jpeg | 165842… | image/jpeg | 26797 | 8c33be10f… | 2022-07-21 17:35:40.148000 UTC | null | null |
—-----------------------------------------------------------------------------------------------------------------------------------------------
| gs://mybucket/b.bmp | 305722… | image/bmp | 57932 | 44eb90cd1… | 2022-05-14 12:09:38.114000 UTC | null | null |
—-----------------------------------------------------------------------------------------------------------------------------------------------
Casi d'uso
Puoi eseguire query sui metadati in una tabella di oggetti nello stesso modo in cui qualsiasi altra tabella BigQuery. Tuttavia, il caso d'uso principale nel rendere i dati non strutturati accessibili per l'analisi. Puoi utilizzare BigQuery ML per eseguire l'inferenza sull'oggetto immagine tabelle con TensorFlow, modelli TensorFlow Lite e PyTorch. Puoi usare anche il telecomando funzioni per analizzare dati non strutturati praticamente in tutti i modi che vuoi ottenere. Ad esempio, potresti creare una funzione remota che ti consenta di analizzare le immagini con Cloud Vision o un'applicazione che ti consente di estrarre metadati da documenti PDF utilizzando Apache Tika.
La tabella seguente descrive i punti di integrazione che puoi usare per eseguire apprendimento sui dati delle tabelle di oggetti:
Integrazione | Descrizione | Caso d'uso | Tutorial |
---|---|---|---|
Modelli BigQuery ML importati | Importa i modelli TensorFlow, TensorFlow Lite o ONNX in BigQuery ML per eseguire l'inferenza locale in BigQuery . | Stai utilizzando modelli open source o personalizzati che rientrano nelle limitazioni supportate. | Tutorial: esegui l'inferenza su una tabella di oggetti utilizzando un modello di vettore di caratteristiche |
Cloud Functions | Utilizzare Cloud Functions per chiamare servizi o modelli ospitati. Questa è l'integrazione più generica. | Stai ospitando autonomamente i tuoi modelli su Compute Engine, Google Kubernetes Engine o un'altra infrastruttura di proprietà del cliente. | |
La funzione ML.ANNOTATE_IMAGE |
Utilizza l'API Cloud Vision per annotare le immagini. | Vuoi annotare le immagini utilizzando un modello preaddestrato dell'API Vision. | Annota le immagini con la funzione ML.ANNOTATE_IMAGE |
La funzione ML.PROCESS_DOCUMENT |
Utilizza l'API Document AI per estrarre insight dai documenti. | Vuoi utilizzare processori di documenti preaddestrati o personalizzati Document AI. | Elaborare documenti con la funzione ML.PROCESS_DOCUMENT |
La funzione ML.TRANSCRIBE |
Usa l'API Speech-to-Text per trascrivere i file audio. | Vuoi utilizzare riconoscimenti vocali preaddestrati o personalizzati di Speech-to-Text. | Trascrivere i file audio con la funzione ML.TRANSCRIBE |
Se vuoi creare una visualizzazione o una tabella dai risultati dell'analisi, unire i risultati ad altri dati strutturati. Ad esempio, crea una tabella basata sui risultati di inferenza:
CREATE TABLE my_dataset.my_inference_results AS SELECT uri, content_type, vision_feature FROM ML.PREDICT( MODEL my_dataset.vision_model, SELECT ML.DECODE_IMAGE(data) AS vision_input FROM my_dataset.object_table );
Dopo aver creato la tabella, puoi unirla ad altre tabelle in base a campi di metadati standard o personalizzati, come mostrato di seguito:
SELECT a.vision_feature, a.uri, b.description FROM my_dataset.my_inference_results a JOIN my_dataset.image_description b ON a.uri = b.uri;
Puoi anche creare un indice di ricerca per potenziare ricerche nei risultati dell'analisi. Ad esempio, la seguente affermazione crea un indice di ricerca sui dati estratti dai file PDF:
CREATE SEARCH INDEX my_index ON pdf_text_extract(ALL COLUMNS);
Puoi quindi utilizzare l'indice per trovare ciò che ti serve in questi risultati:
SELECT * FROM pdf_text_extract WHERE SEARCH(pdf_text, 'Google');
Vantaggi
Analizzare i dati non strutturati in modo nativo in BigQuery offre i seguenti vantaggi:
- Riduce lo sforzo manuale consentendo di automatizzare le fasi di pre-elaborazione come dell'ottimizzazione delle dimensioni delle immagini in base ai requisiti dei modelli.
- Ti permette di utilizzare l'interfaccia SQL semplice e familiare per lavorare e non strutturati.
- Ti aiuta a risparmiare sui costi utilizzando gli slot BigQuery esistenti anziché dover eseguire il provisioning di nuove forme di calcolo.
URL firmati
Per ottenere l'accesso ai dati rappresentati da un oggetto, genera un'immagine URL. Puoi utilizzare l'URL firmato per visualizzare direttamente i dati dell'oggetto anche passare URL firmati a funzioni remote per consentirne l'uso con i dati delle tabelle di oggetti.
Utilizza la
Funzione EXTERNAL_OBJECT_TRANSFORM
per generare URL firmati, come mostrato nell'esempio seguente:
SELECT uri, signed_url FROM EXTERNAL_OBJECT_TRANSFORM(TABLE mydataset.myobjecttable, ['SIGNED_URL']);
Vengono restituiti risultati simili ai seguenti:
---------------------------------------------------------------------------------------------------
| uri | signed_url |
—--------------------------------------------------------------------------------------------------
| gs://mybucket/a.docx | https://storage.googleapis.com/mybucket/a.docx?X-Goog-Signature=abcd&... |
—-------------------------------------------------------------------------------------------------
| gs://mybucket/b.pdf | https://storage.googleapis.com/mybucket/b.pdf?X-Goog-Signature=wxyz&... |
—--------------------------------------------------------------------------------------------------
Gli URL firmati generati dalle tabelle di oggetti consentono a qualsiasi utente o procedura che li possiede per leggere gli oggetti corrispondenti. URL firmati generati e scadono dopo sei ore. Per ulteriori informazioni, vedi URL firmati di Cloud Storage.
Controllo degli accessi
Le tabelle degli oggetti sono basate su BigLake, quindi usa una connessione esterna basata su su un account di servizio per accedere ai dati di Cloud Storage. Questo disaccoppia l'accesso alla tabella dall'accesso all'archivio di oggetti sottostante mediante la delega di accesso. Concedi all'account di servizio le autorizzazioni accedere a dati e metadati dagli oggetti e visualizzarli nella tabella. Tu concedere agli utenti le autorizzazioni solo nella tabella, dove puoi gestire l'accesso ai dati in base a utilizzando Identity and Access Management (IAM) e sicurezza a livello di riga.
Le tabelle degli oggetti sono diverse da quelle che utilizzano la delega di accesso, in quanto avere
l'accesso a una riga di una tabella di oggetti conferisce l'accesso al file sottostante
contenuti. Anche se un utente non può accedere direttamente all'oggetto, può
generare un URL firmato
che consente di vedere i contenuti del file. Ad esempio:
se l'utente ha accesso alla riga della tabella degli oggetti che rappresenta flower.jpg
file immagine, può generare un URL firmato per visualizzare il file e vedere che
è l'immagine di una margherita.
L'impostazione di un criterio di accesso a livello di riga su un che limita l'accesso di un utente o di un gruppo ai metadati dell'oggetto nelle righe selezionate, nonché agli oggetti rappresentati da tali righe. Ad esempio, la seguente istruzione concede all'utente Alice l'accesso solo alle righe che rappresentano gli oggetti creati prima del 25 giugno 2022:
CREATE ROW ACCESS POLICY before_20220625 ON my_dataset.my_object_table GRANT TO ("user:[email protected]") FILTER USING (updated < TIMESTAMP("2022-06-25"));
Con questo criterio di accesso a livello di riga, i risultati seguenti sono veri per Alice:
- Esecuzione solo della query
SELECT * FROM my_dataset.my_object_table;
restituisce le righe con un valoreupdated
precedente al 25 giugno 2022. - L'esecuzione dell'inferenza su
my_dataset.my_object_table
restituisce solo previsioni per gli oggetti con un valoreupdated
precedente al 25 giugno 2022. - La generazione di URL firmati per
my_dataset.my_object_table
crea solo URL per gli oggetti con un valoreupdated
precedente al 25 giugno 2022.
Puoi anche limitare l'accesso alle righe della tabella degli oggetti utilizzando metadati personalizzati.
Ad esempio, la seguente istruzione limita il gruppo users
per accedere solo alle righe in cui l'oggetto è stato taggato come non contenente
informazioni che consentono l'identificazione personale:
CREATE ROW ACCESS POLICY no_pii ON my_dataset.my_object_table GRANT TO ("group:[email protected]") FILTER USING (ARRAY_LENGTH(metadata)=1 AND metadata[OFFSET(0)].name="no_pii")
Modello di sicurezza
I seguenti ruoli organizzativi sono generalmente coinvolti nella gestione utilizzando le tabelle di oggetti:
- Amministratori dei data lake. Questi amministratori in genere gestiscono Criteri IAM (Identity and Access Management) sui bucket Cloud Storage e di oggetti strutturati.
- Amministratori di data warehouse. Questi amministratori di solito creare, eliminare e aggiornare le tabelle.
- Analisti di dati. In genere gli analisti leggono i dati ed eseguono query.
Gli amministratori dei data lake sono responsabili della creazione delle connessioni e della condivisione con gli amministratori del data warehouse. A sua volta, il data warehouse creano tabelle, impostano controlli di accesso appropriati e condividono con analisti di dati.
File oggetto supportati
Puoi creare una tabella di oggetti su qualsiasi tipo e dimensione di file di dati non strutturati, e creare funzioni remote che funzionano con qualsiasi tipo di dati non strutturati. Tuttavia, per eseguire l'inferenza utilizzando BigQuery ML, possono riguardare solo file immagine che soddisfano diversi requisiti di dimensione e tipo. Per ulteriori informazioni, vedi Limitazioni.
Memorizzazione nella cache dei metadati per migliorare le prestazioni
Puoi utilizzare i metadati memorizzati nella cache per migliorare le prestazioni di inferenza e tipi di analisi delle tabelle di oggetti. La memorizzazione nella cache dei metadati è particolarmente utile i casi in cui la tabella degli oggetti fa riferimento a un numero elevato di oggetti. I metadati includono nomi di file, informazioni di partizionamento e dati metadati da file, come i conteggi delle righe. Puoi scegliere se attivare o meno per la memorizzazione nella cache dei metadati su una tabella. Query con un numero elevato di file e con Hive i filtri di partizione traggono il massimo vantaggio dalla memorizzazione nella cache dei metadati.
Se non abiliti la memorizzazione nella cache dei metadati, le query sulla tabella devono leggere un'origine dati esterna per ottenere metadati degli oggetti. La lettura di questi dati aumenta latenza delle query; l'elenco di milioni di file dall'origine dati esterna può richiedere diversi minuti. Se attivi la memorizzazione nella cache dei metadati, le query possono evitare di elencare i file dall'origine dati esterna e può eseguire il partizionamento ed eliminare i file più rapidamente.
Esistono due proprietà che controllano questa funzionalità:
- Massima inattività: specifica quando le query utilizzano i metadati memorizzati nella cache.
- La modalità cache dei metadati specifica in che modo vengono raccolti i metadati.
Se hai abilitato la memorizzazione nella cache dei metadati, specifichi l'intervallo massimo l'inattività dei metadati accettabile per le operazioni sulla tabella. Per Ad esempio, se specifichi un intervallo di 1 ora, verranno eseguite le operazioni utilizzare i metadati memorizzati nella cache se sono stati aggiornati nell'ultima ora. Se la copia cache I metadati sono più vecchi di questo valore, l'operazione torna al recupero da Cloud Storage. Puoi specificare un intervallo di inattività compreso tra 30 minuti e 7 giorni.
Puoi scegliere di aggiornare la cache automaticamente o manualmente:
- Per gli aggiornamenti automatici, la cache viene aggiornata in base a un sistema definito intervallo, solitamente compreso tra 30 e 60 minuti. Aggiornamento di Cache è un buon approccio se i file Spazio di archiviazione sul cloud vengono aggiunti, eliminati o modificati a caso intervalli. Se devi controllare la tempistica dell'aggiornamento, ad esempio per per attivare l'aggiornamento al termine di un job di estrazione, trasformazione e caricamento, utilizzando aggiornamento manuale.
Per gli aggiornamenti manuali, esegui Sistema
BQ.REFRESH_EXTERNAL_METADATA_CACHE
procedura per aggiornare la cache dei metadati in base a una pianificazione che soddisfi i tuoi requisiti. Aggiornare manualmente la cache è un buon approccio se i file Spazio di archiviazione sul cloud vengono aggiunti, eliminati o modificati a intervalli noti come output di una pipeline.Se emetti più aggiornamenti manuali simultanei, solo uno avrà esito positivo.
Se non viene aggiornata, la cache dei metadati scade dopo 7 giorni.
Sia gli aggiornamenti manuali che quelli automatici della cache vengono eseguiti con
Priorità delle query INTERACTIVE
.
Se scegli di utilizzare gli aggiornamenti automatici, ti consigliamo di creare una
reservation (prenotazione), quindi creare una
compito con un tipo di prestazione BACKGROUND
per il progetto che esegue i job di aggiornamento della cache dei metadati. In questo modo
aggiornare i job rispetto alla concorrenza con le query degli utenti per le risorse, e
potrebbero non riuscire se non sono disponibili risorse sufficienti.
È necessario considerare come l'intervallo di inattività e la modalità di memorizzazione nella cache dei metadati interagiscono prima di impostarli. Considera i seguenti esempi:
- Se aggiorni manualmente la cache dei metadati per una tabella e imposti
l'intervallo di inattività a 2 giorni, devi eseguire
BQ.REFRESH_EXTERNAL_METADATA_CACHE
procedura di sistema ogni 2 giorni o meno se vuoi che le operazioni sulla tabella utilizzino i metadati memorizzati nella cache. - Se aggiorni automaticamente la cache dei metadati per una tabella impostare l'intervallo di inattività su 30 minuti, è possibile che alcuni dei tuoi operazioni sulla tabella potrebbero leggere Spazio di archiviazione sul cloud se l'aggiornamento della cache dei metadati richiede più tempo rispetto al solito finestra di 30-60 minuti.
Per trovare informazioni sui job di aggiornamento dei metadati, esegui una query
INFORMATION_SCHEMA.JOBS
visualizzazione,
come mostrato nell'esempio seguente:
SELECT * FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%metadata_cache_refresh%' AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR) ORDER BY start_time DESC LIMIT 10;
Per scoprire di più, consulta Memorizzazione nella cache dei metadati.
Per ulteriori informazioni sull'impostazione delle opzioni di memorizzazione nella cache dei metadati, consulta Creare tabelle di oggetti.
Limitazioni
- Le tabelle degli oggetti sono di sola lettura, perché mappano a oggetti di dati non strutturati in di archiviazione ideale in Cloud Storage. Non puoi modificare una tabella degli oggetti né modificare la tabella degli oggetti e i dati di Google Cloud.
- Il supporto delle tabelle degli oggetti non è disponibile in SQL precedente o in altri servizi cloud come AWS e Microsoft Azure.
- Se vuoi eseguire l'inferenza utilizzando BigQuery ML, modello e la tabella di oggetti che utilizzi devono soddisfare i requisiti descritti in Limitazioni.
- Le query che includono tabelle di oggetti non possono accedere a più di 10 GB di oggetti metadati. Ad esempio, se una query accede a 100 TB da una combinazione colonne di metadati nelle tabelle degli oggetti e dati degli oggetti tramite URL firmati, 10 GB dei 100 TB possono provenire dalle colonne dei metadati.
- Le tabelle degli oggetti sono soggette alle stesse limitazioni di tutte le altre Tabelle BigQuery esterne. Per ulteriori informazioni, vedi Quote.
- Le query sulle tabelle di oggetti sono soggette alle stesse limitazioni delle altre query in BigQuery. Per ulteriori informazioni, vedi Quote.
- Le funzioni remote che elaborano dati non strutturati provenienti dalle tabelle di oggetti sono soggetto allo stesso limitazioni come tutte le altre funzioni remote.
- Gli URL firmati generati per gli oggetti nelle tabelle di un oggetto scadono dopo 6 ore, ovvero il limite di tempo di esecuzione della query.
- Inferenza con BigQuery ML non è supportato con i prezzi on demand o con la versione Standard.
Le seguenti funzioni non sono supportate con i prezzi on demand o con il Versione Standard:
Costi
I costi sono associati ai seguenti aspetti delle tabelle di oggetti:
- Eseguire query sulle tabelle.
- Aggiornare la cache dei metadati.
Se disponi di slot prenotazioni, addebitato per l'esecuzione di query su tabelle esterne. Vengono invece consumati slot per questi query.
La tabella seguente mostra in che modo il modello di determinazione del prezzo influisce su questi costi applicati:
Prezzi on demand |
Versioni Standard, Enterprise ed Enterprise Plus |
|
---|---|---|
Query |
Ti vengono addebitati i byte elaborati dalle query degli utenti. |
Slot a assegnazioni di prenotazione con un tipo di job QUERY vengono consumate durante la query. |
Aggiornamento manuale della cache dei metadati. |
Ti vengono addebitati i byte elaborati per aggiornare la cache. |
Slot a assegnazioni di prenotazione con un tipo di job QUERY vengono consumate durante l'aggiornamento della cache. |
Aggiornamento automatico della cache dei metadati. |
Ti vengono addebitati i byte elaborati per aggiornare la cache. |
Slot a assegnazioni di prenotazione con un tipo di job BACKGROUND vengono consumate durante l'aggiornamento della cache.Se non sono disponibili prenotazioni BACKGROUND per l'aggiornamento
cache dei metadati, BigQuery utilizza automaticamente gli slot
QUERY prenotazioni invece se utilizzi la versione Enterprise o Enterprise Plus. |
Ti vengono inoltre addebitati i costi per lo spazio di archiviazione e l'accesso ai dati Cloud Storage Amazon S3, e Azure Blob Storage, sono soggette alle linee guida sui prezzi di ciascun prodotto.
Utilizzare le tabelle di oggetti con Analytics Hub
Le tabelle degli oggetti sono compatibili con Analytics Hub. I set di dati contenenti tabelle di oggetti possono essere pubblicati Schede Analytics Hub. Gli iscritti ad Analytics Hub possono iscriversi a questi di schede, che eseguono il provisioning di un set di dati di sola lettura, chiamato , in del progetto. I sottoscrittori possono eseguire query su tutte le tabelle nel set di dati collegato, inclusi tutti delle tabelle di oggetti. Per ulteriori informazioni, consulta la sezione Iscriversi a un dell'annuncio.
Passaggi successivi
- Scopri come creare una tabella di oggetti.
- Scopri come eseguire l'inferenza sulle tabelle di oggetti immagine.
- Scopri come analizzare le tabelle degli oggetti utilizzando le funzioni remote.