持續查詢簡介

本文說明 BigQuery 持續查詢。

BigQuery 持續查詢是會不斷執行的 SQL 陳述式,持續查詢功能可即時分析傳入 BigQuery 的資料。您可以將持續查詢產生的輸出資料列,寫入或匯出至下列目的地:

持續查詢可透過下列任一方法,處理寫入標準 BigQuery 資料表或 Apache Iceberg 代管資料表的資料:

您可以使用持續查詢執行具時效性的工作,例如建立並立即根據洞察資料採取行動、套用即時機器學習 (ML) 推論,以及將資料複製到其他平台。這樣一來,您就能將 BigQuery 做為事件導向的資料處理引擎,用於應用程式的決策邏輯。

下圖顯示常見的持續查詢工作流程:

圖表:說明常見的 BigQuery 持續查詢工作流程,包括資料擷取、處理,以及匯出至 Bigtable 和 Pub/Sub 等目的地。

用途

以下是可能需要使用持續查詢的常見用途:

  • 個人化客戶互動服務:使用生成式 AI,為每次客戶互動建立量身打造的訊息。
  • 異常偵測:建構解決方案,即時偵測複雜資料中的異常狀況和威脅,以便更快因應問題。
  • 可自訂的事件導向管道:將持續查詢與 Pub/Sub 整合,根據傳入的資料觸發下游應用程式。
  • 資料充實和實體擷取:使用 SQL 函式和機器學習模型,透過持續查詢執行即時資料充實和轉換。
  • 反向擷取、轉換和載入 (ETL):執行即時反向 ETL,將資料載入其他更適合低延遲應用程式服務的儲存系統。例如,分析或強化寫入 BigQuery 的事件資料,然後串流至 Bigtable、Spanner 或 Apache Iceberg 代管資料表,供應用程式使用。
  • 自動觸發代理:根據即時資料串流中偵測到的複雜事件,即時觸發代理資料管道。如需範例,請參閱「使用 BigQuery 和 Agent Development Kit (ADK) 建構事件導向的資料代理」程式碼實驗室。
  • 自主代理監控:使用 BigQuery 代理數據分析外掛程式,開發即時自動監控和警示功能,用於即時代理互動。此外掛程式會將所有代理追蹤資料、工具使用情形和作業記錄直接串流至 BigQuery,深入觀測 AI 員工。

支援的功能

持續查詢支援下列作業:

支援的有狀態作業

如要尋求支援或針對這項功能提供意見回饋,請傳送電子郵件至 bq-continuous-queries-feedback@google.com。

有狀態作業可讓持續查詢執行複雜分析,這類分析需要保留多個資料列或時間間隔的資訊。無狀態函式會獨立處理每一列,而有狀態作業則會維護擷取資料的狀態,以支援 JOIN、匯總和視窗匯總等函式。這項功能可讓您在查詢執行期間,將必要資料儲存在記憶體中,藉此建立不同串流事件之間的關聯,或計算一段時間內的指標 (例如 30 分鐘平均值)。

持續查詢支援下列有狀態作業:

授權

執行持續查詢工作時使用的Google Cloud 存取權杖,如果是由使用者帳戶產生,存留時間 (TTL) 為兩天。因此,這類工作會在兩天後停止執行。服務帳戶產生的存取權杖可以執行更長時間,但仍須遵守查詢執行時間上限。詳情請參閱「使用服務帳戶執行持續查詢」。

位置

如需支援的地區清單,請參閱「BigQuery 持續查詢位置」。

限制

持續查詢有下列限制:

