Esplorare e visualizzare i dati in BigQuery da JupyterLab
Questa pagina mostra alcuni esempi di come esplorare e visualizzare i dati archiviati in BigQuery dall'interfaccia JupyterLab dell'istanza Workbench di Agent Platform di Gemini Enterprise.
Prima di iniziare
Se non l'hai ancora fatto, crea un'istanza Workbench di Agent Platform.
Ruoli obbligatori
Per assicurarti che il account di servizio dell'istanza disponga delle autorizzazioni necessarie per eseguire query sui dati in BigQuery, chiedi all'amministratore di concedere il ruolo IAM Consumer di utilizzo del servizio (roles/serviceusage.serviceUsageConsumer) al account di servizio dell'istanza nel progetto.
L'amministratore potrebbe anche assegnare al account di servizio dell'istanza le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.
Apri JupyterLab
Nella Google Cloud console, vai alla pagina Istanze.
Fai clic su Apri JupyterLab accanto al nome dell'istanza Workbench di Agent Platform.
L'istanza Workbench di Agent Platform apre JupyterLab.
Leggi i dati da BigQuery
Nelle due sezioni successive, leggerai i dati da BigQuery che utilizzerai per visualizzare in un secondo momento. Questi passaggi sono identici a quelli descritti in Esegui query sui dati in BigQuery da JupyterLab, quindi, se li hai già completati, puoi passare a Ottieni un riepilogo dei dati in una tabella BigQuery.
Esegui query sui dati 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 singolo o doppio carattere percentuale (% o %%)
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 Workbench di Agent Platform. Dietro le quinte, il comando magico %%bigquery utilizza la libreria client di BigQuery per Python per eseguire la query specificata, convertire i risultati in un DataFrame pandas, salvare facoltativamente i risultati in una variabile e quindi 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 dai comandi magici %%bigquery.
Per aprire un file notebook, seleziona File > Nuovo > Notebook.
Nella finestra di dialogo Seleziona kernel , seleziona Python 3 e poi fai clic su Seleziona.
Viene aperto 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. Puoi fornire 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 saperne di più sugli argomenti disponibili per il
%%bigquerycomando, consulta la documentazione dei 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 appena letti:
regions_by_country.head()Fai clic su Esegui cella.
Il DataFrame pandas
regions_by_countryè pronto per essere tracciato.
Esegui query sui dati utilizzando direttamente la libreria client di BigQuery
In questa sezione, utilizzerai direttamente la libreria client di BigQuery per Python 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 di SQL dichiarativo con codice imperativo (Python) per analizzare, visualizzare e trasformare i dati.
Nota:puoi utilizzare una serie di librerie Python per l'analisi, il data wrangling 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_termsche si sovrappongono nel tempo in base al numero di giorni di distanza. L'idea è di esaminare i termini principali di ogni giorno e vedere la percentuale di sovrapposizione con i termini principali del giorno precedente, di 2 giorni prima, di 3 giorni prima e così via (per tutte le coppie di date in un periodo 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()
L'SQL utilizzato è incapsulato in una stringa Python e poi passato al
query()metodo per eseguire una query. Ilto_dataframemetodo attende il completamento 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 saperne di più sull'utilizzo delle librerie client di BigQuery, consulta la guida rapida Utilizzo delle librerie client.
Ottieni un riepilogo dei dati in una tabella BigQuery
In questa sezione, utilizzerai una scorciatoia del notebook per ottenere statistiche di riepilogo e visualizzazioni per tutti i campi di una tabella BigQuery. Questo può essere un modo rapido per profilare i dati prima di esplorarli ulteriormente.
La libreria client di BigQuery fornisce un comando magico, %bigquery_stats, che puoi chiamare con un nome di tabella specifico 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 US
top_terms:%bigquery_stats bigquery-public-data.google_trends.top_termsFai clic su Esegui cella.
Dopo un po' di tempo, viene visualizzata un'immagine con varie statistiche su ciascuna delle 7 variabili della tabella
top_terms. L'immagine seguente mostra una parte di alcuni output di esempio:
Visualizza i dati di BigQuery
In questa sezione, utilizzerai le funzionalità di tracciamento per visualizzare i risultati delle query eseguite in precedenza nel notebook Jupyter.
Nella cella successiva, inserisci il seguente codice per utilizzare il metodo
DataFrame.plot()di pandas 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
DataFrame.plot()di pandas per creare un grafico a dispersione che visualizzi i risultati della query per la percentuale di sovrapposizione nei termini di ricerca principali in base ai giorni di distanza: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. La dimensione di ogni punto riflette il numero di coppie di date che distano di tanti giorni nei dati. Ad esempio, ci sono più coppie che distano di 1 giorno rispetto a 30 giorni, perché i termini di ricerca principali vengono visualizzati quotidianamente per circa un mese.
Per saperne di più sulla visualizzazione dei dati, consulta la documentazione di pandas.