遷移至 BigQuery DataFrames 2.0 版
BigQuery DataFrames 2.0 版改善了 BigQuery DataFrames API 的安全性和效能、新增功能,並導入破壞性變更。本文說明異動內容,並提供遷移指南。您可以使用最新版本 1.x 的 BigQuery DataFrames,在安裝 2.0 版前套用這些建議。
BigQuery DataFrames 2.0 版具有下列優點:
- 執行查詢並將結果傳回用戶端時,系統會建立較少資料表,查詢速度也較快,因為
allow_large_results預設為False。這種設計可降低儲存空間成本,尤其是採用實體位元組計費模式時。 - BigQuery DataFrames 部署的遠端函式預設會提升安全性。
安裝 BigQuery DataFrames 2.0 版
為避免破壞性變更,請在 requirements.txt 檔案 (例如 bigframes==1.42.0) 或 pyproject.toml 檔案 (例如 dependencies = ["bigframes = 1.42.0"]) 中固定至特定版本的 BigQuery DataFrames。準備好試用最新版本時,可以執行 pip install --upgrade bigframes 來安裝最新版本的 BigQuery DataFrames。
使用 allow_large_results 選項
BigQuery 對查詢工作設有回應大小上限。從 BigQuery DataFrames 2.0 版開始,BigQuery DataFrames 預設會在將結果傳回用戶端的方法中強制執行這項限制,例如 peek()、to_pandas() 和 to_pandas_batches()。如果工作傳回大量結果,您可以在 BigQueryOptions 物件中將 allow_large_results 設為 True,避免破壞性變更。在 BigQuery DataFrames 2.0 版中,這個選項預設為 False。
import bigframes.pandas as bpd bpd.options.bigquery.allow_large_results = True
您可以使用 to_pandas() 和其他方法中的 allow_large_results 參數,覆寫 allow_large_results 選項。例如:
bf_df = bpd.read_gbq(query) # ... other operations on bf_df ... pandas_df = bf_df.to_pandas(allow_large_results=True)
使用 @remote_function 裝飾器
BigQuery DataFrames 2.0 版對 @remote_function 裝飾器的預設行為進行了一些變更。
對模稜兩可的參數強制執行關鍵字引數
為避免將值傳遞至非預期的參數,BigQuery DataFrames 2.0 以上版本會強制對下列參數使用關鍵字引數:
bigquery_connectionreusenamepackagescloud_function_service_accountcloud_function_kms_key_namecloud_function_docker_repositorymax_batching_rowscloud_function_timeoutcloud_function_max_instancescloud_function_vpc_connectorcloud_function_memory_mibcloud_function_ingress_settings
使用這些參數時,請提供參數名稱。例如:
@remote_function( name="my_remote_function", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
設定服務帳戶
自 2.0 版起,BigQuery DataFrames 部署的 Cloud Run 函式,預設不再使用 Compute Engine 服務帳戶。如要限制部署函式的權限,請按照下列步驟操作:
- 建立服務帳戶,並僅授予所需權限。
- 將服務帳戶電子郵件提供給
@remote_function裝飾器的cloud_function_service_account參數。
例如:
@remote_function( cloud_function_service_account="my-service-account@my-project.iam.gserviceaccount.com", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
如要使用 Compute Engine 服務帳戶,可以將 @remote_function 裝飾器的 cloud_function_service_account 參數設為 "default"。例如:
# 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)
設定輸入設定
自 2.0 版起,BigQuery DataFrames 會將部署的 Cloud Run functions 輸入設定設為 "internal-only"。先前,輸入設定預設為 "all"。您可以設定 @remote_function 裝飾器的 cloud_function_ingress_settings 參數,變更輸入設定。例如:
@remote_function(cloud_function_ingress_settings="internal-and-gclb", ...) def my_remote_function(parameter: int) -> str: return str(parameter)
使用自訂端點
在 2.0 之前的 BigQuery DataFrames 版本中,如果區域不支援區域服務端點和 bigframes.pandas.options.bigquery.use_regional_endpoints = True,BigQuery DataFrames 會改用位置端點。BigQuery DataFrames 2.0 版已移除這項備用行為。如要在 2.0 版中連線至位置端點,請設定 bigframes.pandas.options.bigquery.client_endpoints_override 選項。例如:
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", }
將 LOCATION 替換為要連線的 BigQuery 位置名稱。
使用 bigframes.ml.llm 模組
建議您直接提供支援的 model_name (例如 "gemini-3.5-flash"),以免日後預設模型變更時發生中斷。
import bigframes.ml.llm model = bigframes.ml.llm.GeminiTextGenerator(model_name="gemini-3.5-flash")
後續步驟
- 瞭解如何使用 BigQuery DataFrames 建立圖表。
- 瞭解如何使用 Gemini 生成 BigQuery DataFrames 程式碼。
- 瞭解如何使用 BigQuery DataFrames 分析 PyPI 的套件下載資料。
- 在 GitHub 查看 BigQuery DataFrames 原始碼、筆記本範例和範例。
- 探索 BigQuery DataFrames API 參考資料。