Eseguire query sui dati di Drive
Questo documento descrive come eseguire query sui dati archiviati in un Tabella esterna di Google Drive.
BigQuery supporta le query su Drive personali file e file condivisi. Per ulteriori informazioni su Drive, consulta Formazione e guida per Google Drive.
Puoi eseguire query sui dati di Drive da un una tabella esterna permanente o da una tabella esterna temporanea che crei quando esegui la query.
Ruoli obbligatori
Per eseguire query su tabelle esterne di Drive, assicurati di avere ruoli:
- Visualizzatore dati BigQuery (
roles/bigquery.dataViewer
) - Utente BigQuery (
roles/bigquery.user
)
In base alle tue autorizzazioni, puoi concediti questi ruoli o chiedi all'amministratore per concederteli. Per ulteriori informazioni sulla concessione dei ruoli, consulta Visualizzazione dei ruoli assegnabili nelle risorse.
Per visualizzare le autorizzazioni BigQuery esatte necessarie per eseguire la query tabelle esterne, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
bigquery.jobs.create
bigquery.readsessions.create
(obbligatorio solo se sei tu leggi i dati con API BigQuery Storage Read)bigquery.tables.get
bigquery.tables.getData
Potresti anche riuscire a ottenere queste autorizzazioni con i ruoli personalizzati. o altri ruoli predefiniti.
Autorizzazioni di Drive
Come minimo, per eseguire query su dati esterni su Drive devi avere
concesso a View
l'accesso al file di Drive collegato alla tabella esterna.
Ambiti per le istanze Compute Engine
Quando crei un'istanza Compute Engine, puoi specificare un elenco di ambiti per l'istanza. Gli ambiti controllano l'accesso dell'istanza a Google Cloud prodotti, tra cui Drive. Le applicazioni in esecuzione sulla VM utilizzano il servizio per chiamare le API Google Cloud.
Se configuri un'istanza Compute Engine per l'esecuzione come
account di servizio,
e quell'account di servizio accede a una tabella esterna collegata a un Drive
origine dati, devi aggiungere
Ambito OAuth per Drive
(https://www.googleapis.com/auth/drive.readonly
) all'istanza.
Per informazioni sull'applicazione di ambiti a un'istanza Compute Engine, vedi 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.
Eseguire query sui dati di Drive utilizzando tabelle esterne permanenti
Dopo aver creato una tabella esterna di Drive, puoi eseguire una query utilizzando
Sintassi GoogleSQL, come se
era una tabella BigQuery standard. Ad esempio, SELECT field1, field2
FROM mydataset.my_drive_table;
.
Eseguire query sui dati di Drive utilizzando tabelle temporanee
È utile eseguire query su un'origine dati esterna utilizzando una tabella temporanea per query una tantum ad hoc su dati esterni o per l'estrazione, la trasformazione e il caricamento (ETL) i processi di machine learning.
Per eseguire una query su un'origine dati esterna senza creare una tabella permanente, fornisci una tabella definizione della tabella temporanea e poi utilizzarla in un comando o in una chiamata per eseguire una query sulla tabella temporanea. Puoi fornire la definizione della tabella in uno dei seguenti modi modi:
- Un file di definizione della tabella
- Definizione di uno schema in linea
- Un file di schema JSON
Il file di definizione della tabella o lo schema fornito vengono utilizzati per creare la tabella esterna temporanea. e la query viene eseguita sulla tabella esterna temporanea.
Quando utilizzi una tabella esterna temporanea, non ne crei una in una delle set di dati BigQuery. Poiché la tabella non è archiviata in modo permanente in un set di dati, non possono essere condivisi con altri.
Creare ed eseguire query su tabelle temporanee
Puoi creare ed eseguire query su una tabella temporanea collegata a un'origine dati esterna mediante lo strumento a riga di comando bq, l'API o le librerie client.
bq
Per eseguire query su una tabella temporanea collegata a un'origine dati esterna, puoi utilizzare
Comando bq query
con il flag --external_table_definition
. Quando utilizzi
lo strumento a riga di comando bq per eseguire query su una tabella temporanea collegata a un'origine dati esterna,
puoi identificare lo schema della tabella utilizzando:
- Un file di definizione della tabella (archiviato su dalla macchina locale)
- Definizione di uno schema in linea
- Un file di schema JSON (archiviato sulla macchina locale)
Eseguire una query su una tabella temporanea collegata all'origine dati esterna utilizzando una tabella di definizione, 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 sul tuo computer locale.QUERY
è la query che stai inviando alla tabella temporanea.
Ad esempio, il comando seguente crea ed esegue una query su una tabella temporanea
denominato sales
mediante 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 query su una tabella temporanea collegata alla tua origine dati esterna utilizzando un per la definizione dello schema incorporato, inserisci il comando seguente.
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 comando seguente crea ed esegue una query su una tabella temporanea
denominato sales
collegato a un file CSV archiviato in Drive con quanto segue
definizione 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 JSON del file di schema, 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 sul tuo server in una macchina virtuale.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 comando seguente crea ed esegue una query su una tabella temporanea
denominato sales
collegato a un file CSV archiviato in Drive utilizzando
/tmp/sales_schema.json
file di schema.
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 del job di query. Consulta Esecuzione di query sui dati per informazioni sulle chiamate
jobs.query
ejobs.insert
.Specifica l'origine dati esterna creando un'istanza
ExternalDataConfiguration
.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Limitazioni
Una query BigQuery può sovraccaricare Fogli Google, generando
errore come Resources exceeded during query execution: Google Sheets service
overloaded.
. Prova a semplificare il foglio di lavoro; ad esempio riducendo al minimo
l'uso di formule. Per ulteriori informazioni, consulta la tabella esterna
limitazioni.
Passaggi successivi
- Scopri di più sull'utilizzo di SQL in BigQuery.
- Scopri di più sulle tabelle esterne.
- Scopri di più sulle quote di BigQuery.