Esplora e visualizza i dati in BigQuery da JupyterLab

Questa pagina mostra alcuni esempi di come esplorare e visualizzare i dati memorizzati in BigQuery dall'interfaccia JupyterLab della tua istanza Vertex AI Workbench.

Prima di iniziare

Se non l'hai già fatto, creazione un'istanza di Vertex AI Workbench.

Ruoli obbligatori

Per assicurarti che l'account di servizio della tua istanza abbia le autorizzazioni necessarie per eseguire query sui dati in BigQuery, chiedi all'amministratore di concedere all'account di servizio della tua istanza il ruolo IAM Consumer di utilizzo del servizio (roles/serviceusage.serviceUsageConsumer) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

L'amministratore potrebbe anche essere in grado di fornire l'account di servizio dell'istanza le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

Apri JupyterLab

  1. Nella console Google Cloud, vai alla pagina Istanze.

    Vai a Istanze

  2. Accanto al nome dell'istanza di Vertex AI Workbench, fai clic su Apri JupyterLab.

    La tua istanza di Vertex AI Workbench apre JupyterLab.

Leggi i dati da BigQuery

Nelle due sezioni successive leggerai i dati di BigQuery che utilizzerai per la visualizzazione in un secondo momento. Questi passaggi sono identici in Esegui query sui dati in BigQuery da in JupyterLab, quindi se hai completato puoi passare direttamente alle Visualizza un riepilogo dei dati in una tabella BigQuery.

Query sui dati con 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 uno o due caratteri percentuali (% o %%) consentono di utilizzare una sintassi minima per interagire con BigQuery all'interno un blocco note personalizzato. La libreria client BigQuery per Python viene automaticamente installato in un'istanza di Vertex AI Workbench. 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 utilizzato per impostazione predefinita per scaricare i risultati di %%bigquery.

  1. Per aprire un file del blocco note, seleziona File > Nuovo > Blocco note.

  2. Nella finestra di dialogo Seleziona kernel, seleziona Python 3, quindi fai clic su Seleziona.

    Si apre il nuovo file IPYNB.

  3. 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;
  4. 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
    ...
    
  5. Nella cella successiva (sotto l'output della cella precedente), inserisci il comando seguente per eseguire la stessa query, ma questa volta salva i risultati un nuovo DataFrame pandas denominato regions_by_country. Sei tu a garantire che 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.

  6. Fai clic su  Esegui cella.

  7. Nella cella successiva, inserisci il seguente comando per esaminare le prime righe dei risultati della query che hai appena letto:

    regions_by_country.head()
    
  8. Fai clic su  Esegui cella.

    Il DataFrame regions_by_country pandas è pronto per il grafico.

Query sui dati utilizzando direttamente la libreria client di BigQuery

In questa sezione utilizzerai la libreria client BigQuery per Python per leggere i dati nel blocco note 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 del linguaggio SQL dichiarativo con il codice imperativo (Python) per aiutarti ad analizzare, visualizzare e trasformare i dati.

Nota:puoi utilizzare varie funzionalità di analisi dei dati, data wrangling e librerie di visualizzazione, come numpy, pandas, matplotlib e molte altri. Molte di queste librerie sono basate su un oggetto DataFrame.

  1. 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.

  2. Fai clic su  Esegui cella.

  3. 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, di 2 giorni prima, di 3 giorni prima 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 metodo to_dataframe attende il completamento della query e scarica i risultati in un pandas tramite l'API BigQuery Storage.

  4. 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.

Ottenere 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 creare il profilo dei dati prima di effettuare ulteriori esplorazioni.

La libreria client di BigQuery fornisce un comando magico, %bigquery_stats, che puoi chiamare con il nome di una tabella specifica per fornire un panoramica della tabella e statistiche dettagliate su ciascuna colonne.

  1. 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
    
  2. 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. La seguente immagine mostra parte di un output di esempio:

    Panoramica delle statistiche sui termini più cercati a livello internazionale.

Visualizza i dati di BigQuery

In questa sezione, utilizzerai le funzionalità di tracciamento per visualizzare i risultati le query che hai eseguito in precedenza nel blocco note Jupyter.

  1. Nella cella successiva, inserisci il seguente codice per utilizzare Pandas DataFrame.plot() metodo per creare un grafico a barre che mostri 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))
    
  2. Fai clic su  Esegui cella.

    Il grafico è simile al seguente:

    Risultati per i termini principali internazionali per paese

  3. Nella cella successiva, inserisci il seguente codice per utilizzare Pandas DataFrame.plot() per creare un grafico a dispersione che mostri il risultati della query per la percentuale di sovrapposizione nei termini di ricerca più cercati di giorni di differenza:

    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)
      )
    
  4. Fai clic su  Esegui cella.

    Il grafico è simile al seguente. Le dimensioni di ogni punto riflettono il numero di coppie di date che si trovano a molti giorni l'una dall'altra nei dati. Per Ad esempio, ci sono più coppie a distanza di 1 giorno l'una dall'altra rispetto a 30 giorni perché i termini di ricerca più utilizzati vengono visualizzati ogni giorno nell'arco di circa un mese.

    Grafico dei termini più utilizzati a livello internazionale con giorni di distanza.

Per ulteriori informazioni sulla visualizzazione dei dati, consulta documentazione di Pandas.

Passaggi successivi