BigQuery DataFrames verwenden
BigQuery DataFrames bietet ein Pythonic DataFrame und eine API für maschinelles Lernen (ML), die von der BigQuery-Engine unterstützt werden. BigQuery DataFrames ist ein Open-Source-Paket.
Sie können pip install --upgrade bigframes
ausführen, um die neueste Version zu installieren.
BigQuery DataFrames bietet zwei Bibliotheken:
bigframes.pandas
, eine mit Pandas kompatible API für Analysen bereitstellt.bigframes.ml
, das eine scikit-learn-ähnliche API für maschinelles Lernen (ML) bereitstellt.
Erforderliche Berechtigungen
- Für die Verwendung von BigQuery-DataFrames benötigen Sie die Rollen BigQuery-Jobnutzer und BigQuery-Lesesitzungsnutzer.
- Wenn Sie die Endnutzerauthentifizierung in einer interaktiven Umgebung wie einem Notebook, Python REPL oder der Befehlszeile durchführen, fordert BigQuery DataFrames bei Bedarf die Authentifizierung an. Lesen Sie andernfalls die Informationen unter Standardanmeldedaten für Anwendungen für verschiedene Umgebungen einrichten.
- Für die Verwendung von Remote-Funktionen und ML-Remote-Modellen gelten zusätzliche Anforderungen für die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM).
-
Wenn Sie BigQuery DataFrames in einem BigQuery-Notebook verwenden möchten, benötigen Sie die folgenden IAM-Rollen:
Optionen
Nach der Installation müssen Sie den Standort und das Projekt angeben, in dem Sie BigQuery-DataFrames verwenden möchten. Sie können den Speicherort und das Projekt in Ihrem Notebook so definieren:Wenn bf.options.bigquery.project
nicht festgelegt ist, wird die Umgebungsvariable $GOOGLE_CLOUD_PROJECT
verwendet, die in der Notebooklaufzeit festgelegt ist, die die BigQuery Studio- und Vertex AI-Notebooks bereitstellt.
Ort der Datenverarbeitung
BigQuery DataFrames ist auf Skalierung ausgelegt, die dadurch erreicht wird, dass Daten und Verarbeitung im BigQuery-Dienst verbleiben. Sie können jedoch Daten in den Arbeitsspeicher Ihres Clientcomputers übertragen, indem Sie .to_pandas()
für ein DataFrame- oder Series-Objekt aufrufen. Wenn Sie sich dafür entscheiden, gilt die Speicherbeschränkung Ihres Clientcomputers.
Sitzungsstandort
BigQuery DataFrames verwendet ein lokales Sitzungsobjekt, um Metadaten intern zu verwalten. Diese Sitzung ist an einen Standort gebunden.
BigQuery DataFrames verwendet die Multi-Region US
als Standardstandort. Sie können jedoch session_options.location
verwenden, um einen anderen Standort festzulegen. Jede Abfrage in einer Sitzung wird an dem Standort ausgeführt, an dem die Sitzung erstellt wurde.
BigQuery DataFrames füllt bf.options.bigquery.location
automatisch mit dem Speicherort der Tabelle, wenn der Nutzer mit read_gbq/read_gbq_table/read_gbq_query()
beginnt und eine Tabelle angibt, entweder direkt oder in einer SQL-Anweisung.
Wenn Sie den Speicherort der erstellten DataFrame- oder Series-Objekte zurücksetzen möchten, können Sie die Sitzung schließen. Führen Sie dazu bigframes.pandas.close_session()
aus.
Danach können Sie bigframes.pandas.options.bigquery.location
wiederverwenden, um einen anderen Standort anzugeben.
read_gbq()
erfordert die Angabe eines Standorts, wenn sich das abgefragte Dataset nicht am multiregionalen Standort US
befindet. Wenn Sie versuchen, eine Tabelle von einem anderen Speicherort zu lesen, wird die Ausnahme NotFound
ausgegeben.
Datentypen
BigQuery DataFrames unterstützt die folgenden D-Typen "numpy" und "pandas":
BigQuery | BigQuery DataFrames und pandas |
---|---|
BOOL |
pandas.BooleanDtype() |
DATE |
pandas.ArrowDtype(pa.date32()) |
DATETIME |
pandas.ArrowDtype(pa.timestamp("us")) |
FLOAT64 |
pandas.Float64Dtype() |
GEOGRAPHY |
Unterstützt von " |
INT64 |
pandas.Int64Dtype() |
STRING |
pandas.StringDtype(storage="pyarrow") |
STRUCT |
pandas.ArrowDtype(pa.struct()) |
TIME |
pandas.ArrowDtype(pa.time64("us")) |
TIMESTAMP |
pandas.ArrowDtype(pa.timestamp("us", tz="UTC")) |
BigQuery DataFrames unterstützt die folgenden BigQuery-Datentypen nicht:
ARRAY
NUMERIC
BIGNUMERIC
INTERVAL
RANGE
JSON
Alle anderen BigQuery-Datentypen werden als Objekttyp angezeigt.
Bibliothek bigframes.pandas
verwenden
Die bigframes.pandas
-Bibliothek bietet eine pandas
-ähnliche API, mit der Sie Daten in BigQuery analysieren und bearbeiten können. Die bigframes.pandas
API ist skalierbar, um die Verarbeitung von Terabyte an BigQuery-Daten zu unterstützen. Sie verwendet die BigQuery-Abfrage-Engine für Berechnungen.
Die bigframes.pandas
API bietet folgende Funktionen:
Eingabe und Ausgabe
Sie können auf Daten aus verschiedenen Quellen, einschließlich lokaler CSV-Dateien, Cloud Storage-Dateien, pandas
-DataFrames, BigQuery-Modelle und BigQuery-Funktionen, zugreifen und sie in ein BigQuery DataFrames-DataFrame laden. Sie können BigQuery-Tabellen auch aus BigQuery DataFrames erstellen.
Datenmanipulation
Für Ihre Entwicklung können Sie Python anstelle von SQL verwenden. Sie können alle BigQuery-Datenmanipulationen in Python entwickeln, sodass Sie nicht zwischen Sprachen wechseln und SQL-Anweisungen als Textstrings erfassen müssen. Die bigframes.pandas
API bietet über 750 pandas
-Funktionen.
Python-Umgebung und Visualisierungen
Die bigframes.pandas
API ist ein Gateway zum vollständigen Python-System an Tools. Die API unterstützt erweiterte statistische Vorgänge und Sie können die von BigQuery DataFrames generierten Aggregationen visualisieren. Sie können auch von einem BigQuery DataFrames-DataFrame zu einem pandas
-DataFrame mit integrierten Stichprobenvorgängen wechseln.
Benutzerdefinierte Python-Funktionen
Mit BigQuery DataFrames können Sie Ihre benutzerdefinierten Skalarfunktionen in BigQuery-Remote-Funktionen umwandeln . Wenn Sie eine Remote-Funktion in BigQuery DataFrames erstellen, wird Folgendes erstellt:
Eine BigQuery-Verbindung Standardmäßig wird eine Verbindung mit dem Namen
bigframes-default-connection
verwendet. Sie können eine vorkonfigurierte BigQuery-Verbindung verwenden, wenn Sie möchten. In diesem Fall wird die Verbindungserstellung übersprungen.Dem Dienstkonto für die Standardverbindung wird die IAM-Rolle „Cloud Run-Aufrufer“ (
roles/run.invoker
) zugewiesen.Eine BigQuery-Remote-Funktion, die die Cloud Functions-Funktion (1) über die BigQuery-Verbindung (2) verwendet.
Ein Beispiel finden Sie unter Remote-Funktion erstellen.
BigQuery-Verbindungen werden am selben Ort wie die BigQuery DataFrames-Sitzung erstellt, wobei der Name verwendet wird, den Sie in der Definition der benutzerdefinierten Funktion angegeben haben. So rufen Sie Verbindungen auf und verwalten sie:
Wählen Sie das Projekt aus, in dem Sie die Remote-Funktion erstellt haben.
Maximieren Sie im Explorer-Bereich das Projekt und dann "Externe Verbindungen".
BigQuery-Remote-Funktionen werden in dem von Ihnen angegebenen Dataset oder in einem speziellen Typ ausgeblendeter Datasets erstellt, der im Code als anonymes Dataset bezeichnet wird. So zeigen Sie Remote-Funktionen an, die in einem vom Nutzer bereitgestellten Dataset erstellt wurden, und verwalten sie:
Wählen Sie das Projekt aus, in dem Sie die Remote-Funktion erstellt haben.
Maximieren Sie im Explorer-Bereich dieses Projekt, erweitern Sie das Dataset, in dem Sie die Remote-Funktion erstellt haben, und maximieren Sie dann Routinen.
Zum Aufrufen und Verwalten von Cloud Functions-Funktionen verwenden Sie die Seite Funktionen und wählen mit der Projektauswahl das Projekt aus, in dem Sie die Funktion erstellt haben. Zur einfachen Erkennung wird den Namen der von BigQuery DataFrames erstellten Funktionen das Präfix bigframes
vorangestellt.
Voraussetzungen
Wenn Sie die Remotefunktionen von BigQuery DataFrames verwenden möchten, müssen Sie die folgenden APIs aktivieren:
BigQuery API (
bigquery.googleapis.com
)BigQuery Connection API (
bigqueryconnection.googleapis.com
)Cloud Functions API (
cloudfunctions.googleapis.com
)Cloud Run Admin API (
run.googleapis.com
)Artifact Registry API (
artifactregistry.googleapis.com
)Cloud Build API (
cloudbuild.googleapis.com
)Die Compute Engine API (
compute.googleapis.com
)Cloud Resource Manager API (
cloudresourcemanager.googleapis.com
)Sie können diese Anforderung vermeiden, indem Sie die Option
bigframes.pandas.options.bigquery.skip_bq_connection_check
aufTrue
setzen. In diesem Fall wird die Verbindung (entweder standardmäßig oder vorkonfiguriert) unverändert verwendet, ohne dass die Existenz der Verbindung oder Überprüfung ihrer Berechtigungen.
Wenn Sie die Remote-Funktionen von BigQuery DataFrames verwenden möchten, benötigen Sie die folgenden IAM-Rollen im Projekt:
BigQuery-Dateneditor (
roles/bigquery.dataEditor
)BigQuery Connection Admin (
roles/bigquery.connectionAdmin
)Cloud Functions Developer (
roles/cloudfunctions.developer
)Service Account User (
roles/iam.serviceAccountUser
)Storage-Objekt-Betrachter (
roles/storage.objectViewer
)Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin
), wenn eine Standard-BigQuery-Verbindung verwendet wird, oder Browser (Rollen/Browser), wenn eine vorkonfigurierte Verbindung verwendet wird. Diese Anforderung kann vermieden werden, indem die Optionbigframes.pandas.options.bigquery.skip_bq_connection_check
aufTrue
gesetzt wird. In diesem Fall wird die Verbindung (Standard oder vorkonfiguriert) unverändert verwendet, ohne dass geprüft wird, ob sie besteht oder eine Berechtigung vorhanden ist. Wenn Sie die vorkonfigurierte Verbindung verwenden und die Verbindungsprüfung überspringen, achten Sie darauf, dass die Verbindung am richtigen Standort erstellt wird und das zugehörige Dienstkonto die Rolle "Cloud Run-Aufrufer" (roles/run.invoker
) für das Projekt hat.
Beschränkungen
Es dauert ungefähr 90 Sekunden, bis Remotefunktionen verfügbar sind, wenn Sie sie erstellen.
Einfache Änderungen im Notebook, z. B. das Einfügen einer neuen Zelle oder das Umbenennen einer Variablen, können dazu führen, dass die Remote-Funktion neu erstellt wird, auch wenn diese Änderungen nichts mit dem Remote-Funktionscode zu tun haben.
BigQuery DataFrames unterscheidet nicht zwischen personenbezogenen Daten, die Sie in den Code der Remote-Funktion aufnehmen. Der Code der Remote-Funktion wird als intransparentes Feld serialisiert, um ihn als eine Cloud Functions-Funktion bereitzustellen.
Die Cloud Functions-Funktionen (2. Generation), BigQuery-Verbindungen und BigQuery-Remote-Funktionen, die von BigQuery DataFrames erstellt wurden, bleiben in Google Cloud erhalten. Wenn Sie diese Ressourcen nicht behalten möchten, müssen Sie sie separat mit einer entsprechenden Cloud Functions- oder BigQuery-Schnittstelle löschen.
Ein Projekt kann bis zu 1.000 Funktionen von Cloud Functions (2nd gen) gleichzeitig haben. Alle Limits finden Sie unter Cloud Functions-Kontingente.
Beispiele für bigframes.pandas
Die folgenden Beispiele zeigen gängige Methoden zur Verwendung von bigframes.pandas
.
Daten aus einer BigQuery-Tabelle oder -Abfrage laden
Sie können einen DataFrame aus einer BigQuery-Tabelle oder -Abfrage so erstellen:
Daten aus einer CSV-Datei laden
Sie können einen DataFrame aus einer lokalen oder Cloud Storage-CSV-Datei so erstellen:
Daten prüfen und bearbeiten
Sie können bigframes.pandas
für Datenprüfungs- und Berechnungsvorgänge verwenden.
Das folgende Codebeispiel zeigt, wie Sie mit bigframes.pandas
die Spalte body_mass_g
prüfen, den Mittelwert
body_mass
berechnen und den Mittelwert body_mass
nach
species
berechnen:
Bibliothek bigframes.ml
verwenden
Mit den ML-Funktionen in BigQuery DataFrames können Sie Daten vorverarbeiten und dann Modelle für diese Daten trainieren. Sie können diese Aktionen auch verketten, um Datenpipelines zu erstellen.
ML-Speicherorte
bigframes.ml
unterstützt dieselben Standorte wie BigQuery ML.
BigQuery ML-Modellvorhersagen und andere ML-Funktionen werden in allen BigQuery-Regionen unterstützt. Die Unterstützung für das Modelltraining variiert je nach Region. Weitere Informationen finden Sie unter BigQuery ML-Standorte.
Daten vorverarbeiten
Erstellen Sie Transformer, um Daten für die Verwendung in Estimators (Modellen) mithilfe derModul bigframes.ml.preprocessing und dieModul bigframes.ml.compose vorzubereiten. BigQuery DataFrames bietet die folgenden Transformationen:
Verwenden Sie die KBinsDiscretizer-Klasse im Modul
bigframes.ml.preprocessing
, um kontinuierliche Daten in Intervalle zu binden.Verwenden Sie die LabelEncoder-Klasse im Modul
bigframes.ml.preprocessing
, um die Ziellabels als Ganzzahlwerte zu normalisieren.Verwenden Sie die Klasse „MaxAbsScaler“ im Modul
bigframes.ml.preprocessing
, um jedes Feature auf den Bereich[-1, 1]
um seinen maximalen absoluten Wert zu skalieren.Verwenden Sie die MinMaxScaler-Klasse im Modul
bigframes.ml.preprocessing
, um Features zu standardisieren, indem Sie jedes Feature auf den Bereich[0, 1]
skalieren.Verwenden Sie die Klasse "StandardScaler" im Modul
bigframes.ml.preprocessing
, um Features durch Entfernen des Mittelwerts und der Skalierung auf die Einheitvarianz zu standardisieren.Verwenden Sie die OneHotEncoder-Klasse im Modul
bigframes.ml.preprocessing
, um kategoriale Werte in ein numerisches Format umzuwandeln.Verwenden Sie die ColumnTransformer-Klasse im Modul
bigframes.ml.compose
, um Transformer auf DataFrames-Spalten anzuwenden.
Modelle trainieren
Estimators zum Trainieren von Modellen in BigQuery DataFrames erstellen
Clustering-Modelle
Erstellen Sie Estimators für Clustering-Modelle mit dem bigframes.ml.cluster-Modul.
- Verwenden Sie die KMeans-Klasse, um K-Means-Clustering-Modelle zu erstellen. Verwenden Sie diese Modelle für die Datensegmentierung. z. B. Kundensegmente identifizieren. Da K-Means ein unüberwachtes Lernverfahren ist, sind für das Modelltraining weder Labels noch Datenaufteilungen für die Trainings- oder Evaluierungsphase erforderlich.
Mit dem Modul bigframes.ml.cluster
können Sie Estimators für Clustering-Modelle erstellen.
Das folgende Codebeispiel zeigt die Verwendung der Klasse bigframes.ml.cluster KMeans
zum Erstellen eines K-Means-Clustering-Modells für die Datensegmentierung:
Zerlegungsmodelle
Erstellen Sie Estimators für Zerlegungsmodelle mithilfe des bigframes.ml.decomposition-Moduls.
- Verwenden Sie die PCA-Klasse, um PCA-Modelle (Principal Component Analysis) zu erstellen. Verwenden Sie diese Modelle zur Berechnung von Hauptkomponenten und zur Änderung der Grundlagen der Daten. Dies ermöglicht eine Dimensionsreduzierung, da jeder Datenpunkt auf die ersten Hauptkomponenten projiziert wird, um niedrigdimensionale Daten zu erhalten und gleichzeitig einen möglichst großen Teil der Datenabweichung beizubehalten.
Ensemble-Modelle
Erstellen Sie Estimators für Ensemble-Modelle mit dem bigframes.ml.ensemble-Modul.
Verwenden Sie die RandomForestClassifier-Klasse, um Random Forest-Klassifikatormodelle zu erstellen. Verwenden Sie diese Modelle, um mehrere Entscheidungsmethoden für Lernmethoden für die Klassifizierung zu erstellen.
Verwenden Sie die RandomForestRegressor-Klasse zum Erstellen von Random Forest-Regressormodellen. Verwenden Sie diese Modelle, um mehrere Entscheidungsmethoden für Lernmethoden für die Regression zu erstellen.
Verwenden Sie die XGBClassifier-Klasse, um Gradienten-Boosted Tree-Klassifikationsmodelle zu erstellen. Verwenden Sie diese Modelle, um mehrere Entscheidungsmethoden für Lernmethoden für die Klassifizierung additiv zu erstellen.
Verwenden Sie die XGBRegressor-Klasse, um Gradienten-Boosted Tree-Regressionsmodelle zu erstellen. Verwenden Sie diese Modelle, um mehrere Entscheidungsmethoden für Lernmethoden für die Regression additiv zu erstellen.
Prognosemodelle
Erstellen Sie Estimators für Prognosemodelle mithilfe des bigframes.ml.forecasting-Moduls.
- Verwenden Sie die ARIMAPlus-Klasse, um Zeitachsen-Prognosemodelle zu erstellen.
Importierte Modelle
Erstellen Sie Estimators für importierte Modelle mithilfe des bigframes.ml.imported-Moduls.
Verwenden Sie die ONNXModel-Klasse, um ONNX-Modelle (Open Neural Network Exchange) zu importieren.
Verwenden Sie die TensorFlowModel-Klasse, um TensorFlow-Modelle zu importieren.
Verwenden Sie die XGBoostModel-Klasse, um XGBoostModel-Modelle zu importieren.
Lineare Modelle
Erstellen Sie Estimators für lineare Modelle mithilfe des Moduls "bigframes.ml.linear_model".
Verwenden Sie die Klasse LinearRegression, um lineare Regressionsmodelle zu erstellen. Verwenden Sie diese Modelle für Prognosen. Beispielsweise können Sie die Verkäufe eines Artikels an einem bestimmten Tag prognostizieren.
Verwenden Sie die Klasse "LogisticRegression", um logistische Regressionsmodelle zu erstellen. Verwenden Sie diese Modelle für die Klassifizierung von zwei oder mehr möglichen Werten, z. B. ob eine Eingabe
low-value
,medium-value
oderhigh-value
ist.
Das folgende Codebeispiel zeigt bigframes.ml
, um Folgendes zu tun:
- Daten aus BigQuery laden
- Trainingsdaten bereinigen und vorbereiten
- Regressionsmodell
bigframes.ml.LinearRegression
erstellen und anwenden
Large Language Models
Erstellen Sie Estimators für LLMs mit dem bigframes.ml.llm-Modul.
Verwenden Sie die GeminiTextGenerator-Klasse, um Gemini-Textgeneratormodelle zu erstellen. Verwenden Sie diese Modelle für Aufgaben zur Textgenerierung.
Verwenden Sie die PaLM2TextGenerator-Klasse, um PaLM2-Textgeneratormodelle zu erstellen. Verwenden Sie diese Modelle für Aufgaben zur Textgenerierung.
Verwenden Sie die PaLM2TextEmbeddingGenerator-Klasse, um PaLM2-Texteinbettungsgeneratormodelle zu erstellen. Verwenden Sie diese Modelle für Aufgaben zur Generierung von Texteinbettungen.
Mit dem Modul bigframes.ml.llm
können Sie Estimators für Remote-Großsprachmodelle (LLMs) erstellen.
Das folgende Codebeispiel zeigt die Verwendung der Klasse bigframes.ml.llm
GeminiTextGenerator
zum Erstellen eines Gemini-Modells für die Codegenerierung:
Remotemodelle
Um die Remote-Modelle von BigQuery DataFrames ML (bigframes.ml.remote oder bigframes.ml.llm) zu verwenden, müssen Sie die folgenden APIs aktivieren:
- BigQuery API (
bigquery.googleapis.com
) - BigQuery Connection API (
bigqueryconnection.googleapis.com
) - Die Vertex AI API (
aiplatform.googleapis.com
) - Cloud Resource Manager API (
cloudresourcemanager.googleapis.com
)Sie können diese Anforderung vermeiden, indem Sie die Option
bigframes.pandas.options.bigquery.skip_bq_connection_check
aufTrue
setzen. In diesem Fall wird die Verbindung (entweder standardmäßig oder vorkonfiguriert) unverändert verwendet, ohne dass die Existenz der Verbindung oder Überprüfung ihrer Berechtigungen geprüft wird.
Ihnen benötigen außerdem die folgenden IAM-Rollen im Projekt:
- BigQuery Connection Admin (
roles/bigquery.connectionAdmin
) - Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin
), wenn eine Standard-BigQuery-Verbindung verwendet wird, oder Browser (Rollen/Browser), wenn eine vorkonfigurierte Verbindung verwendet wird. Diese Anforderung kann vermieden werden, indem die Optionbigframes.pandas.options.bigquery.skip_bq_connection_check
aufTrue
gesetzt wird. In diesem Fall wird die Verbindung (Standard oder vorkonfiguriert) unverändert verwendet, ohne dass geprüft wird, ob sie besteht oder eine Berechtigung vorhanden ist. Wenn Sie die vorkonfigurierte Verbindung verwenden und die Verbindungsprüfung überspringen, achten Sie darauf, dass die Verbindung am richtigen Standort erstellt wird und das Dienstkonto die Rolle "Vertex AI-Nutzer"roles/aiplatform.user
für das Projekt hat.
Beim Erstellen eines Remote-Modells in BigQuery DataFrames wird eine BigQuery-Verbindung hergestellt.
Standardmäßig wird eine Verbindung mit dem Namen bigframes-default-connection
verwendet.
Sie können eine vorkonfigurierte BigQuery-Verbindung verwenden, wenn Sie möchten. In diesem Fall wird die Verbindungserstellung übersprungen. Dem Dienstkonto für die Standardverbindung wird die IAM-Rolle „Vertex AI-Nutzer“ (roles/aiplatform.user
) zugewiesen.
Pipelines erstellen
Erstellen Sie ML-Pipelines mit dem Modul „bigframes.ml.pipeline”. Mit Pipelines können Sie mehrere ML-Schritte zusammenstellen, die gleichzeitig validiert werden, und dabei verschiedene Parameter festlegen. Dies vereinfacht den Code und ermöglicht es Ihnen, Schritte zur Datenvorverarbeitung und einen Estimator zusammen bereitzustellen.
Verwenden Sie die Pipeline-Klasse, um eine Pipeline aus Transformationen mit einem endgültigen Estimator zu erstellen.