Utilizza BigQuery DataFrames
BigQuery DataFrames fornisce un DataFrame Python e un'API di machine learning (ML) basata sul motore BigQuery.
BigQuery DataFrames è un pacchetto open source. Puoi eseguire
pip install --upgrade bigframes
per installare la versione più recente.
BigQuery DataFrames fornisce tre librerie:
bigframes.pandas
fornisce un'API simile a pandas che puoi utilizzare per analizzare e manipolare i dati in BigQuery. L'APIbigframes.pandas
è scalabile per supportare l'elaborazione di terabyte di dati di BigQuery e utilizza il motore di query BigQuery per eseguire i calcoli.bigframes.bigquery
fornisce molte funzioni SQL BigQuery che potrebbero non avere un equivalente in pandas.bigframes.ml
fornisce un'API simile all'API scikit-learn per il machine learning. Le funzionalità di ML in BigQuery DataFrames ti consentono di pre-elaborare i dati e poi di addestrare i modelli su questi dati. Puoi anche concatenare queste azioni per creare pipeline di dati.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per completare le attività descritte in questo documento, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Utente job BigQuery (
roles/bigquery.jobUser
) -
BigQuery Read Session User (
roles/bigquery.readSessionUser
) -
Utilizza BigQuery DataFrames in un notebook BigQuery:
-
Utente BigQuery (
roles/bigquery.user
) -
Utente runtime del blocco note (
roles/aiplatform.notebookRuntimeUser
) -
Code Creator (
roles/dataform.codeCreator
)
-
Utente BigQuery (
-
Utilizza le funzioni remote di BigQuery DataFrames:
-
Editor dati BigQuery (
roles/bigquery.dataEditor
) -
Amministratore delle connessioni BigQuery (
roles/bigquery.connectionAdmin
) -
Sviluppatore Cloud Functions (
roles/cloudfunctions.developer
) -
Utente account di servizio (
roles/iam.serviceAccountUser
) -
Storage Object Viewer (
roles/storage.objectViewer
)
-
Editor dati BigQuery (
-
Utilizza i modelli di BigQuery DataFrames ML remoti:
Amministratore connessione BigQuery (
roles/bigquery.connectionAdmin
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Inoltre, quando utilizzi le funzioni remote di BigQuery DataFrames o i modelli ML remoti di BigQuery DataFrames, devi disporre del ruolo Amministratore IAM del progetto (roles/resourcemanager.projectIamAdmin
) se utilizzi una connessione BigQuery predefinita o del ruolo Browser (roles/browser
) se utilizzi una connessione preconfigurata. Questo requisito può essere evitato impostando l'opzione bigframes.pandas.options.bigquery.skip_bq_connection_check
su True
, nel qual caso la connessione (predefinita o preconfigurata) viene utilizzata così com'è senza alcun controllo di esistenza o autorizzazione. Se utilizzi la connessione preconfigurata e salti il controllo di connessione, assicurati di quanto segue:
- La connessione viene creata nella posizione corretta.
- Se utilizzi le funzioni remote di BigQuery DataFrames, l'account di servizio deve disporre del ruolo Invoker di Cloud Run (
roles/run.invoker
) nel progetto. - Se utilizzi modelli ML BigQuery DataFrames remoti, l'account di servizio deve disporre del ruolo Utente Vertex AI (
roles/aiplatform.user
) nel progetto.
Quando esegui l'autenticazione dell'utente finale in un ambiente interattivo come un notebook, Python REPL o la riga di comando, BigQuery DataFrames richiede l'autenticazione, se necessario. In caso contrario, consulta come configurare le credenziali predefinite dell'applicazione per vari ambienti.
Configura le opzioni di installazione
Dopo aver installato BigQuery DataFrames, puoi specificare le seguenti opzioni.
Località e progetto
Devi specificare la posizione e il progetto in cui vuoi utilizzare BigQuery DataFrames.
Puoi definire la posizione e il progetto nel tuo notebook nel seguente modo:
Posizione di elaborazione dei dati
BigQuery DataFrames è progettato per l'uso su larga scala, il che viene ottenuto mantenendo i dati e l'elaborazione nel servizio BigQuery. Tuttavia, puoi trasferire i dati nella memoria della macchina del cliente chiamando .to_pandas()
su un oggetto DataFrame o Series. Se scegli di farlo, si applica la limitazione di memoria della macchina client.
Località sessione
BigQuery DataFrames utilizza un oggetto sessione locale per gestire internamente i metadati. Questa sessione è associata a una
posizione. BigQuery DataFrames utilizza la regione multipla US
come posizione predefinita, ma puoi utilizzare session_options.location
per impostare una posizione diversa. Ogni query in una
sessione viene eseguita nella posizione in cui è stata creata la sessione.
I DataFrame di BigQuery compilano automaticamente
bf.options.bigquery.location
con la posizione della tabella se l'
utente inizia con read_gbq/read_gbq_table/read_gbq_query()
e
specifica una tabella, direttamente o in un'istruzione SQL.
Se vuoi reimpostare la posizione degli oggetti DataFrame o Series creati, puoi chiudere la sessione eseguendo bigframes.pandas.close_session()
. Dopodiché, puoi riutilizzare
bigframes.pandas.options.bigquery.location
per specificare un'altra
posizione.
read_gbq()
richiede di specificare una località se il set di dati su cui stai eseguendo la query non si trova nella regione multipla US
. Se provi a leggere una tabella da un'altra posizione, viene generata un'eccezione NotFound
.
Esegui la migrazione alla versione 2.0 di BigQuery DataFrames
La versione 2.0 di BigQuery DataFrames apporta miglioramenti alla sicurezza e alle prestazioni dell'API BigQuery DataFrames, aggiunge nuove funzionalità e introduce modifiche incompatibili. Questo documento descrive le modifiche e fornisce indicazioni per la migrazione. Puoi applicare questi consigli prima di installare la versione 2.0 utilizzando la versione 1.x più recente di BigQuery DataFrames.
La versione 2.0 di BigQuery DataFrames offre i seguenti vantaggi:
- Quando esegui query che restituiscono risultati al client, vengono create query più veloci e meno tabelle, perché il valore predefinito di
allow_large_results
èFalse
. In questo modo, puoi ridurre i costi di archiviazione, soprattutto se utilizzi la fatturazione in base ai byte fisici. - Maggiore sicurezza per impostazione predefinita nelle funzioni remote di cui è stato eseguito il deployment da DataFrames BigQuery.
Installa BigQuery DataFrames versione 2.0
Per evitare modifiche che causano interruzioni, blocca una versione specifica di
BigQuery DataFrames nel file requirements.txt
(ad esempio
bigframes==1.42.0
) o nel file pyproject.toml
(ad esempio
dependencies = ["bigframes = 1.42.0"]
). Quando è tutto pronto per provare la versione più recente, puoi eseguire pip install --upgrade bigframes
per installare la versione più recente di BigQuery DataFrames.
Utilizza l'opzione allow_large_results
BigQuery ha un
limite massimo di dimensioni della risposta per i job di query.
A partire dalla versione 2.0 di BigQuery DataFrames, BigQuery DataFrames
applica questo limite per impostazione predefinita nei metodi che restituiscono risultati al client,
come peek()
, to_pandas()
e to_pandas_batches()
. Se il job restituisce risultati di grandi dimensioni, puoi impostare allow_large_results
su True
nell'oggetto BigQueryOptions
per evitare modifiche che potrebbero causare interruzioni. Questa opzione è impostata su
False
per impostazione predefinita nella versione 2.0 di BigQuery DataFrames.
import bigframes.pandas as bpd bpd.options.bigquery.allow_large_results = True
Puoi ignorare l'opzione allow_large_results
utilizzando il parametro allow_large_results
in to_pandas()
e in altri metodi. Ad esempio:
bf_df = bpd.read_gbq(query) # ... other operations on bf_df ... pandas_df = bf_df.to_pandas(allow_large_results=True)
Utilizza il decoratore @remote_function
La versione 2.0 di BigQuery DataFrames apporta alcune modifiche al comportamento predefinito del decoratore @remote_function
.
Gli argomenti delle parole chiave vengono applicati per i parametri ambigui
Per impedire il passaggio di valori a un parametro indesiderato, la versione 2.0 e successive di BigQuery DataFrames impone l'utilizzo di argomenti delle parole chiave per i seguenti parametri:
bigquery_connection
reuse
name
packages
cloud_function_service_account
cloud_function_kms_key_name
cloud_function_docker_repository
max_batching_rows
cloud_function_timeout
cloud_function_max_instances
cloud_function_vpc_connector
cloud_function_memory_mib
cloud_function_ingress_settings
Quando utilizzi questi parametri, fornisci il nome del parametro. Ad esempio:
@remote_function( name="my_remote_function", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
Impostare un account di servizio
A partire dalla versione 2.0, BigQuery DataFrames non utilizza più per impostazione predefinita l'account di servizio Compute Engine per le funzioni Cloud Run che esegue il deployment. Per limitare le autorizzazioni della funzione di cui esegui il deployment:
- Crea un account di servizio con autorizzazioni minime.
- Fornisci l'indirizzo email dell'account di servizio al parametro
cloud_function_service_account
del decoratore@remote_function
.
Ad esempio:
@remote_function( cloud_function_service_account="my-service-account@my-project.iam.gserviceaccount.com", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
Se vuoi utilizzare l'account di servizio Compute Engine, puoi impostare il parametro cloud_function_service_account
del decoratore @remote_function
su "default"
. Ad esempio:
# This usage is discouraged. Use only if you have a specific reason to use the # default Compute Engine service account. @remote_function(cloud_function_service_account="default", ...) def my_remote_function(parameter: int) -> str: return str(parameter)
Impostare le impostazioni di importazione
A partire dalla versione 2.0, BigQuery DataFrames imposta le impostazioni di ingresso delle funzioni Cloud Run di cui esegue il deployment in "internal-only"
. In precedenza, le impostazioni di ingresso erano impostate su
"all"
per impostazione predefinita. Puoi modificare le impostazioni di importazione impostando il parametro cloud_function_ingress_settings
del decoratore @remote_function
.
Ad esempio:
@remote_function(cloud_function_ingress_settings="internal-and-gclb", ...) def my_remote_function(parameter: int) -> str: return str(parameter)
Utilizzare endpoint personalizzati
Nelle versioni precedenti alla 2.0 di BigQuery DataFrames, se una regione non supportava gli endpoint di servizio regionale e bigframes.pandas.options.bigquery.use_regional_endpoints = True
, BigQuery DataFrames utilizzava gli endpoint di località. La versione 2.0 di
BigQuery DataFrames rimuove questo comportamento di riserva. Per connetterti agli endpoint geografici nella versione 2.0, imposta l'opzione bigframes.pandas.options.bigquery.client_endpoints_override
. Ad
esempio:
import bigframes.pandas as bpd bpd.options.bigquery.client_endpoints_override = { "bqclient": "https://LOCATION-bigquery.googleapis.com", "bqconnectionclient": "LOCATION-bigqueryconnection.googleapis.com", "bqstoragereadclient": "LOCATION-bigquerystorage.googleapis.com", }
Sostituisci LOCATION con il nome della località BigQuery a cui vuoi connetterti.
Utilizza il modulo bigframes.ml.llm
Nella versione 2.0 di BigQuery DataFrames, il valore predefinito model_name
per
GeminiTextGenerator
è stato aggiornato a "gemini-2.0-flash-001"
. Ti consigliamo di fornire direttamente un valore model_name
per evitare interruzioni se il modello predefinito cambia in futuro.
import bigframes.ml.llm model = bigframes.ml.llm.GeminiTextGenerator(model_name="gemini-2.0-flash-001")
Input e output
Utilizzando la libreria bigframes.pandas
, puoi accedere ai dati da varie fonti, tra cui file CSV locali, file Cloud Storage, DataFrame pandas
, modelli BigQuery e funzioni BigQuery. Puoi poi caricare questi dati in un DataFrame di BigQuery DataFrames. Puoi anche creare tabelle BigQuery da BigQuery DataFrames.
Caricare dati da una query o una tabella BigQuery
Puoi creare un DataFrame da una query o una tabella BigQuery nel seguente modo:
Caricare i dati da un file CSV
Puoi creare un DataFrame da un file CSV locale o di Cloud Storage nel seguente modo:
Tipi di dati
BigQuery DataFrames supporta i seguenti tipi di dati numpy e pandas:
BigQuery | DataFrame di BigQuery e pandas |
---|---|
ARRAY |
pandas.ArrowDtype(pa.list_()) |
BOOL |
pandas.BooleanDtype() |
DATE |
pandas.ArrowDtype(pa.date32()) |
DATETIME |
pandas.ArrowDtype(pa.timestamp("us")) |
FLOAT64 |
pandas.Float64Dtype() |
GEOGRAPHY |
Supportato solo da |
INT64 |
pandas.Int64Dtype() |
JSON |
pandas.ArrowDtype(pa.json_(pa.string()) in pandas versione
3.0 o successive e pyarrow versione 19.0 o successive, altrimenti le colonne JSON sono esposte come pandas.ArrowDtype(db_dtypes.JSONArrowType()) . |
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 non supporta i seguenti tipi di dati BigQuery:
NUMERIC
BIGNUMERIC
INTERVAL
RANGE
Tutti gli altri tipi di dati BigQuery vengono visualizzati come tipo di oggetto.
Manipolazione dei dati
Le sezioni seguenti descrivono le funzionalità di manipolazione dei dati per i DataFrame di BigQuery. Puoi trovare le funzioni descritte nella
libreria bigframes.bigquery
.
API simile a pandas
Una caratteristica notevole di BigQuery DataFrames è che l'API bigframes.pandas
è progettata per essere simile alle API della libreria pandas. Questo design ti consente di utilizzare
pattern di sintassi familiari per le attività di manipolazione dei dati. Le operazioni definite tramite
l'API BigQuery DataFrames vengono eseguite lato server, operando direttamente
sui dati archiviati in BigQuery ed eliminando la necessità di
trasferire i set di dati da BigQuery.
Per verificare quali API pandas sono supportate da BigQuery DataFrames, consulta API pandas supportate.
Ispezionare e manipolare i dati
Puoi utilizzare l'API bigframes.pandas
per eseguire operazioni di controllo e calcolo dei dati. Il seguente esempio di codice utilizza la libreria bigframes.pandas
per ispezionare la colonna body_mass_g
, calcolare la media body_mass
e
calculare la media body_mass
per species
:
Libreria BigQuery
La libreria BigQuery fornisce funzioni SQL di BigQuery che potrebbero non avere un equivalente in pandas. Le sezioni seguenti forniscono alcuni esempi.
Elabora i valori dell'array
Puoi utilizzare la funzione bigframes.bigquery.array_agg()
nella biblioteca bigframes.bigquery
per aggregare i valori dopo un'operazione groupby
:
Puoi anche utilizzare le funzioni array array_length()
e array_to_string()
.
Creare una serie di strutture
Puoi utilizzare la funzione bigframes.bigquery.struct()
nella
libreria bigframes.bigquery
per creare una nuova serie di struct con campi secondari per
ogni colonna di un DataFrame:
Convertire i timestamp in epoche Unix
Puoi utilizzare la funzione bigframes.bigquery.unix_micros()
nella biblioteca bigframes.bigquery
per convertire i timestamp in microsecondi Unix:
Puoi anche utilizzare le funzioni di tempo unix_seconds()
e unix_millis()
.
Utilizzare la funzione scalare SQL
Puoi utilizzare la funzione bigframes.bigquery.sql_scalar()
nella
bigframes.bigquery
libreria per accedere a una sintassi SQL arbitraria che rappresenta un'espressione
di una singola colonna:
Funzioni personalizzate
Utilizzando la libreria bigframes.pandas
, puoi trasformare le funzioni scalari personalizzate in funzioni remote di BigQuery.
La creazione di una funzione remota in BigQuery DataFrames genera quanto segue:
Una connessione BigQuery. Per impostazione predefinita viene utilizzata una connessione con il nome
bigframes-default-connection
. Se preferisci, puoi utilizzare una connessione BigQuery preconfigurata, in tal caso la creazione della connessione viene saltata.All'account di servizio per la connessione predefinita viene concesso il ruolo Invoker di Cloud Run (
roles/run.invoker
).Una funzione remota BigQuery che utilizza la funzione Cloud Run con la connessione BigQuery.
Per un esempio, consulta Creare una funzione remota.
Le connessioni BigQuery vengono create nella stessa posizione della sessione BigQuery DataFrames, utilizzando il nome fornito nella definizione della funzione personalizzata. Per visualizzare e gestire le connessioni, segui questi passaggi:
Nella console Google Cloud , vai alla pagina BigQuery.
Seleziona il progetto in cui hai creato la funzione remota.
Nel riquadro Esplora, espandi il progetto, quindi espandi Collegamenti esterni.
Le funzioni remote di BigQuery vengono create nel set di dati specificato o in un set di dati anonimo, un tipo di set di dati nascosto. Se non imposti un nome per una funzione remota durante la sua creazione, BigQuery DataFrames applica un nome predefinito che inizia con il prefisso bigframes
. Per visualizzare e gestire le funzioni remote create in un set di dati specificato dall'utente:
Nella console Google Cloud , vai alla pagina BigQuery.
Seleziona il progetto in cui hai creato la funzione remota.
Nel riquadro Explorer, espandi il progetto, il set di dati in cui hai creato la funzione remota e poi le Routine.
Per informazioni su come visualizzare e gestire le funzioni Cloud Run, consulta Eseguire il deployment di una funzione Cloud Run utilizzando la console. Google Cloud
Per identificare le funzioni create da BigQuery DataFrames, cerca le funzioni i cui nomi sono preceduti da bigframes
.
Puoi ripulire le funzioni remote di BigQuery senza nome e le relative funzioni Cloud Run associate nei seguenti modi:
- Per un
session
BigQuery DataFrames, utilizzasession.close()
. - Per la sessione BigQuery DataFrames predefinita, utilizza
bigframes.pandas.close_session()
. - Per una sessione passata con
session_id
, utilizzabigframes.pandas.clean_up_by_session_id(session_id)
.
Requisiti delle API
Per utilizzare le funzioni remote di BigQuery DataFrames, devi abilitare le seguenti API:
API Cloud Resource Manager (
cloudresourcemanager.googleapis.com
)Puoi evitare questo requisito impostando l'opzione
bigframes.pandas.options.bigquery.skip_bq_connection_check
suTrue
, nel qual caso la connessione (predefinita o preconfigurata) viene utilizzata così com'è senza verificare l'esistenza della connessione o le relative autorizzazioni.
Limitazioni
Le funzioni remote richiedono circa 90 secondi per diventare disponibili quando le crei per la prima volta.
Modifiche banali nel notebook, come l'inserimento di una nuova cella o la ridenominazione di una variabile, potrebbero causare la nuova creazione della funzione remota, anche se queste modifiche non sono correlate al codice della funzione remota.
I DataFrame di BigQuery non distinguono i dati personali che includi nel codice della funzione remota. Il codice della funzione remota viene serializzato come una casella opaca per eseguirne il deployment come funzione Cloud Run.
Le funzioni Cloud Run (2ª generazione.), le connessioni BigQuery e le funzioni remote BigQuery create da BigQuery DataFrames rimangono inGoogle Cloud. Se non vuoi conservare queste risorse, devi eliminarle separatamente utilizzando funzioni Cloud Run o un'interfaccia BigQuery appropriata.
Un progetto può avere fino a 1000 funzioni Cloud Run (2ª generazione.) contemporaneamente. Consulta le quote delle funzioni Cloud Run per tutti i limiti.
ML e AI
Le seguenti sezioni descrivono le funzionalità di ML e AI per i DataFrame di BigQuery. Queste funzionalità utilizzano la libreria bigframes.ml
.
Località di ML
La libreria bigframes.ml
supporta le stesse località di
BigQuery ML. La previsione del modello BigQuery ML e altre funzioni ML sono supportate in tutte le regioni BigQuery. Il supporto per l'addestramento dei modelli varia in base alla regione. Per ulteriori informazioni, consulta
Località di BigQuery ML.
Pre-elabora i dati
Crea trasformatori per preparare i dati per l'utilizzo in estimatori (modelli) utilizzando il modulo bigframes.ml.preprocessing e il modulo bigframes.ml.compose. BigQuery DataFrames offre le seguenti trasformazioni:
Utilizza la classe KBinsDiscretizer nel modulo
bigframes.ml.preprocessing
per raggruppare i dati continui in intervalli.Utilizza la classe LabelEncoder nel modulo
bigframes.ml.preprocessing
per normalizzare le etichette di destinazione come valori interi.Utilizza la classe MaxAbsScaler nel modulo
bigframes.ml.preprocessing
per scalare ogni caratteristica all'[-1, 1]
in base al suo valore assoluto massimo.Utilizza la classe MinMaxScaler nel modulo
bigframes.ml.preprocessing
per standardizzare le caratteristiche mediante la scalatura di ogni caratteristica all'intervallo[0, 1]
.Utilizza la classe StandardScaler nel modulo
bigframes.ml.preprocessing
per standardizzare le funzionalità rimuovendo la media e applicando la scala alla varianza unitaria.Utilizza la classe OneHotEncoder nel modulo
bigframes.ml.preprocessing
per trasformare i valori categorici in formato numerico.Utilizza la classe ColumnTransformer nel modulo
bigframes.ml.compose
per applicare i trasformatori alle colonne dei DataFrame.
addestramento dei modelli
Puoi creare stimatori per addestrare i modelli in BigQuery DataFrames.
Modelli di clustering
Puoi creare stimatori per i modelli di clustering utilizzando il modulo bigframes.ml.cluster.
- Utilizza la classe KMeans per creare modelli di clustering K-means. Utilizza questi modelli per la segmentazione dei dati. Ad esempio, identificare i segmenti di clienti. K-means è una tecnica di apprendimento non supervisionato, pertanto l'addestramento del modello non richiede etichette o dati suddivisi per l'addestramento o la valutazione.
Puoi utilizzare il modulo bigframes.ml.cluster
per creare stimatori per i modelli di clustering.
Il seguente esempio di codice mostra l'utilizzo della classe bigframes.ml.cluster KMeans
per creare un modello di clustering k-means per la segmentazione dei dati:
Modelli di decomposizione
Puoi creare stimatori per i modelli di decomposizione utilizzando il modulo bigframes.ml.decomposition.
- Utilizza la classe PCA per creare modelli di analisi delle componenti principali (PCA). Utilizza questi modelli per calcolare i componenti principali e utilizzarli per eseguire una variazione di base sui dati. Ciò consente di ridurre la dimensionalità proiettando ciascun punto dati solo sulle prime componenti principali per ottenere dati di dimensioni inferiori, preservando al contempo il maggior numero possibile di variazioni dei dati.
Modelli di insieme
Puoi creare stimatori per i modelli di ensemble utilizzando il modulo bigframes.ml.ensemble.
Utilizza la classe RandomForestClassifier per creare modelli di classificatori di foreste casuali. Utilizza questi modelli per costruire più alberi decisionali di metodi di apprendimento per la classificazione.
Utilizza la classe RandomForestRegressor per creare modelli di regressione con foresta casuale. Utilizza questi modelli per costruire più alberi decisionali di metodi di apprendimento per la regressione.
Utilizza la classe XGBClassifier per creare modelli di classificatori ad albero con boosting del gradiente. Utilizza questi modelli per costruire in modo additivo più alberi decisionali di metodi di apprendimento per la classificazione.
Utilizza la classe XGBRegressor per creare modelli di regressione con alberi di boosting del gradiente. Utilizza questi modelli per costruire in modo additivo alberi decisionali con più metodi di apprendimento per la regressione.
Modelli di previsione
Puoi creare stimatori per i modelli di previsione utilizzando il modulo bigframes.ml.forecasting.
- Utilizza la classe ARIMAPlus per creare modelli di previsione delle serie temporali.
Modelli importati
Puoi creare stimatori per i modelli importati utilizzando il modulo bigframes.ml.imported.
Utilizza la classe ONNXModel per importare i modelli Open Neural Network Exchange (ONNX).
Utilizza la classe TensorFlowModel per importare i modelli TensorFlow.
Utilizza la classe XGBoostModel per importare i modelli XGBoostModel.
Modelli lineari
Crea gli stimatori per i modelli lineari utilizzando il modulo bigframes.ml.linear_model.
Utilizza la classe LinearRegression per creare modelli di regressione lineare. Utilizza questi modelli per la previsione. Ad esempio, la previsione delle vendite di un articolo in un determinato giorno.
Utilizza la classe LogisticRegression per creare modelli di regressione logistica. Utilizza questi modelli per la classificazione di due o più valori possibili, ad esempio se un input è
low-value
,medium-value
ohigh-value
.
Il seguente esempio di codice mostra come utilizzare bigframes.ml
per eseguire le seguenti operazioni:
- Carica i dati da BigQuery
- Pulisci e prepara i dati di addestramento
- Creare e applicare un modello di regressione bigframes.ml.LinearRegression
Modelli linguistici di grandi dimensioni
Puoi creare stimatori per gli LLM utilizzando il modulo bigframes.ml.llm.
Utilizza la classe GeminiTextGenerator per creare modelli di generatori di testo Gemini. Utilizza questi modelli per le attività di generazione di testo.
Utilizza la classe PaLM2TextGenerator per creare modelli di generatori di testo PaLM2. Utilizza questi modelli per le attività di generazione di testo.
Utilizza la classe PaLM2TextEmbeddingGenerator per creare modelli di generatori di incorporamenti di testo PaLM2. Utilizza questi modelli per le attività di generazione di embedding di testo.
Utilizza il modulo
bigframes.ml.llm
per creare stimatori per modelli linguistici di grandi dimensioni (LLM) remoti.
Il seguente esempio di codice mostra l'utilizzo della classe bigframes.ml.llm
GeminiTextGenerator
per creare un modello Gemini per la generazione di codice:
Modelli remoti
Per utilizzare i modelli di ML BigQuery DataFrames remoti (bigframes.ml.remote
o bigframes.ml.llm
), devi abilitare le seguenti API:
API Cloud Resource Manager (
cloudresourcemanager.googleapis.com
)Puoi evitare questo requisito impostando l'opzione
bigframes.pandas.options.bigquery.skip_bq_connection_check
suTrue
, nel qual caso la connessione (predefinita o preconfigurata) viene utilizzata così com'è senza verificare l'esistenza della connessione o le relative autorizzazioni.
La creazione di un modello remoto in BigQuery DataFrames genera una
connessione BigQuery.
Per impostazione predefinita, viene utilizzata una connessione con il nome bigframes-default-connection
. Se preferisci, puoi utilizzare una connessione BigQuery preconfigurata, nel qual caso la creazione della connessione viene saltata. All'account di servizio per la connessione predefinita è stato concesso il ruolo Utente Vertex AI (roles/aiplatform.user
) nel progetto.
Creare pipeline
Puoi creare pipeline ML utilizzando il modulo bigframes.ml.pipeline. Le pipeline ti consentono di assemblare diversi passaggi di ML da sottoporre a convalida incrociata impostando contemporaneamente parametri diversi. In questo modo, il codice viene semplificato e puoi implementare insieme i passaggi di pre-elaborazione dei dati e un estimatore.
Utilizza la classe Pipeline per creare una pipeline di trasformazioni con un estimatore finale.
Ottimizzazione delle prestazioni
Questa sezione illustra i modi per ottimizzare le prestazioni di BigQuery DataFrames.
Modalità di ordinamento parziale
BigQuery DataFrames fornisce una funzionalità di modalità di ordinamento. Imposta la proprietà ordering_mode
su partial
per generare query più efficienti.
La modalità di ordinamento partial
è in contrasto con la modalità strict
predefinita,
che crea un ordinamento totale di tutte le righe. Un ordinamento totale rende
i DataFrame di BigQuery più compatibili con pandas fornendo
accesso alle righe in base all'ordine con la proprietà DataFrame.iloc
. Tuttavia,
l'ordinamento totale e l'indice sequenziale predefinito per quell'ordinamento fanno sì
che né i filtri di colonna né i filtri di riga riducano il numero di byte
scansionati, a meno che questi filtri non vengano applicati come parametri alle
funzioni read_gbq
e read_gbq_table
. Per fornire un ordinamento totale su tutte le righe del DataFrame, BigQuery DataFrames crea un hash di tutte le righe. Ciò può comportare una scansione completa dei dati che ignora i filtri di riga
e colonna.
L'impostazione della proprietà ordering_mode
su partial
impedisce ai DataFrame di BigQuery di generare un ordinamento totale su tutte le righe. La modalità di ordinamento parziale disattiva anche le funzionalità che richiedono un ordinamento totale in tutte le righe, ad esempio la proprietà DataFrame.iloc
.
La modalità di ordinamento parziale imposta la classe
DefaultIndexKind
su un indice nullo anziché su un indice sequenziale rispetto all'ordinamento.
Quando filtri un DataFrame con la proprietà ordering_mode
impostata su partial
,
i DataFrame BigQuery non devono più calcolare le righe mancanti
nell'indice sequenziale, quindi generano query più rapide ed efficaci. L'API BigQuery DataFrames è ancora simile a Pandas, proprio come l'esperienza predefinita con la modalità di ordinamento rigoroso. Tuttavia, la modalità di ordinamento parziale sarà diversa dal comportamento comune di pandas: ad esempio, la modalità di ordinamento parziale non esegue join impliciti per indice.
Con le modalità di ordinamento parziale e rigoroso, paghi le risorse BigQuery che utilizzi. Tuttavia, l'utilizzo della modalità di ordinamento parziale può ridurre i costi quando si utilizzano tabelle in cluster e tabelle partizionate di grandi dimensioni, perché i filtri riga sulle colonne di cluster e partizione riducono il numero di byte elaborati.
Utilizzo
Per utilizzare l'ordinamento parziale, imposta la proprietà ordering_mode
su partial
prima di eseguire qualsiasi altra operazione con BigQuery DataFrames, come mostrato nel seguente esempio di codice:
Poiché non esiste un indice sequenziale con la modalità di ordinamento parziale,
i DataFrame BigQuery non correlati non vengono uniti implicitamente.
Devi invece chiamare esplicitamente il metodo DataFrame.merge
per unire
due DataFrame BigQuery che derivano da espressioni di tabella diverse.
Le funzionalità Series.unique()
e Series.drop_duplicates()
non sono compatibili con la modalità di ordinamento parziale. Utilizza invece il metodo groupby
per trovare valori univoci in questo modo:
Con la modalità di ordinamento parziale, l'output delle funzioni DataFrame.head(n)
e Series.head(n)
non è idempotente in tutte le invocazioni. Per scaricare un piccolo campione arbitrario di dati, utilizza i metodi DataFrame.peek()
o Series.peek()
.
Per un tutorial dettagliato in cui utilizzi la proprietà ordering_mode = "partial"
, consulta
questo notebook BigQuery DataFrames che mostra l'utilizzo della modalità di ordinamento parziale.
Risoluzione dei problemi
Poiché i DataFrame in modalità di ordinamento parziale non hanno sempre un ordinamento o un indice, potresti riscontrare i seguenti problemi quando utilizzi alcuni metodi compatibili con Pandas.
Errore relativo all'ordine richiesto
Alcune funzionalità richiedono un ordine, ad esempio le funzioni DataFrame.head()
e
DataFrame.iloc
. Per un elenco delle funzionalità che richiedono un ordine, consulta la colonna Richiede ordinamento in API pandas supportate.
Se non è presente alcuna organizzazione dell'oggetto, l'operazione non va a buon fine con un messaggio OrderRequiredError
come il seguente:
OrderRequiredError: Op iloc requires an ordering. Use .sort_values or .sort_index to provide an ordering.
Come descritto nel messaggio di errore, puoi fornire un ordinamento utilizzando il metodo
DataFrame.sort_values()
per ordinare in base a una o più colonne. Altre operazioni, come l'operazione
DataFrame.groupby()
, forniscono implicitamente un ordinamento totale per le chiavi del gruppo.
Se non è possibile stabilire che l'ordinamento è completamente stabile su tutte le righe, le operazioni successive potrebbero avvisarti con un messaggio AmbiguousWindowWarning
come il seguente:
AmbiguousWindowWarning: Window ordering may be ambiguous, this can cause unstable results.
Se il tuo carico di lavoro può gestire risultati non deterministici o se puoi verificare manualmente che l'ordinamento fornito sia un ordinamento totale, puoi filtrare il messaggio AmbiguousWindowWarning
in questo modo:
Errore di indice null
Alcune funzionalità richiedono un indice, ad esempio le proprietà DataFrame.unstack()
e
Series.interpolate()
. Per un elenco delle funzionalità che richiedono un indice, consulta la colonna Richiede indice in API pandas supportate.
Quando utilizzi un'operazione che richiede un indice con la modalità di ordinamento parziale, l'operazione genera un messaggio NullIndexError
come il seguente:
NullIndexError: DataFrame cannot perform interpolate as it has no index. Set an index using set_index.
Come descritto nel messaggio di errore, puoi fornire un indice utilizzando il metodo
DataFrame.set_index()
per ordinare in base a una o più colonne. Altre operazioni, come l'operazione
DataFrame.groupby()
, forniscono implicitamente un indice sul gruppo per chiavi, a meno che non sia impostato il parametro as_index=False
.
Visualizzazioni
L'API bigframes.pandas
è un gateway per l'intero ecosistema di strumenti Python. L'API supporta operazioni statistiche avanzate e puoi visualizzare le aggregazioni generate dai DataFrame di BigQuery.
Puoi anche passare da un DataFrame di BigQuery DataFrames a un DataFrame pandas
con operazioni di campionamento integrate.
Passaggi successivi
- Scopri come generare codice per i DataFrame BigQuery con Gemini.
- Scopri come analizzare i download dei pacchetti da PyPI con BigQuery DataFrames.
- Visualizza il codice sorgente, i notebook di esempio e i samples di BigQuery DataFrames su GitHub.
- Consulta il riferimento all'API BigQuery DataFrames.