Scrittura dei risultati delle query (original) (raw)

Questo documento descrive come scrivere i risultati delle query in tabelle temporanee o permanenti.

Tabelle temporanee e permanenti

BigQuery salva tutti i risultati delle query in una tabella, che può essere permanente o temporanea.

Autorizzazioni obbligatorie

Per scrivere i risultati di query in una tabella, devi disporre almeno delle seguenti autorizzazioni:

Per accedere ai dati su cui stai eseguendo una query potrebbero essere necessarie autorizzazioni aggiuntive come bigquery.tables.getData.

I seguenti ruoli IAM predefiniti includono sia le autorizzazioni bigquery.tables.create sia quelle bigquery.tables.updateData:

I seguenti ruoli IAM predefiniti includono le autorizzazioni bigquery.jobs.create:

Inoltre, se un utente dispone delle autorizzazioni bigquery.datasets.create, quando crea un set di dati, gli viene concesso l'accesso bigquery.dataOwner. L'accesso bigquery.dataOwner consente all'utente di creare e aggiornare le tabelle nel set di dati.

Per ulteriori informazioni sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.

Scrivere i risultati della query in una tabella permanente

Quando scrivi i risultati di una query in una tabella permanente, puoi creare una nuova tabella, aggiungere i risultati a una tabella esistente o sovrascrivere una tabella esistente.

Scrittura dei risultati delle query

Utilizza la procedura seguente per scrivere i risultati della query in una tabella permanente. Per contribuire a controllare i costi, puoivisualizzare l'anteprima dei datiprima di eseguire la query.

Console

  1. Apri la pagina BigQuery nella Google Cloud console.
    Vai alla pagina BigQuery
  2. Nel riquadro Spazio di esplorazione, espandi il progetto e seleziona un set di dati.
  3. Inserisci una query SQL valida.
  4. Fai clic su Altro e poi seleziona Impostazioni query.
    Impostazioni query
  5. Seleziona l'opzione Imposta una tabella di destinazione per i risultati della query.
    Impostare la destinazione
  6. Nella sezione Destinazione, seleziona il set di dati in cui vuoi creare la tabella e poi scegli un ID tabella.
  7. Nella sezione Preferenza di scrittura per tabella di destinazione, scegli una delle seguenti opzioni:
    • Scrive se vuota: scrive i risultati della query nella tabella solo se la tabella è vuota.
    • Aggiungi alla tabella: aggiunge i risultati della query a una tabella esistente.
    • Sovrascrive tabella: sovrascrive una tabella esistente con lo stesso nome utilizzando i risultati della query.
  8. (Facoltativo) Per Località dei dati, scegli la tua località.
  9. Per aggiornare le impostazioni della query, fai clic su Salva.
  10. Fai clic su Esegui. Viene creato un job di query che scrive i risultati della query nella tabella specificata.

In alternativa, se dimentichi di specificare una tabella di destinazione prima di eseguire la query, puoi copiare la tabella dei risultati memorizzati nella cache in una tabella permanente facendo clic sul pulsante Salva risultati sopra l'editor.

SQL

L'esempio seguente utilizza l'istruzione CREATE TABLE per creare la tabella trips dai dati della tabella pubblica bikeshare_trips:

  1. Nella console Google Cloud , vai alla pagina BigQuery.
    Vai a BigQuery
  2. Nell'editor di query, inserisci la seguente istruzione:
    CREATE TABLE mydataset.trips AS (
    SELECT
    bike_id,
    start_time,
    duration_minutes
    FROM
    bigquery-public-data.austin_bikeshare.bikeshare_trips
    );
  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.

Per ulteriori informazioni, consulta la sezione Creare una nuova tabella da una tabella esistente.

