Esegui query sui dati di Drive
Questo documento descrive come eseguire query sui dati archiviati in una tabella esterna di Google Drive.
BigQuery supporta le query sia sui file di Drive personali sia sui file condivisi. Per ulteriori informazioni su Drive, consulta Formazione e guida per Google Drive.
Puoi eseguire query sui dati di Drive da una tabella esterna permanente o da una tabella esterna temporanea che crei quando esegui la query.
Ruoli obbligatori
Per eseguire query sulle tabelle esterne di Drive, assicurati di disporre dei seguenti ruoli:
- Visualizzatore dati BigQuery (
roles/bigquery.dataViewer
) - Utente BigQuery (
roles/bigquery.user
)
A seconda delle tue autorizzazioni, puoi concedere questi ruoli a te stesso o chiedere all'amministratore di concederli. Per ulteriori informazioni sulla concessione dei ruoli, consulta Visualizzazione dei ruoli assegnabili sulle risorse.
Per visualizzare le autorizzazioni BigQuery esatte necessarie per eseguire query sulle tabelle esterne, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
bigquery.jobs.create
bigquery.readsessions.create
(Obbligatorio solo se stai leggendo i dati con l'API BigQuery Storage Read)bigquery.tables.get
bigquery.tables.getData
Potresti essere in grado di ottenere queste autorizzazioni anche con i ruoli personalizzati o altri ruoli predefiniti.
Autorizzazioni di Drive
Per eseguire query su dati esterni su Drive, devi concedere almeno a View
l'accesso al file di Drive collegato alla tabella esterna.
Ambiti per le istanze di Compute Engine
Quando crei un'istanza di Compute Engine, puoi specificare un elenco di ambiti per l'istanza. Gli ambiti controllano l'accesso dell'istanza ai prodotti Google Cloud, tra cui Drive. Le applicazioni in esecuzione sulla VM usano l'account di servizio per le chiamate alle API Google Cloud.
Se configuri un'istanza di Compute Engine in modo che venga eseguita come account di servizio e l'account di servizio accede a una tabella esterna collegata a un'origine dati di Drive, devi aggiungere all'istanza l'ambito OAuth per Drive (https://www.googleapis.com/auth/drive.readonly
).
Per informazioni sull'applicazione degli ambiti a un'istanza di Compute Engine, consulta Modifica dell'account di servizio e degli ambiti di accesso per un'istanza. Per ulteriori informazioni sugli account di servizio Compute Engine, consulta Account di servizio.
Esegui query sui dati di Drive utilizzando tabelle esterne permanenti
Dopo aver creato una tabella esterna di Drive, puoi eseguire query utilizzando la sintassi GoogleSQL, come se fosse una tabella BigQuery standard. Ad esempio, SELECT field1, field2
FROM mydataset.my_drive_table;
.
Eseguire query sui dati di Drive utilizzando tabelle temporanee
L'esecuzione di query su un'origine dati esterna utilizzando una tabella temporanea è utile per le query una tantum ad hoc su dati esterni o per i processi di estrazione, trasformazione e caricamento (ETL).
Per eseguire query su un'origine dati esterna senza creare una tabella permanente, fornisci una definizione per la tabella temporanea e poi utilizzala in un comando o in una chiamata per eseguire query sulla tabella temporanea. Puoi fornire la definizione della tabella in uno dei seguenti modi:
- Un file di definizione della tabella
- Una definizione di schema in linea
- Un file di schema JSON
Il file di definizione della tabella o lo schema fornito viene utilizzato per creare la tabella esterna temporanea, dopodiché la query viene eseguita nella tabella esterna temporanea.
Quando utilizzi una tabella esterna temporanea, non ne crei una in uno dei tuoi set di dati BigQuery. Poiché la tabella non è archiviata in modo permanente in un set di dati, non può essere condivisa con altri.
Creare ed eseguire query sulle tabelle temporanee
Puoi creare ed eseguire query su una tabella temporanea collegata a un'origine dati esterna utilizzando lo strumento a riga di comando bq, l'API o le librerie client.
bq
Esegui una query su una tabella temporanea collegata a un'origine dati esterna utilizzando il comando bq query
con il flag --external_table_definition
. Quando utilizzi lo strumento a riga di comando bq per eseguire una query su una tabella temporanea collegata a un'origine dati esterna, puoi identificare lo schema della tabella utilizzando:
- Un file di definizione di tabella (memorizzato sulla macchina locale)
- Una definizione di schema in linea
- Un file di schema JSON (archiviato sulla tua macchina locale)
Per eseguire una query su una tabella temporanea collegata all'origine dati esterna utilizzando un file di definizione della tabella, inserisci il seguente comando.
bq --location=LOCATION query \ --external_table_definition=TABLE::DEFINITION_FILE \ 'QUERY'
Dove:
LOCATION
è la tua località. Il flag--location
è facoltativo.TABLE
è il nome della tabella temporanea che stai creando.DEFINITION_FILE
è il percorso del file di definizione della tabella sulla tua macchina locale.QUERY
è la query che stai inviando alla tabella temporanea.
Ad esempio, il seguente comando crea ed esegue query su una tabella temporanea denominata sales
utilizzando un file di definizione della tabella denominato sales_def
.
bq query \
--external_table_definition=sales::sales_def \
'SELECT
Region,Total_sales
FROM
sales'
Per eseguire una query su una tabella temporanea collegata all'origine dati esterna utilizzando una definizione di schema in linea, inserisci il seguente comando.
bq --location=LOCATION query \ --external_table_definition=TABLE::SCHEMA@SOURCE_FORMAT=DRIVE_URI \ 'QUERY'
Dove:
LOCATION
è la tua località. Il flag--location
è facoltativo.TABLE
è il nome della tabella temporanea che stai creando.SCHEMA
è la definizione dello schema incorporato nel formatoFIELD:DATA_TYPE,FIELD:DATA_TYPE
.SOURCE_FORMAT
èCSV
,NEWLINE_DELIMITED_JSON
,AVRO
oGOOGLE_SHEETS
.DRIVE_URI
è l'URI di Drive.QUERY
è la query che stai inviando alla tabella temporanea.
Ad esempio, il seguente comando crea ed esegue query su una tabella temporanea denominata sales
collegata a un file CSV archiviato in Drive con la seguente definizione di schema: Region:STRING,Quarter:STRING,Total_sales:INTEGER
.
bq --location=US query \
--external_table_definition=sales::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Region,Total_sales
FROM
sales'
Per eseguire una query su una tabella temporanea collegata all'origine dati esterna utilizzando un file di schema JSON, inserisci il comando seguente.
bq --location=LOCATION query \ --external_table_definition=SCHEMA_FILE@SOURCE_FORMT=DRIVE_URI \ 'QUERY'
Dove:
LOCATION
è la tua località. Il flag--location
è facoltativo.SCHEMA_FILE
è il percorso del file di schema JSON sulla tua macchina locale.SOURCE_FILE
èCSV
,NEWLINE_DELIMITED_JSON
,AVRO
oGOOGLE_SHEETS
.DRIVE_URI
è l'URI di Drive.QUERY
è la query che stai inviando alla tabella temporanea.
Ad esempio, il seguente comando crea ed esegue query su una tabella temporanea denominata sales
collegata a un file CSV archiviato su Drive utilizzando il file di schema /tmp/sales_schema.json
.
bq query \
--external_table_definition=sales::/tmp/sales_schema.json@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Total_sales
FROM
sales'
API
Crea una configurazione di job di query. Consulta Esecuzione di query sui dati per informazioni sulle chiamate
jobs.query
ejobs.insert
.Specifica l'origine dati esterna creando un
ExternalDataConfiguration
.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Limitazioni
Una query BigQuery può sovraccaricare Fogli Google, causando un errore come Resources exceeded during query execution: Google Sheets service
overloaded.
. Ti consigliamo di semplificare il foglio di lavoro, ad esempio riducendo al minimo l'utilizzo di formule. Per ulteriori informazioni, consulta le limitazioni delle tabelle esterne.
Passaggi successivi
- Scopri di più sull'utilizzo di SQL in BigQuery.
- Scopri di più sulle tabelle esterne.
- Scopri di più sulle quote di BigQuery.