BigQuery DataFrames-Sitzungen und ‑E/A verwalten

Durch die Verwaltung von Sitzungen und E/A-Vorgängen in BigQuery DataFrames können Sie Ihre Ausführungsumgebung steuern und Daten in Ihre Workflows ein- und aus ihnen heraus verschieben. Sie können Ihre Sitzungen so konfigurieren, dass Sie steuern, wo Ihre Abfragen ausgeführt werden. Außerdem können Sie E/A-Vorgänge ausführen, um In-Memory-Daten, Cloud Storage-Dateien und BigQuery-Tabellen zu lesen und zu 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 mit einem Standort 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 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, zu einem Fehler führt:

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 Methode bigframes.pandas.get_global_session() zugreifen können. In Colab müssen Sie eine Projekt-ID für das Attribut bigframes.pandas.options.bigquery.project angeben, bevor Sie es verwenden können. Sie können einen Standort auch mit dem Attribut bigframes.pandas.options.bigquery.location festlegen. Standardmäßig ist dies die Multiregion US.

Im folgenden Codebeispiel wird gezeigt, 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, indem Sie die Methode bigframes.pandas.close_session() ausführen.

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

Wenn Sie pandas-Objekte mit der Methode oder den Konstruktoren read_pandas() in DataFrames-Objekte konvertieren möchten, verwenden Sie das folgende Codebeispiel:

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)

Wenn Sie die Methode to_pandas() verwenden möchten, um BigQuery DataFrames-Daten in den Arbeitsspeicher zu laden, verwenden Sie das folgende Codebeispiel:

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 einer großen Datenmenge kann viel Zeit und Ressourcen in Anspruch nehmen. Wenn Sie sehen möchten, wie viele Daten verarbeitet werden, verwenden Sie den Parameter dry_run=True im Aufruf to_pandas(). Verwenden Sie das folgende Codebeispiel, um einen Probelauf auszufü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 einlesen. 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")

Wenn Sie Ihre BigQuery DataFrames mit der Methode to_csv in lokalen Dateien oder Cloud Storage-Dateien speichern möchten, verwenden Sie das folgende Codebeispiel:

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 Codebeispiel, um BigQuery DataFrames mit BigQuery-Tabellenreferenzen und der Funktion bigframes.pandas.read_gbq zu erstellen:

import bigframes.pandas as bpd

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

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

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 Methode to_gbq() des DataFrame-Objekts, um das 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