bq

  1. In the Google Cloud console, activate Cloud Shell.
    Activate Cloud Shell
    At the bottom of the Google Cloud console, aCloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
  2. Inserisci il comando bq querye specifica il flag --destination_table per creare una tabella permanente in base ai risultati della query. Specifica il flag use_legacy_sql=false per utilizzare la sintassi GoogleSQL. Per scrivere i risultati della query in una tabella che non si trova nel progetto predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:project_id:dataset.
    (Facoltativo) Fornisci il flag --location e imposta il valore sulla tuaposizione.
    Per controllare l'istruzione di scrittura per una tabella di destinazione esistente, specifica uno dei seguenti flag facoltativi:
    • --append_table: se la tabella di destinazione esiste, i risultati della query vengono aggiunti.
    • --replace: se la tabella di destinazione esiste, viene sovrascritta con i risultati della query.
      bq --location=location query \
      --destination_table project_id:dataset.table \
      --use_legacy_sql=false 'query'
      Sostituisci quanto segue:
    • location è il nome della località utilizzata per elaborare la query. Il flag --location è facoltativo. Ad esempio, se utilizzi BigQuery nella regione di Tokyo, puoi impostare il valore del flag su asia-northeast1. Puoi impostare un valore predefinito per la posizione utilizzando ilfile .bigqueryrc.
    • project_id è l'ID progetto.
    • dataset è il nome del set di dati che contiene la tabella in cui stai scrivendo i risultati della query.
    • table è il nome della tabella in cui stai scrivendo i risultati della query.
    • query è una query in sintassi GoogleSQL.
      Se non viene specificato alcun flag di impostazione di scrittura, il comportamento predefinito è scrivere i risultati nella tabella solo se è vuota. Se la tabella esiste e non è vuota, viene restituito il seguente errore:BigQuery error in query operation: Error processing jobproject_id:bqjob_123abc456789_00000e1234f_1: Already Exists: Table project_id:dataset.table.
      Esempi:
      Inserisci il comando seguente per scrivere i risultati della query in una tabella di destinazione denominata mytable in mydataset. Il set di dati si trova nel tuo progetto predefinito. Poiché nel comando non è specificato alcun flag di impostazione di scrittura, la tabella deve essere nuova o vuota. In caso contrario, viene restituito un errore Already exists. La query recupera i dati dal set di dati pubblico USA Name Data.
      bq query \
      --destination_table mydataset.mytable \
      --use_legacy_sql=false \
      'SELECT
      name,
      number
      FROM
      bigquery-public-data.usa_names.usa_1910_current
      WHERE
      gender = "M"
      ORDER BY
      number DESC'
      Inserisci il seguente comando per utilizzare i risultati della query per sovrascrivere una tabella di destinazione denominata mytable in mydataset. Il set di dati si trova nel progetto predefinito. Il comando utilizza il flag --replace per sovrascrivere la tabella di destinazione.
      bq query \
      --destination_table mydataset.mytable \
      --replace \
      --use_legacy_sql=false \
      'SELECT
      name,
      number
      FROM
      bigquery-public-data.usa_names.usa_1910_current
      WHERE
      gender = "M"
      ORDER BY
      number DESC'
      Inserisci il seguente comando per accodare i risultati della query a una tabella di destinazione mytable in mydataset. Il set di dati si trova in my-other-project, non nel tuo progetto predefinito. Il comando utilizza il flag --append_table per accodare i risultati della query alla tabella di destinazione.
      bq query \
      --append_table \
      --use_legacy_sql=false \
      --destination_table my-other-project:mydataset.mytable \
      'SELECT
      name,
      number
      FROM
      bigquery-public-data.usa_names.usa_1910_current
      WHERE
      gender = "M"
      ORDER BY
      number DESC'
      L'output di ciascuno di questi esempi è il seguente. Per motivi di leggibilità, parte dell'output è troncata.
      Waiting on bqjob_r123abc456_000001234567_1 ... (2s) Current status: DONE
      +---------+--------+
      | name | number |
      +---------+--------+
      | Robert | 10021 |
      | John | 9636 |
      | Robert | 9297 |
      | ... |
      +---------+--------+

