自訂 BigQuery DataFrames 的 Python 函式
透過 BigQuery DataFrames,您可以將自訂 Python 函式轉換為 BigQuery 構件,並大規模在 BigQuery DataFrames 物件上執行。這項擴充性支援功能可讓您執行 BigQuery DataFrames 和 SQL API 無法執行的作業,因此您可能會想善用開放原始碼程式庫。
必要的角色
如要取得完成本文件工作所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
-
BigQuery 資料編輯者 (
roles/bigquery.dataEditor) -
BigQuery Connection 管理員 (
roles/bigquery.connectionAdmin) -
Cloud Functions 開發人員 (
roles/cloudfunctions.developer) -
服務帳戶使用者 (
roles/iam.serviceAccountUser) -
Storage 物件檢視者 (
roles/storage.objectViewer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
使用者定義的函式 (UDF)
透過 UDF (預先發布版),您可以將自訂 Python 函式轉換為 Python UDF。如需使用範例,請參閱「建立永久性 Python UDF」。
在 BigQuery DataFrames 中建立 UDF 時,系統會在指定資料集中建立 BigQuery 常式,做為 Python UDF。如需完整的支援參數集,請參閱 bigframes.pandas.udf。
需求條件
如要使用 BigQuery DataFrames UDF,請在專案中啟用 BigQuery API。如果您在專案中提供 bigquery_connection 參數,也必須啟用 BigQuery Connection API。
清除所用資源
除了直接在 Google Cloud 控制台
或使用其他工具清除雲端構件,您也可以使用 bigframes.pandas.get_global_session().bqclient.delete_routine(routine_id)
指令,清除以明確名稱引數建立的 BigQuery DataFrames UDF。
限制
- UDF 中的程式碼必須為獨立性質,也就是說,不得包含對函式主體外定義的匯入或變數的參照。
- UDF 中的程式碼必須與 Python 3.11 相容,因為程式碼是在雲端環境中執行。
- 在函式程式碼中進行微小變更 (例如重新命名變數或插入新行) 後,重新執行 UDF 定義程式碼會導致系統重新建立 UDF,即使這些變更對函式的行為沒有影響也一樣。
- 使用者程式碼會向具有 BigQuery 常式讀取權限的使用者顯示,因此請謹慎加入私密內容。
- 在 BigQuery 位置中,一個專案一次最多可有 1,000 個 Cloud Run 函式。
BigQuery DataFrames UDF 會部署使用者定義的 BigQuery Python 函式,並套用相關限制。
遠端函式
您可以使用 BigQuery DataFrames,將自訂純量函式轉換為 BigQuery 遠端函式。如需使用範例,請參閱「建立遠端函式」。如需完整的支援參數集,請參閱「remote_function」。
在 BigQuery DataFrames 中建立遠端函式時,會建立下列項目:
- Cloud Run 函式。
-
根據預設,系統會使用名為
bigframes-default-connection的連線。您也可以使用預先設定的 BigQuery 連線,這樣系統就會略過連線建立程序。預設連線的服務帳戶會取得 Cloud Run 角色 (roles/run.invoker)。 使用透過 BigQuery 連線建立的 Cloud Run 函式。
需求條件
如要使用 BigQuery DataFrames 遠端函式,必須啟用下列 API:
- 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) - Compute Engine API (
compute.googleapis.com) - Cloud Resource Manager API (
cloudresourcemanager.googleapis.com)
使用 BigQuery DataFrames 遠端函式時,如果您使用預設的 BigQuery 連線,則需要專案 IAM 管理員角色 (roles/resourcemanager.projectIamAdmin);如果您使用預先設定的連線,則需要瀏覽器角色 (roles/browser)。如要避免這項規定,請將 bigframes.pandas.options.bigquery.skip_bq_connection_check 選項設為 True,這樣系統就會直接使用連線 (預設或預先設定),不會檢查連線是否存在或權限。如果您使用預先設定的連線,並略過連線檢查,請確認下列事項:
- 連線是在正確位置建立。
- 如果您使用 BigQuery DataFrames 遠端函式,服務帳戶在專案中必須具有 Cloud Run 叫用者角色 (
roles/run.invoker)。
查看及管理連線
BigQuery 連線會使用您在自訂函式定義中提供的名稱,在與 BigQuery DataFrame 工作階段相同的位置建立。如要查看及管理連結,請按照下列步驟操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
選取您建立遠端函式的專案。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案,然後按一下「Connections」。
BigQuery 遠端函式會在您指定的資料集中建立,或是在匿名資料集中建立,這是一種隱藏資料集。如果在建立遠端函式時未設定名稱,BigQuery DataFrames 會套用以 bigframes 前置字元開頭的預設名稱。如要查看及管理在使用者指定資料集中建立的遠端函式,請執行下列操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
選取您建立遠端函式的專案。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案,然後按一下「Datasets」。
按一下您建立遠端函式的資料集。
按一下「日常安排」分頁標籤。
如要查看及管理 Cloud Run 函式,請按照下列步驟操作:
前往「Cloud Run」頁面。
選取您建立函式的專案。
在可用服務清單中,依「函式部署類型」篩選。
如要找出 BigQuery DataFrames 建立的函式,請尋找具有
bigframes前置字串的函式名稱。
清除所用資源
除了直接在 Google Cloud 控制台或使用其他工具清除雲端構件,您也可以透過下列方式,清除未指定名稱引數而建立的 BigQuery 遠端函式,以及相關聯的 Cloud Run 函式:
- 如要啟動 BigQuery DataFrames 工作階段,請使用
session.close()指令。 - 如要使用預設的 BigQuery DataFrames 工作階段,請使用
bigframes.pandas.close_session()指令。 - 如要使用
session_id取得過去的會期,請使用bigframes.pandas.clean_up_by_session_id(session_id)指令。
您也可以使用 bigframes.pandas.get_global_session().bqclient.delete_routine(routine_id) 指令,清除以明確名稱引數建立的 BigQuery 遠端函式,以及相關聯的 Cloud Run 函式。
限制
- 首次建立遠端函式時,大約需要 90 秒才能使用。額外的套件依附元件可能會增加延遲時間。
- 在函式程式碼中或附近進行微小變更後,重新執行遠端函式定義程式碼 (例如重新命名變數、插入新行或在筆記本中插入新儲存格),可能會導致系統重新建立遠端函式,即使這些變更對函式的行為沒有影響也一樣。
- 使用者程式碼會向具備 Cloud Run 函式讀取權的使用者顯示,因此請務必謹慎處理敏感內容。
- 每個專案在一個區域中,最多可同時有 1,000 個 Cloud Run 函式。詳情請參閱配額的相關說明。
後續步驟
- 瞭解 BigQuery DataFrames 的機器學習和 AI 功能。
- 瞭解如何使用 Gemini 生成 BigQuery DataFrames 程式碼。
- 瞭解如何使用 BigQuery DataFrames 分析 PyPI 的套件下載次數。
- 在 GitHub 上查看 BigQuery DataFrames 的原始碼、範例筆記本和範例。
- 請參閱 BigQuery DataFrames API 參考資料。