Questo tutorial descrive come esplorare e visualizzare i dati utilizzando la libreria client BigQuery per Python e pandas in un'istanza di blocco note Jupyter gestito su Vertex AI Workbench. Gli strumenti di visualizzazione dei dati possono aiutarti ad analizzare i dati di BigQuery in modo interattivo, a identificare le tendenze e a comunicare gli approfondimenti ricavati dai dati. Questo tutorial utilizza i dati del set di dati pubblico BigQuery di Google Trends.
Obiettivi
- Crea un'istanza di notebook Jupyter gestita utilizzando Vertex AI Workbench.
- Esegui query sui dati di BigQuery utilizzando i comandi magici nei notebook.
- Esegui query e visualizza i dati di BigQuery utilizzando la libreria client Python di BigQuery e Pandas.
Costi
BigQuery è un prodotto a pagamento, pertanto l'accesso a BigQuery comporta costi di utilizzo. Il primo TB di dati di query elaborati ogni mese è gratuito. Per ulteriori informazioni, consulta la pagina relativa ai prezzi di BigQuery.
Vertex AI Workbench è un prodotto a pagamento e l'utilizzo delle istanze di Vertex AI Workbench comporta costi di calcolo, archiviazione e gestione. Per ulteriori informazioni, consulta la pagina relativa ai prezzi di Vertex AI Workbench.
Prima di iniziare
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery API.
Per i nuovi progetti, BigQuery viene attivato automaticamente.
Abilita l'API Notebooks.
Panoramica: notebook Jupyter
Un blocco note fornisce un ambiente in cui creare ed eseguire codice. Un notebook è essenzialmente un elemento di origine salvato come file IPYNB. Può contenere contenuti di testo descrittivi, blocchi di codice eseguibili e output visualizzato come HTML interattivo.
Dal punto di vista strutturale, un notebook è una sequenza di celle. Una cella è un blocco di testo di input che viene valutato per produrre risultati. Le celle possono essere di tre tipi:
- Le celle di codice contengono il codice da valutare. L'output o i risultati del codice eseguito vengono visualizzati in linea con il codice eseguito.
- Le celle Markdown contengono testo Markdown che viene convertito in HTML per produrre intestazioni, elenchi e testo formattato.
- Le celle non elaborate possono essere utilizzate per eseguire il rendering di diversi formati di codice in HTML o LaTeX.
L'immagine seguente mostra una cella Markdown seguita da una cella di codice Python e poi dall'output:
Ogni notebook aperto è associato a una sessione in esecuzione (noto anche come kernel in Python). Questa sessione esegue tutto il codice nel notebook e gestisce lo stato. Lo stato include le variabili con i relativi valori, le funzioni e le classi, nonché eventuali moduli Python esistenti caricati.
In Google Cloud, puoi utilizzare un ambiente basato su notebook di Vertex AI Workbench per eseguire query ed esplorare i dati, sviluppare e addestrare un modello ed eseguire il codice all'interno di una pipeline. In questo tutorial, crei un'istanza di blocco note gestito su Vertex AI Workbench e poi esplori i dati BigQuery all'interno dell'interfaccia JupyterLab.
Crea un'istanza di blocchi note gestiti
In questa sezione, configuri un'istanza JupyterLab su Google Cloud in modo da poter creare notebook gestiti.
Nella console Google Cloud, vai alla pagina Workbench.
Fai clic su
Nuovo blocco note.Nel campo Nome notebook, inserisci un nome per l'istanza.
Nell'elenco Regione, seleziona una regione per l'istanza.
Nella sezione Autorizzazione, seleziona un'opzione per definire gli utenti che possono accedere all'istanza dei blocchi note gestiti:
- Account di servizio: questa opzione consente l'accesso a tutti gli utenti che hanno accesso all'account di servizio Compute Engine collegato al runtime. Per specificare il tuo account di servizio, deseleziona la casella di controllo Utilizza l'account di servizio predefinito di Compute Engine e inserisci l'indirizzo email dell'account di servizio che vuoi utilizzare. Per ulteriori informazioni sugli account di servizio, consulta Tipi di account di servizio.
- Solo utente singolo: questa opzione consente di accedere solo a un utente specifico. Nel campo Indirizzo email utente, inserisci l'indirizzo email dell'account dell'utente che utilizzerà l'istanza di Notebook gestiti.
(Facoltativo) Per modificare le impostazioni avanzate dell'istanza, fai clic su Impostazioni avanzate. Per ulteriori informazioni, consulta Creare un'istanza utilizzando le impostazioni avanzate.
Fai clic su Crea.
Attendi qualche minuto per la creazione dell'istanza. Vertex AI Workbench avvia automaticamente l'istanza. Quando l'istanza è pronta per l'uso, Vertex AI Workbench attiva un link Apri JupyterLab.
Sfogliare le risorse BigQuery in JupyterLab
In questa sezione apri JupyterLab ed esplori le risorse BigQuery disponibili in un'istanza di blocchi note gestita.
Nella riga dell'istanza di blocchi note gestita che hai creato, fai clic su Apri JupyterLab.
Se ti viene richiesto, fai clic su Autenticati se accetti i termini. L'istanza di JupyterLab gestita apre JupyterLab in una nuova scheda del browser.
Nel menu di navigazione di JupyterLab, fai clic su BigQuery in Notebooks.
Il riquadro BigQuery elenca i progetti e i set di dati disponibili, in cui puoi eseguire le seguenti attività:
- Per visualizzare una descrizione di un set di dati, fai doppio clic sul nome del set di dati.
- Per visualizzare le tabelle, le visualizzazioni e i modelli di un set di dati, espandi il set di dati.
- Per aprire una descrizione di riepilogo come scheda in JupyterLab, fai doppio clic su una tabella, una vista o un modello.
Nota:nella descrizione di riepilogo di una tabella, fai clic sulla scheda Anteprima per visualizzare l'anteprima dei dati di una tabella. L'immagine seguente mostra un'anteprima della tabella
international_top_terms
nel set di datigoogle_trends
del progettobigquery-public-data
:
Esegui query sui dati del notebook utilizzando il comando magico %%bigquery
In questa sezione scrivi SQL direttamente nelle celle del notebook e leggi i dati da BigQuery nel notebook Python.
I comandi magici che utilizzano un carattere percentuale singolo o doppio (%
o %%
)
ti consentono di utilizzare una sintassi minima per interagire con BigQuery all'interno del
notebook. La libreria client di BigQuery per Python viene installata automaticamente in un'istanza di notebook gestita. Dietro le quinte, il comando magico %%bigquery
utilizza la libreria client BigQuery per Python per eseguire la query specificata, convertire i risultati in un DataFrame Pandas, eventualmente salvarli in una variabile e poi visualizzarli.
Nota: a partire dalla versione 1.26.0 del pacchetto Python google-cloud-bigquery
,
l'API BigQuery Storage
viene utilizzata per impostazione predefinita per scaricare i risultati dalle magie %%bigquery
.
Per aprire un file del blocco note, seleziona File > Nuovo > Blocco note.
Nella finestra di dialogo Seleziona kernel, seleziona Python (locale) e poi fai clic su Seleziona.
Si apre il nuovo file IPYNB.
Per ottenere il numero di regioni per paese nel set di dati
international_top_terms
, inserisci la seguente istruzione:%%bigquery SELECT country_code, country_name, COUNT(DISTINCT region_code) AS num_regions FROM `bigquery-public-data.google_trends.international_top_terms` WHERE refresh_date = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) GROUP BY country_code, country_name ORDER BY num_regions DESC;
Fai clic su
Esegui cella.L'output è simile al seguente:
Query complete after 0.07s: 100%|██████████| 4/4 [00:00<00:00, 1440.60query/s] Downloading: 100%|██████████| 41/41 [00:02<00:00, 20.21rows/s] country_code country_name num_regions 0 TR Turkey 81 1 TH Thailand 77 2 VN Vietnam 63 3 JP Japan 47 4 RO Romania 42 5 NG Nigeria 37 6 IN India 36 7 ID Indonesia 34 8 CO Colombia 33 9 MX Mexico 32 10 BR Brazil 27 11 EG Egypt 27 12 UA Ukraine 27 13 CH Switzerland 26 14 AR Argentina 24 15 FR France 22 16 SE Sweden 21 17 HU Hungary 20 18 IT Italy 20 19 PT Portugal 20 20 NO Norway 19 21 FI Finland 18 22 NZ New Zealand 17 23 PH Philippines 17 ...
Nella cella successiva (sotto l'output della cella precedente), inserisci il seguente comando per eseguire la stessa query, ma questa volta salva i risultati in un nuovo DataFrame Pandas denominato
regions_by_country
. Fornisci questo nome utilizzando un argomento con il comando magico%%bigquery
.%%bigquery regions_by_country SELECT country_code, country_name, COUNT(DISTINCT region_code) AS num_regions FROM `bigquery-public-data.google_trends.international_top_terms` WHERE refresh_date = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) GROUP BY country_code, country_name ORDER BY num_regions DESC;
Nota:per ulteriori informazioni sugli argomenti disponibili per il comando
%%bigquery
, consulta la documentazione sui comandi magici della libreria client.Fai clic su
Esegui cella.Nella cella successiva, inserisci il seguente comando per esaminare le prime righe dei risultati della query che hai appena letto:
regions_by_country.head()
Fai clic su
Esegui cella.Il DataFrame pandas
regions_by_country
è pronto per il grafico.
Esegui query sui dati in un notebook utilizzando direttamente la libreria client BigQuery
In questa sezione utilizzerai la libreria client di BigQuery per Python direttamente per leggere i dati nel notebook Python.
La libreria client ti offre un maggiore controllo sulle query e ti consente di utilizzare configurazioni più complesse per query e job. Le integrazioni della libreria con pandas ti consentono di combinare la potenza dell'SQL dichiarativo con il codice imperativo (Python) per aiutarti ad analizzare, visualizzare e trasformare i dati.
Nota: puoi utilizzare una serie di librerie Python per l'analisi, la gestione e la visualizzazione dei dati, come numpy
, pandas
, matplotlib
e molte altre. Molte di queste librerie sono basate su un oggetto DataFrame.
Nella cella successiva, inserisci il seguente codice Python per importare la libreria client di BigQuery per Python e inizializzare un client:
from google.cloud import bigquery client = bigquery.Client()
Il client BigQuery viene utilizzato per inviare e ricevere messaggi dall'API BigQuery.
Fai clic su
Esegui cella.Nella cella successiva, inserisci il seguente codice per recuperare la percentuale di termini principali giornalieri negli Stati Uniti
top_terms
che si sovrappongono nel tempo in base al numero di giorni di distanza. L'idea è esaminare i termini principali di ogni giorno e vedere quale percentuale si sovrappone ai termini principali del giorno precedente, dei due giorni precedenti, dei tre giorni precedenti e così via (per tutte le coppie di date nell'arco di circa un mese).sql = """ WITH TopTermsByDate AS ( SELECT DISTINCT refresh_date AS date, term FROM `bigquery-public-data.google_trends.top_terms` ), DistinctDates AS ( SELECT DISTINCT date FROM TopTermsByDate ) SELECT DATE_DIFF(Dates2.date, Date1Terms.date, DAY) AS days_apart, COUNT(DISTINCT (Dates2.date || Date1Terms.date)) AS num_date_pairs, COUNT(Date1Terms.term) AS num_date1_terms, SUM(IF(Date2Terms.term IS NOT NULL, 1, 0)) AS overlap_terms, SAFE_DIVIDE( SUM(IF(Date2Terms.term IS NOT NULL, 1, 0)), COUNT(Date1Terms.term) ) AS pct_overlap_terms FROM TopTermsByDate AS Date1Terms CROSS JOIN DistinctDates AS Dates2 LEFT JOIN TopTermsByDate AS Date2Terms ON Dates2.date = Date2Terms.date AND Date1Terms.term = Date2Terms.term WHERE Date1Terms.date <= Dates2.date GROUP BY days_apart ORDER BY days_apart; """ pct_overlap_terms_by_days_apart = client.query(sql).to_dataframe() pct_overlap_terms_by_days_apart.head()
Il codice SQL utilizzato viene incapsulato in una stringa Python e poi passato al metodo
query()
per eseguire una query. Il metodoto_dataframe
attende il termine della query e scarica i risultati in un DataFrame Pandas utilizzando l'API BigQuery Storage.Fai clic su
Esegui cella.Le prime righe dei risultati della query vengono visualizzate sotto la cella di codice.
days_apart num_date_pairs num_date1_terms overlap_terms pct_overlap_terms 0 0 32 800 800 1.000000 1 1 31 775 203 0.261935 2 2 30 750 73 0.097333 3 3 29 725 31 0.042759 4 4 28 700 23 0.032857
Per ulteriori informazioni sull'utilizzo delle librerie client di BigQuery, consulta la guida rapida Utilizzo delle librerie client.
Visualizzare i dati di BigQuery
In questa sezione, utilizzerai le funzionalità di rappresentazione grafica per visualizzare i risultati delle query eseguite in precedenza nel tuo Jupyter Notebook.
Nella cella successiva, inserisci il seguente codice per utilizzare il metodo pandas
DataFrame.plot()
per creare un grafico a barre che visualizzi i risultati della query che restituisce il numero di regioni per paese:regions_by_country.plot(kind="bar", x="country_name", y="num_regions", figsize=(15, 10))
Fai clic su
Esegui cella.Il grafico è simile al seguente:
Nella cella successiva, inserisci il seguente codice per utilizzare il metodo pandas
DataFrame.plot()
per creare un grafico a dispersione che visualizzi i risultati della query per la percentuale di sovrapposizione dei termini di ricerca principali con intervalli di giorni:pct_overlap_terms_by_days_apart.plot( kind="scatter", x="days_apart", y="pct_overlap_terms", s=len(pct_overlap_terms_by_days_apart["num_date_pairs"]) * 20, figsize=(15, 10) )
Fai clic su
Esegui cella.Il grafico è simile al seguente. Le dimensioni di ogni punto riflettono il numero di coppie di date distanti quel numero di giorni nei dati. Ad esempio, esistono più coppie con un giorno di distanza rispetto a 30 giorni perché i termini di ricerca più cercati vengono visualizzati quotidianamente nell'arco di circa un mese.
Per saperne di più sulla visualizzazione dei dati, consulta la documentazione di pandas.
Utilizza l'espressione magica %bigquery_stats per ottenere statistiche e visualizzazioni per tutte le colonne della tabella
In questa sezione utilizzerai una scorciatoia del notebook per ottenere statistiche di riepilogo e visualizzazioni per tutti i campi di una tabella BigQuery.
La libreria client BigQuery fornisce un comando magico,%bigquery_stats
, che puoi chiamare con il nome di una tabella specifica per fornire una panoramica della tabella e statistiche dettagliate su ciascuna delle colonne della tabella.
Nella cella successiva, inserisci il seguente codice per eseguire l'analisi sulla tabella
top_terms
degli Stati Uniti:%bigquery_stats bigquery-public-data.google_trends.top_terms
Fai clic su
Esegui cella.Dopo l'esecuzione per un po' di tempo, viene visualizzata un'immagine con varie statistiche su ciascuna delle 7 variabili nella tabella
top_terms
. L'immagine seguente mostra parte di un output di esempio:
Visualizzare la cronologia delle query e riutilizzare le query
Per visualizzare la cronologia delle query come scheda in JupyterLab:
Nel menu di navigazione di JupyterLab, fai clic su BigQuery in Notebooks per aprire il riquadro BigQuery.
Nel riquadro BigQuery, scorri verso il basso e fai clic su Cronologia delle query.
In una nuova scheda si apre un elenco delle tue query, in cui puoi eseguire operazioni come:
- Per visualizzare i dettagli di una query, ad esempio l'ID job, la data di esecuzione e il tempo impiegato, fai clic sulla query.
- Per rivedere la query, eseguirla di nuovo o copiarla nel tuo notebook per usarla in futuro, fai clic su Apri query nell'editor.
Salvare e scaricare il blocco note
In questa sezione, dopo aver ripulito le risorse utilizzate in questo tutorial, salvi il notebook e lo scarichi se vuoi utilizzarlo in futuro.
- Seleziona File > Salva notebook.
- Seleziona File > Scarica per scaricare una copia locale del tuo notebook come file IPYNB sul tuo computer.
Esegui la pulizia
Il modo più semplice per eliminare la fatturazione è eliminare il progetto Google Cloud che hai creato per questo tutorial.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Passaggi successivi
- Per scoprire di più sulla scrittura di query per BigQuery, consulta Eseguire job di query interattive e in batch.
- Per scoprire di più su Vertex AI Workbench, consulta Vertex AI Workbench.