API

Per salvare i risultati della query in una tabella permanente, chiama il metodo jobs.insert, configura un job query e includi un valore per la proprietà destinationTable. Per controllare l'impostazione di scrittura per una tabella di destinazione esistente, configura la proprietà writeDisposition.

Per controllare la località di elaborazione del job di query, specifica la proprietà locationnella sezione jobReference della risorsa job.

Vai

Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery relativa all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.

Per effettuare l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per le librerie client.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery relativa all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.

Per effettuare l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per le librerie client.

Per salvare i risultati della query in una tabella permanente, imposta la tabella di destinazione sul TableId desiderato in una QueryJobConfiguration.

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery relativa all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Node.js.

Per effettuare l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per le librerie client.

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery relativa all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.

Per effettuare l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per le librerie client.

Per salvare i risultati della query in una tabella permanente, crea un QueryJobConfig e imposta la destinazione sul TableReference desiderato. Passa la configurazione del job al metodo query.

Scrivere risultati di query di grandi dimensioni

In genere, le query hanno una dimensione massima della risposta. Se prevedi di eseguire una query che potrebbe restituire risultati più grandi, puoi procedere in uno dei modi seguenti:

Quando specifichi una tabella di destinazione per risultati di query di grandi dimensioni, ti viene addebitato il costo per lo stoccaggio dei dati.

Limitazioni

In SQL precedente, la scrittura di risultati di grandi dimensioni è soggetta a queste limitazioni:

Scrittura di risultati di grandi dimensioni utilizzando SQL precedente

Per scrivere set di risultati di grandi dimensioni utilizzando SQL precedente:

Console

  1. Nella console Google Cloud , apri la pagina BigQuery.
    Vai a BigQuery
  2. Fai clic su Crea nuova query.
  3. Inserisci una query SQL valida nell'area di testo Editor query. Utilizza il prefisso #legacySQL o assicurati di aver selezionato Utilizza SQL precedente nelle impostazioni di query.
  4. Fai clic su Altro e poi seleziona Impostazioni query.
    Impostazioni query
  5. In Destinazione, seleziona Imposta una tabella di destinazione per i risultati della query.
    Impostare la destinazione
  6. Per Set di dati, scegli il set di dati in cui verrà archiviata la tabella.
  7. Nel campo ID tabella, inserisci il nome di una tabella.
  8. Se stai scrivendo un set di risultati di grandi dimensioni in una tabella esistente, puoi utilizzare le opzioni della Preferenza di scrittura per tabella di destinazione per controllare la disposizione della scrittura della tabella di destinazione:
    • Scrive se vuota:scrive i risultati della query nella tabella solo se la tabella è vuota.
    • Aggiungi a tabella:aggiunge i risultati della query a una tabella esistente.
    • Sovraccarichi tabella:sovrascrive una tabella esistente con lo stesso nome utilizzando i risultati della query.
  9. In Dimensioni dei risultati, seleziona Consenti risultati di grandi dimensioni (nessun limite di dimensione).
  10. (Facoltativo) Per Località dei dati, scegli la località dei dati.
  11. Fai clic su Salva per aggiornare le impostazioni della query.
  12. Fai clic su Esegui. Viene creato un job di query che scrive l'insieme di risultati di grandi dimensioni nella tabella specificata.

bq

Utilizza il flag --allow_large_results con il flag --destination_table per creare una tabella di destinazione per contenere l'ampio insieme di risultati. Poiché l'opzione --allow_large_results si applica solo al codice SQL precedente, devi anche specificare il flag --use_legacy_sql=true. Per scrivere i risultati della query in una tabella che non si trova nel progetto predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: PROJECT_ID:DATASET. Fornisci il flag --location e imposta il valore sulla tuaposizione.

