Daten in BigQuery über JupyterLab abfragen

Auf dieser Seite wird gezeigt, wie Sie in BigQuery gespeicherte Daten über die JupyterLab-Oberfläche Ihrer Vertex AI Workbench-Instanz abfragen.

Methoden zum Abfragen von BigQuery-Daten in Notebookdateien (IPYNB)

Zum Abfragen von BigQuery-Daten in einer JupyterLab-Notebookdatei können Sie den magischen %%bigquery-Befehl und die BigQuery-Clientbibliothek für Python verwenden.

Vertex AI Workbench-Instanzen enthalten auch eine BigQuery-Einbindung, mit der Sie in Daten über die JupyterLab-Oberfläche suchen und abfragen können.

Auf dieser Seite wird die Verwendung der einzelnen Methoden beschrieben.

Hinweis

Falls noch nicht geschehen, erstellen Sie eine Vertex AI Workbench-Instanz.

Erforderliche Rollen

Damit das Dienstkonto Ihrer Instanz die erforderlichen Berechtigungen zum Abfragen von Daten in BigQuery hat, bitten Sie Ihren Administrator, dem Dienstkonto Ihrer Instanz die IAM-Rolle „Service Usage-Nutzer“ (roles/serviceusage.serviceUsageConsumer) für das Projekt zu gewähren. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Ihr Administrator kann dem Dienstkonto Ihrer Instanz möglicherweise auch die erforderlichen Berechtigungen über benutzerdefinierte Rollen oder andere vordefinierte Rollen erteilen.

JupyterLab öffnen

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Zur Seite „VM-Instanzen“

  2. Klicken Sie neben dem Namen der Vertex AI Workbench-Instanz auf JupyterLab öffnen.

    Ihre Vertex AI Workbench-Instanz öffnet JupyterLab.

BigQuery-Ressourcen durchsuchen

Die BigQuery-Einbindung bietet einen Bereich zum Durchsuchen der BigQuery-Ressourcen, auf die Sie Zugriff haben.

  1. Klicken Sie im JupyterLab-Navigationsmenü auf BigQuery BigQuery in Notebooks.

    Im Bereich BigQuery werden die verfügbaren Projekte und Datasets aufgeführt, in denen Sie Aufgaben so ausführen können:

    • Doppelklicken Sie auf den Namen eines Datasets, um die Beschreibung des Datasets aufzurufen.
    • Erweitern Sie das Dataset, um dessen Tabellen, Ansichten und Modelle anzuzeigen.
    • Doppelklicken Sie auf eine Tabelle, eine Ansicht oder ein Modell, um eine Kurzbeschreibung als Tab in JupyterLab zu öffnen.

    Hinweis: Klicken Sie in der Kurzbeschreibung für eine Tabelle auf den Tab Vorschau, um eine Vorschau der Tabellendaten aufzurufen. Die folgende Abbildung zeigt eine Vorschau der Tabelle international_top_terms, die im google_trends-Dataset im bigquery-public-data-Projekt zu finden ist:

    Liste der wichtigsten internationalen Begriffe.

Daten mit dem magischen %%bigquery-Befehl abfragen

In diesem Abschnitt schreiben Sie SQL direkt in Notebook-Zellen und schreiben Daten aus BigQuery in das Python-Notebook.

Mit magischen Befehlen, die ein einzelnes oder doppeltes Prozentzeichen (% oder %%) verwenden, nutzen Sie eine minimale Syntax zur Interaktion mit BigQuery im Notebook. Die BigQuery-Clientbibliothek für Python wird automatisch in einer Vertex AI Workbench-Instanz installiert. Im Hintergrund verwendet der magische Befehl %%bigquery die BigQuery-Clientbibliothek für Python, um die angegebene Abfrage auszuführen. Die Ergebnisse werden in ein Pandas-DataFrame umgewandelt und optional in einer Variablen gespeichert. Anschließend werden die Ergebnisse angezeigt.