預留項目限制

  • 您必須建立 Enterprise 或 Enterprise Plus 版本的預留項目,並使用 CONTINUOUS 指派類型,才能執行持續查詢。持續查詢不支援隨選運算計費模式。
  • 建立CONTINUOUS 預留項目指派作業時,相關聯的預留項目最多只能有 500 個運算單元。如要申請提高這項限制,請與 bq-continuous-queries-feedback@google.com 聯絡。
  • 您無法建立預留項目指派作業,在與持續查詢預留項目指派作業相同的預留項目中,使用不同的工作類型。
  • BigQuery 會根據使用 CONTINUOUS 工作類型的預留項目指派作業設定大小,決定每項專案可同時執行的持續查詢數量。如要接受新工作,BigQuery 要求每項持續查詢工作至少要有 10 個運算單元。在正常執行期間,查詢不一定會耗用所有 10 個運算單元。這項門檻可確保每項執行中的持續查詢,都能維持足夠的基準運算能力,處理突然增加的傳入資料量,不會落後或影響低延遲處理。

    為確保查詢順利執行,且不會達到並行限制,建議您使用運算單元自動調度資源功能。啟用自動調度資源功能後,整體運算單元用量會根據實際資源需求動態調整。您可以設定較小的基準預留項目,並設定自動調度資源上限,輕鬆涵蓋預期並行查詢的每項查詢 10 個運算單元門檻。

  • 使用相同預留項目執行多項持續查詢時,個別工作可能無法按照 BigQuery 公平性定義,公平分配可用資源。

運算單元自動調整資源配置

持續查詢可使用運算單元自動調度資源功能,動態調整分配的容量,以因應工作負載。隨著持續查詢工作負載增減,BigQuery 會動態調整運算單元。

持續查詢開始執行後,會主動監聽傳入的資料,這會耗用運算單元資源。雖然預留項目在執行持續查詢時,不會縮減至零個運算單元,但主要監聽傳入資料的閒置持續查詢,預計會耗用極少量的運算單元,通常約為 1 個運算單元。

閒置運算單元共用

持續查詢可使用閒置運算單元共用功能,與其他預留項目和工作類型共用未使用的運算單元資源。

  • 您仍須指派預留項目CONTINUOUS,才能執行持續查詢,無法只依賴其他預留項目的閒置運算單元。因此,CONTINUOUS 預留項目指派作業需要非零的運算單元基準,或非零的運算單元自動調度資源設定。
  • 只有閒置的基準運算單元,或 CONTINUOUS 預留項目指派作業中的承諾使用運算單元,才能共用。自動調度資源的運算單元無法做為其他預留項目的閒置運算單元共用。

定價

持續查詢可以使用 BigQuery 流暢擴充。

持續查詢採用 BigQuery 運算資源運算定價,以運算單元為單位。如要執行持續查詢,您必須具備使用 Enterprise 或 Enterprise Plus 版本的預留項目,以及使用 CONTINUOUS 工作類型的預留項目指派作業。

使用其他 BigQuery 資源 (例如資料擷取和儲存) 時,則按照 BigQuery 定價頁面顯示的費率計費。

如果其他服務會接收持續查詢結果,或在持續查詢處理期間遭到呼叫,則會按照這些服務的公告費率計費。如要瞭解持續查詢使用的其他 Google Cloud 服務定價,請參閱下列主題:

估算運算單元容量需求

由於每個工作負載都不同,因此通常無法預先準確估算持續查詢所需的運算單元。持續查詢所需的運算單元數量取決於多項因素:

  • 同時執行的持續查詢數量。
  • SQL 陳述式的複雜度。
  • 使用有狀態處理函式,包括視窗時間長度、JOIN 和匯總。
  • 資料傳入的速率或速度。
  • 擷取資料的結構和大小。

概念上,您可以根據持續查詢工作負載,估算所需的運算單元總數:

預估運算單元 ≈ 持續查詢數量 x ∑ (資料速率 x 查詢複雜度)

由於實際運算單元用量很大程度上取決於您的特定工作負載和資料模式,因此最準確的費用預估方法是監控執行中的工作。您可以使用 INFORMATION_SCHEMA 檢視表,評估獨立持續查詢執行的尖峰運算單元用量。如需詳細操作說明和查詢範例,瞭解如何追蹤一段時間內的運算單元用量,請參閱「查看運算單元消耗資訊」。

後續步驟

請嘗試建立持續查詢。