1. Introduzione
BigQuery è il database di analisi NoOps a basso costo e completamente gestito di Google. Con BigQuery, puoi eseguire query su terabyte di dati senza un amministratore di database o un'infrastruttura. BigQuery utilizza un ambiente SQL familiare e un modello di addebito basato sul solo pagamento a consumo. BigQuery permette di concentrarsi sull'analisi dei dati per trovare informazioni significative. In questo codelab, utilizzerai lo strumento a riga di comando bq per caricare un file CSV locale in una nuova tabella BigQuery.
Cosa imparerai a fare
- Come utilizzare lo strumento a riga di comando bq per BigQuery
- Come caricare file di dati locali in una tabella BigQuery
Che cosa ti serve
- Un progetto Google Cloud
- Un browser, ad esempio Google Chrome.
2. Configurazione
Abilitare BigQuery
Se non disponi già di un Account Google, devi crearne uno.
- Accedi alla console Google Cloud e vai a BigQuery. Puoi anche aprire direttamente la UI web di BigQuery inserendo il seguente URL nel tuo browser.
https://console.cloud.google.com/bigquery
- Accetta i Termini di servizio.
- Prima di poter utilizzare BigQuery, devi creare un progetto. Segui le istruzioni per creare il nuovo progetto.
Scegli un nome per il progetto e prendi nota dell'ID.
L'ID progetto è un nome univoco tra tutti i progetti Google Cloud. Verrà indicato più avanti in questo codelab come PROJECT_ID
.
Questo codelab utilizza le risorse BigQuery entro i limiti della sandbox di BigQuery. Non è richiesto un account di fatturazione. Se in un secondo momento vuoi rimuovere i limiti della sandbox, puoi aggiungere un account di fatturazione registrandoti alla prova senza costi di Google Cloud.
Cloud Shell
Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione su Google Cloud.
Attiva Cloud Shell
- Dalla console Cloud, fai clic su Attiva Cloud Shell .
Se non hai mai avviato Cloud Shell, ti viene mostrata una schermata intermedia (below the fold) che descrive di cosa si tratta. In tal caso, fai clic su Continua (e non la vedrai più). Ecco come appare quella singola schermata:
Il provisioning e la connessione a Cloud Shell dovrebbero richiedere solo qualche istante.
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo di cui hai bisogno. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Gran parte, se non tutto, del lavoro in questo codelab può essere svolto semplicemente con un browser o Chromebook.
Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato e il progetto è già impostato sul tuo ID progetto.
- Esegui questo comando in Cloud Shell per verificare che l'account sia autenticato:
gcloud auth list
Output comando
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Esegui questo comando in Cloud Shell per confermare che il comando gcloud è a conoscenza del tuo progetto:
gcloud config list project
Output comando
[core] project = <PROJECT_ID>
In caso contrario, puoi impostarlo con questo comando:
gcloud config set project <PROJECT_ID>
Output comando
Updated property [core/project].
3. Crea un set di dati
Crea un set di dati che contenga le tabelle.
Che cos'è un set di dati?
Un set di dati BigQuery è una raccolta di tabelle. Tutte le tabelle di un set di dati sono archiviate nella stessa località dei dati. Puoi anche collegare controlli di accesso personalizzati per limitare l'accesso a un set di dati e alle relative tabelle.
Crea un set di dati
In Cloud Shell, utilizza il comando bq mk per creare un set di dati chiamato "bq_load_codelab
".
bq mk bq_load_codelab
Visualizza le proprietà del set di dati
Verifica di aver creato il set di dati visualizzando le relative proprietà con il comando bq show.
bq show bq_load_codelab
Dovresti vedere un output simile al seguente:
Dataset my-project:bq_load_codelab Last modified ACLs Labels ----------------- -------------------- -------- 15 Jun 14:12:49 Owners: projectOwners, your-email@example.com Writers: projectWriters Readers: projectReaders
4. Crea il file di dati
BigQuery può caricare dati da diversi formati, tra cui JSON delimitato da nuova riga, Avro e CSV. Per semplicità, utilizzerai CSV.
Creare un file CSV
In Cloud Shell, crea un file CSV vuoto.
touch customer_transactions.csv
Apri il file CSV nell'editor di codice in Cloud Shell eseguendo il comando di modifica cloudshell, che aprirà una nuova finestra del browser con un editor di codice e il riquadro di Cloud Shell.
cloudshell edit customer_transactions.csv
Nell'editor di codice, inserisci alcuni valori separati da virgole da caricare in BigQuery.
ID,Zipcode,Timestamp,Amount,Feedback,SKU c123,78757,2018-02-14 17:01:39Z,1.20,4.7,he4rt5 c456,10012,2018-03-14 15:09:26Z,53.60,3.1,ppiieee c123,78741,2018-04-01 05:59:47Z,5.98,2.0,ch0c0
Salva il file CSV facendo clic su File > Modifica.
5. Carica dati
Usa il comando bq load per caricare il file CSV in una tabella BigQuery.
bq load \ --source_format=CSV \ --skip_leading_rows=1 \ bq_load_codelab.customer_transactions \ ./customer_transactions.csv \ id:string,zip:string,ttime:timestamp,amount:numeric,fdbk:float,sku:string
Hai utilizzato le seguenti opzioni:
--source_format=CSV
utilizza il formato dei dati CSV durante l'analisi del file di dati.--skip_leading_rows=1
salta la prima riga del file CSV perché si tratta di una riga di intestazione.Bq_load_codelab.customer_transactions—the first positional argument—
definisce la tabella in cui caricare i dati../customer_transactions.csv
, il secondo argomento posizionale, definisce quale file caricare. Oltre ai file locali, il comando bq load può caricare file da Cloud Storage congs://my_bucket/path/to/file URIs
.- Uno schema, che può essere definito in un file di schema JSON o come elenco separato da virgole. Per semplicità, hai utilizzato un elenco separato da virgole.
Hai utilizzato il seguente schema nella tabella customer_transactions:
Id:string
: un identificatore clienteZip:string
: un codice postale statunitenseTtime:timestamp
: la data e l'ora in cui è avvenuta la transazioneAmount:numeric
: l'importo di una transazione (una colonna numerica memorizza i dati in formato decimale, utile per i valori monetari).Fdbk:float
: la valutazione di un sondaggio di feedback sulla transazioneSku:string
: un identificatore dell'articolo acquistato
Visualizzare i dettagli della tabella
Verifica che la tabella sia stata caricata mostrandone le proprietà.
bq show bq_load_codelab.customer_transactions
Output:
Table my-project:bq_load_codelab.customer_transactions Last modified Schema Total Rows Total Bytes ----------------- --------------------- ------------ ------------- 15 Jun 15:13:55 |- id: string 3 159 |- zip: string |- ttime: timestamp |- amount: numeric |- fdbk: float |- sku: string
6. Eseguire query sui dati
Ora che i dati sono stati caricati, puoi eseguire query utilizzando la UI web di BigQuery, il comando bq o l'API. Le query possono unire i dati a qualsiasi set di dati (o set di dati, purché si trovino nella stessa località) per il quale disponi dell'autorizzazione di lettura.
Esegui una query SQL standard che unisce il set di dati al set di dati dei codici postali degli Stati Uniti e somma le transazioni per stato degli Stati Uniti. Usa il comando bq query per eseguire la query.
bq query --nouse_legacy_sql ' SELECT SUM(c.amount) AS amount_total, z.state_code AS state_code FROM `bq_load_codelab.customer_transactions` c JOIN `bigquery-public-data.utility_us.zipcode_area` z ON c.zip = z.zipcode GROUP BY state_code '
Il comando dovrebbe restituire un output simile al seguente:
Waiting on bqjob_r26...05a15b38_1 ... (1s) Current status: DONE +--------------+------------+ | amount_total | state_code | +--------------+------------+ | 53.6 | NY | | 7.18 | TX | +--------------+------------+
La query che hai eseguito ha utilizzato un set di dati pubblico e quello privato. Per ulteriori informazioni, leggi questa versione commentata della stessa query:
#standardSQL SELECT /* Total of all transactions in the state. */ SUM(c.amount) AS amount_total, /* State corresponding to the transaction's zipcode. */ z.state_code AS state_code /* Query the table you just constructed. * Note: If you omit the project from the table ID, * the dataset is read from your project. */ FROM `bq_load_codelab.customer_transactions` c /* Join the table to the zipcode public dataset. */ JOIN `bigquery-public-data.utility_us.zipcode_area` z /* Find the state corresponding to the transaction's zipcode. */ ON c.zip = z.zipcode /* Group over all transactions by state. */ GROUP BY state_code
7. Esegui la pulizia
Elimina il set di dati che hai creato con il comando bq rm. Usa il flag -r per rimuovere tutte le tabelle che contiene.
bq rm -r bq_load_codelab
8. Complimenti
Hai caricato una tabella in BigQuery ed hai eseguito una query.
Argomenti trattati
- Utilizzo dello strumento a riga di comando
bq
per interagire con BigQuery. - Unione dei tuoi dati e di un set di dati pubblico con una query BigQuery.
Passaggi successivi
Scopri di più su:
- Lo strumento a riga di comando
bq
- Altri modi per caricare i dati in BigQuery.
- Altri set di dati pubblici disponibili tramite BigQuery.
- Dati su meteo, criminalità e altri tipi di dati in TIL con BigQuery.