Hinweis: Ab Version 1.26.0 des Python-Pakets google-cloud-bigquery wird die BigQuery Storage API standardmäßig verwendet, um Ergebnisse aus den magischen %%bigquery-Befehlen herunterzuladen.

  1. Wählen Sie zum Öffnen einer Notebook-Datei Datei > Neu > Notebook aus.

  2. Wählen Sie im Dialogfeld Kernel auswählen die Option Python 3 aus und klicken Sie dann auf Auswählen.

    Ihre neue IPYNB-Datei wird geöffnet.

  3. Geben Sie folgende Anweisung ein, um die Anzahl der Regionen nach Land im Dataset international_top_terms abzurufen:

    %%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. Klicken Sie auf  Zelle ausführen.

    Die Ausgabe sieht etwa so aus:

    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. Geben Sie in die nächste Zelle (unter der Ausgabe der vorherigen Zelle) den folgenden Befehl ein, um dieselbe Abfrage auszuführen. Dieses Mal speichern Sie die Ergebnisse jedoch in einem neuen Pandas-DataFrame namens regions_by_country. Sie geben diesen Namen über ein Argument mit dem magischen Befehl %%bigquery an.

    %%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;
    

    Hinweis: Weitere Informationen zu verfügbaren Argumenten für den %%bigquery-Befehl finden Sie in der Clientbibliothek-Dokumentation der magischen Befehle.

  6. Klicken Sie auf  Zelle ausführen.

  7. Geben Sie in die nächste Zelle folgenden Befehl ein, um die ersten Zeilen der Abfrageergebnisse aufzurufen, die Sie gerade eingelesen haben:

    regions_by_country.head()
    
  8. Klicken Sie auf  Zelle ausführen.

    Der Pandas-DataFrame regions_by_country kann jetzt dargestellt werden.

Daten direkt mit der BigQuery-Clientbibliothek abfragen

In diesem Abschnitt verwenden Sie die BigQuery-Clientbibliothek für Python, um Daten direkt in das Python-Notebook zu lesen.

Mit der Clientbibliothek haben Sie mehr Kontrolle über Ihre Abfragen und können komplexere Konfigurationen für Abfragen und Jobs nutzen. Durch die Einbindung der Bibliothek in Pandas können Sie deklarativen SQL-Dialekt mit imperativem Code (Python) kombinieren, um die Daten zu analysieren, zu visualisieren und zu transformieren.

Hinweis: Sie können verschiedene Python-Bibliotheken für Datenanalyse, Data Wrangling und Visualisierung verwenden, z. B. numpy, pandas, matplotlib viele weitere. Mehrerer dieser Bibliotheken basieren auf einem DataFrame-Objekt.

  1. Geben Sie in die nächste Zelle folgenden Python-Code ein, um die BigQuery-Clientbibliothek für Python zu importieren und einen Client zu initialisieren:

    from google.cloud import bigquery
    
    client = bigquery.Client()
    

    Der BigQuery-Client wird zum Senden und Empfangen von Nachrichten von der BigQuery API verwendet.

  2. Klicken Sie auf  Zelle ausführen.

  3. Geben Sie in die nächste Zelle folgenden Code ein, um den Prozentsatz der täglichen Top-Suchbegriffe in den US-top_terms abzurufen, die sich im Laufe der Zeit überschneiden; dabei wird deren Abstand nach Tagen berücksichtigt. Der Grundgedanke ist dabei, dass Sie sich die Top-Begriffe des jeweiligen Tages ansehen und herausfinden, welcher Prozentsatz dieser Begriffe mit den Top-Begriffen vom Vortag, von zwei Tagen zuvor, drei Tagen zuvor usw. überlappen. Es werden Paare von Datumsangaben über einen Zeitraum von einem Monat berücksichtigt.

    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()
    

    Das verwendete SQL-Objekt ist in einem Python-String gekapselt und wird dann zur Ausführung einer Abfrage an die query()-Methode übergeben. Die to_dataframe-Methode wartet, bis die Abfrage abgeschlossen ist, und lädt die Ergebnisse mit der BigQuery Storage API in einen Pandas-DataFrame.

  4. Klicken Sie auf  Zelle ausführen.

    Die ersten Zeilen der Abfrageergebnisse werden unterhalb der Codezelle angezeigt.

       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
    

Weitere Informationen zur Verwendung von BigQuery-Clientbibliotheken finden Sie in der Kurzanleitung Clientbibliotheken verwenden.

Daten mit der BigQuery-Integration in Vertex AI Workbench abfragen

Die BigQuery-Einbindung bietet zwei zusätzliche Methoden zum Abfragen von Daten. Diese Methoden unterscheiden sich von dem magischen %%bigquery-Befehl.

  • Der Zellenabfrageeditor ist ein Zellentyp, den Sie in Ihren Notebookdateien verwenden können.

  • Der eigenständige Abfrageeditor wird in JupyterLab als separater Tab geöffnet.

Zellenabfrage