Per controllare l'impostazione di scrittura per una tabella di destinazione esistente, specifica uno dei seguenti flag facoltativi:

bq --location=location query
--destination_table PROJECT_ID:DATASET.TABLE
--use_legacy_sql=true
--allow_large_results "QUERY"

Sostituisci quanto segue:

Esempi:

Inserisci il seguente comando per scrivere risultati di query di grandi dimensioni in una tabella di destinazione denominata mytable in mydataset. Il set di dati si trova nel progetto predefinito. Poiché nel comando non è specificato alcun flag di impostazione di scrittura, la tabella deve essere nuova o vuota. In caso contrario, viene restituito un errore Already exists. La query recupera i dati dal set di dati pubblico Dati relativi ai nomi USA. Questa query viene utilizzata solo a scopo di esempio. L'insieme di risultati restituito non supera le dimensioni massime della risposta.

bq query \
--destination_table mydataset.mytable \
--use_legacy_sql=true \
--allow_large_results \
"SELECT
  name,
  number
FROM
  [bigquery-public-data:usa_names.usa_1910_current]
WHERE
  gender = 'M'
ORDER BY
  number DESC"

Inserisci il seguente comando per utilizzare risultati di query di grandi dimensioni per sovrascrivere una tabella di destinazione denominata mytable in mydataset. Il set di dati si trova inmyotherproject, non nel tuo progetto predefinito. Il comando utilizza il flag --replace per sovrascrivere la tabella di destinazione.

bq query \
--destination_table mydataset.mytable \
--replace \
--use_legacy_sql=true \
--allow_large_results \
"SELECT
  name,
  number
FROM
  [bigquery-public-data:usa_names.usa_1910_current]
WHERE
  gender = 'M'
ORDER BY
  number DESC"

Inserisci il seguente comando per accodare risultati di query di grandi dimensioni a una tabella di destinazione denominata mytable in mydataset. Il set di dati si trova in myotherproject, non nel tuo progetto predefinito. Il comando utilizza il flag --append_table per appendere i risultati della query alla tabella di destinazione.

bq query \
--destination_table myotherproject:mydataset.mytable \
--append_table \
--use_legacy_sql=true \
--allow_large_results \
"SELECT
  name,
  number
FROM
  [bigquery-public-data:usa_names.usa_1910_current]
WHERE
  gender = 'M'
ORDER BY
  number DESC"

API

Per scrivere risultati di grandi dimensioni in una tabella di destinazione, chiama il metodojobs.insert, configura un job query e imposta la proprietà allowLargeResults su true. Specifica la tabella di destinazione utilizzando la proprietà destinationTable. Per controllare la disposizione di scrittura per una tabella di destinazione esistente, configura la proprietà writeDisposition.

Specifica la tua località nella proprietà location nella sezione jobReference della risorsa job.

Vai

Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery relativa all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.

Per effettuare l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per le librerie client.

Java

Per attivare i risultati di grandi dimensioni, imposta allow large results su true e imposta la tabella di destinazione sul valore TableId desiderato in unQueryJobConfiguration.

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery relativa all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.

Per effettuare l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per le librerie client.

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery relativa all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Node.js.

Per effettuare l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per le librerie client.

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery relativa all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.

Per effettuare l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per le librerie client.

Scaricare e salvare i risultati delle query dalla Google Cloud console

Dopo aver eseguito una query SQL utilizzando la Google Cloud console, puoi salvare i risultati in un'altra posizione. Puoi utilizzare la Google Cloud console per scaricare i risultati della query in un file locale, in Fogli Google o su Google Drive. Se ordini prima i risultati della query per colonna, l'ordine viene mantenuto nei dati scaricati. Il salvataggio dei risultati in un file locale, in Fogli Google o su Google Drive non è supportato dallo strumento a riga di comando bq o dall'API.

Limitazioni

Il download e il salvataggio dei risultati delle query sono soggetti ai seguenti limiti:

Passaggi successivi