BigQuery DataFrames-Sitzungen und ‑E/A verwalten

In diesem Dokument wird erläutert, wie Sie Sitzungen verwalten und Eingabe- und Ausgabevorgänge (E/A) ausführen, wenn Sie BigQuery DataFrames verwenden. Sie erfahren, wie Sie Sitzungen erstellen und verwenden, mit In-Memory-Daten arbeiten und aus Dateien und BigQuery-Tabellen lesen und in diese schreiben.

BigQuery-Sitzungen

BigQuery DataFrames verwendet ein lokales Sitzungsobjekt, um Metadaten intern zu verwalten. Jedes DataFrame- und Series-Objekt ist mit einer Sitzung verbunden, jede Sitzung ist mit einem Standort verbunden und jede Abfrage in einer Sitzung wird an dem Standort ausgeführt, an dem Sie die Sitzung erstellt haben. Verwenden Sie das folgende Codebeispiel, um manuell eine Sitzung zu erstellen und sie zum Laden von Daten zu verwenden:

import bigframes
import bigframes.pandas as bpd

# Create session object
context = bigframes.BigQueryOptions(
    project=YOUR_PROJECT_ID,
    location=YOUR_LOCATION,
)
session = bigframes.Session(context)

# Load a BigQuery table into a dataframe
df1 = session.read_gbq("bigquery-public-data.ml_datasets.penguins")

# Create a dataframe with local data:
df2 = bpd.DataFrame({"my_col": [1, 2, 3]}, session=session)

Sie können Daten aus mehreren Sitzungsinstanzen nicht kombinieren, auch wenn Sie sie mit denselben Einstellungen initialisieren. Das folgende Codebeispiel zeigt, dass der Versuch, Daten aus verschiedenen Sitzungsinstanzen zu kombinieren, einen Fehler verursacht:

import bigframes
import bigframes.pandas as bpd

context = bigframes.BigQueryOptions(location=YOUR_LOCATION, project=YOUR_PROJECT_ID)

session1 = bigframes.Session(context)
session2 = bigframes.Session(context)

series1 = bpd.Series([1, 2, 3, 4, 5], session=session1)
series2 = bpd.Series([1, 2, 3, 4, 5], session=session2)

try:
    series1 + series2
except ValueError as e:
    print(e)  # Error message: Cannot use combine sources from multiple sessions

Globale Sitzung

BigQuery DataFrames bietet eine globale Standardsitzung, auf die Sie mit der bigframes.pandas.get_global_session() Methode zugreifen können. In Colab müssen Sie eine Projekt-ID für das bigframes.pandas.options.bigquery.project Attribut angeben, bevor Sie es verwenden. Sie können auch einen Standort mit dem bigframes.pandas.options.bigquery.location Attribut festlegen, das standardmäßig auf die US Multi-Region festgelegt ist.

Das folgende Codebeispiel zeigt, wie Sie Optionen für die globale Sitzung festlegen:

import bigframes.pandas as bpd

# Set project ID for the global session
bpd.options.bigquery.project = YOUR_PROJECT_ID
# Update the global default session location
bpd.options.bigquery.location = YOUR_LOCATION

Wenn Sie den Standort oder das Projekt der globalen Sitzung zurücksetzen möchten, schließen Sie die aktuelle Sitzung durch Ausführen der bigframes.pandas.close_session() Methode.

Viele integrierte BigQuery DataFrames-Funktionen verwenden standardmäßig die globale Sitzung. Das folgende Codebeispiel zeigt, wie integrierte Funktionen die globale Sitzung verwenden:

# The following two statements are essentially the same
df = bpd.read_gbq("bigquery-public-data.ml_datasets.penguins")
df = bpd.get_global_session().read_gbq("bigquery-public-data.ml_datasets.penguins")

In-Memory-Daten

Sie können DataFrames und Series Objekte mit integrierten Python- oder NumPy Datenstrukturen erstellen, ähnlich wie Sie Objekte mit pandas erstellen. Verwenden Sie das folgende Codebeispiel, um ein Objekt zu erstellen:

import numpy as np

import bigframes.pandas as bpd