Gehen Sie so vor, um Daten in einer BigQuery-Tabelle mit dem Zellenabfrageeditor abzufragen:

  1. Öffnen Sie in JupyterLab eine Notebook-Datei (IPYNB) oder erstellen Sie eine neue.

  2. Klicken Sie zum Erstellen eines Zellenabfrageeditors auf die Zelle und dann rechts neben der Zelle auf die Schaltfläche  BigQuery-Einbindung. Geben Sie alternativ in eine Markdown-Zelle #@BigQuery ein.

    Die BigQuery-Einbindung wandelt die Zelle in einen Zellenabfrageeditor um.

  3. Schreiben Sie in einer neuen Zeile unter #@BigQuery Ihre Abfrage mit den unterstützten Anweisungen und SQL-Dialekten von BigQuery. Wenn in Ihrer Abfrage Fehler erkannt werden, wird rechts oben im Abfrageeditor eine Fehlermeldung angezeigt. Wenn die Abfrage gültig ist, wird die geschätzte Anzahl der zu verarbeitenden Byte angezeigt.

  4. Klicken Sie auf Abfrage senden. Ihre Abfrageergebnisse werden angezeigt. Standardmäßig enthalten Abfrageergebnisse eine Paginierung von 100 Zeilen pro Seite und sind auf insgesamt 1.000 Zeilen beschränkt. Sie können diese Einstellungen jedoch am Ende der Ergebnistabelle ändern. Beschränken Sie im Abfrageeditor die Abfrage auf die Daten, die Sie zur Überprüfung benötigen. Sie führen diese Abfrage noch einmal in einer Notebookzelle aus, um das Limit bei Bedarf für den vollständigen Ergebnissatz anzupassen.

  5. Klicken Sie auf Abfragen und als DataFrame laden, um automatisch eine neue Zelle mit einem Codesegment hinzuzufügen, das die BigQuery-Clientbibliothek für Python importiert, die Abfrage in einer Notebook-Zelle ausführt und die Ergebnisse in einem Pandas-Dataframe mit dem Namen df speichert.

Eigenständige Abfrage

Führen Sie die folgenden Schritte aus, um mit dem eigenständigen Abfrageeditor Daten in einer BigQuery-Tabelle abzufragen:

  1. Klicken Sie in JupyterLab im Bereich BigQuery in Notebooks mit der rechten Maustaste auf eine Tabelle und wählen Sie Tabelle abfragen aus oder klicken Sie doppelt auf eine Tabelle, um eine Beschreibung in einem separaten Tab zu öffnen, und klicken Sie dann auf den Link Abfragetabelle.

  2. Schreiben Sie Ihre Abfrage mit den unterstützten Anweisungen und SQL-Dialekten von BigQuery. Wenn in Ihrer Abfrage Fehler erkannt werden, wird rechts oben im Abfrageeditor eine Fehlermeldung angezeigt. Wenn die Abfrage gültig ist, wird die geschätzte Anzahl der zu verarbeitenden Byte angezeigt.

  3. Klicken Sie auf Abfrage senden. Ihre Abfrageergebnisse werden angezeigt. Standardmäßig enthalten Abfrageergebnisse eine Paginierung von 100 Zeilen pro Seite und sind auf insgesamt 1.000 Zeilen beschränkt. Sie können diese Einstellungen jedoch am Ende der Ergebnistabelle ändern. Beschränken Sie im Abfrageeditor die Abfrage auf die Daten, die Sie zur Überprüfung benötigen. Sie führen diese Abfrage noch einmal in einer Notebookzelle aus, um das Limit bei Bedarf für den vollständigen Ergebnissatz anzupassen.

  4. Klicken Sie auf Code für DataFrame kopieren, um ein Codesegment zu kopieren, das die BigQuery-Clientbibliothek für Python importiert, Ihre Abfrage in einer Notebookzelle ausführt und die Ergebnisse in einem Pandas-Dataframe mit dem Namen df speichert. Fügen Sie diesen Code einer Notebook-Zelle hinzu, in der Sie ihn ausführen möchten.

Abfrageverlauf ansehen und Abfragen wiederverwenden

Führen Sie die folgenden Schritte aus, um den Abfrageverlauf als Tab in JupyterLab anzuzeigen:

  1. Klicken Sie im JupyterLab-Navigationsmenü auf BigQuery BigQuery in Notebooks, um den Bereich BigQuery zu öffnen.

  2. Scrollen Sie im Bereich BigQuery nach unten und klicken Sie auf BigQuery.

    Markierter Abfrageverlauf unten im linken Navigationsbereich

    Eine Liste Ihrer Abfragen wird in einem neuen Tab geöffnet. Hier können Sie beispielsweise folgende Aufgaben ausführen:

    • Klicken Sie auf die Abfrage, um die Details der Abfrage (Job-ID, Zeit der Ausführung, Dauer der Abfrage usw.) aufzurufen.
    • Klicken Sie auf Abfrage im Editor öffnen, um die Abfrage zu überarbeiten, noch einmal auszuführen oder zur späteren Nutzung in Ihr Notebook zu kopieren.

Nächste Schritte