s = bpd.Series([1, 2, 3])

# Create a dataframe with Python dict
df = bpd.DataFrame(
    {
        "col_1": [1, 2, 3],
        "col_2": [4, 5, 6],
    }
)

# Create a series with Numpy
s = bpd.Series(np.arange(10))

Verwenden Sie das folgende Codebeispiel, um pandas-Objekte mit der read_pandas() -Methode oder Konstruktoren in DataFrames-Objekte zu konvertieren:

import numpy as np
import pandas as pd

import bigframes.pandas as bpd

pd_df = pd.DataFrame(np.random.randn(4, 2))

# Convert Pandas dataframe to BigQuery DataFrame with read_pandas()
df_1 = bpd.read_pandas(pd_df)
# Convert Pandas dataframe to BigQuery DataFrame with the dataframe constructor
df_2 = bpd.DataFrame(pd_df)

Verwenden Sie das folgende Codebeispiel, um die to_pandas() Methode zu verwenden, um BigQuery DataFrames-Daten in Ihren Arbeitsspeicher zu laden:

import bigframes.pandas as bpd

bf_df = bpd.DataFrame({"my_col": [1, 2, 3]})
# Returns a Pandas Dataframe
bf_df.to_pandas()

bf_s = bpd.Series([1, 2, 3])
# Returns a Pandas Series
bf_s.to_pandas()

Kostenschätzung mit dem Parameter dry_run

Das Laden großer Datenmengen kann viel Zeit und Ressourcen in Anspruch nehmen. Mit dem Parameter dry_run=True im to_pandas() Aufruf können Sie sehen, wie viele Daten verarbeitet werden. Verwenden Sie das folgende Codebeispiel, um einen Testlauf durchzuführen:

import bigframes.pandas as bpd

df = bpd.read_gbq("bigquery-public-data.ml_datasets.penguins")

# Returns a Pandas series with dry run stats
df.to_pandas(dry_run=True)

Dateien lesen und schreiben

Sie können Daten aus kompatiblen Dateien in BigQuery DataFrames lesen. Diese Dateien können sich auf Ihrem lokalen Computer oder in Cloud Storage befinden. Verwenden Sie das folgende Codebeispiel, um Daten aus einer CSV-Datei zu lesen:

import bigframes.pandas as bpd

# Read a CSV file from GCS
df = bpd.read_csv("gs://cloud-samples-data/bigquery/us-states/us-states.csv")

Verwenden Sie das folgende Codebeispiel, um Ihre BigQuery DataFrames in lokalen Dateien oder Cloud Storage-Dateien zu speichern mit der to_csv Methode:

import bigframes.pandas as bpd

df = bpd.DataFrame({"my_col": [1, 2, 3]})
# Write a dataframe to a CSV file in GCS
df.to_csv(f"gs://{YOUR_BUCKET}/myfile*.csv")

BigQuery-Tabellen lesen und schreiben

Verwenden Sie das folgende Code beispiel, um BigQuery DataFrames mit BigQuery-Tabelle referenzen und der bigframes.pandas.read_gbq Funktion zu erstellen:

import bigframes.pandas as bpd

df = bpd.read_gbq("bigquery-public-data.ml_datasets.penguins")

Verwenden Sie das folgende Codebeispiel, um einen SQL-String mit der read_gbq() Funktion zu verwenden, um Daten in BigQuery DataFrames zu lesen:

import bigframes.pandas as bpd

sql = """
SELECT species, island, body_mass_g
FROM bigquery-public-data.ml_datasets.penguins
WHERE sex = 'MALE'
"""

df = bpd.read_gbq(sql)

Verwenden Sie die to_gbq() Methode Ihres DataFrame Objekts, um Ihr DataFrame Objekt in einer BigQuery-Tabelle zu speichern. Das folgende Codebeispiel zeigt, wie das geht:

import bigframes.pandas as bpd

df = bpd.DataFrame({"my_col": [1, 2, 3]})

df.to_gbq(f"{YOUR_PROJECT_ID}.{YOUR_DATASET_ID}.{YOUR_TABLE_NAME}")

Nächste Schritte