BigQuery 搜尋功能簡介

有了 BigQuery 搜尋索引,您就能使用 GoogleSQL 有效找出藏在非結構化文字和半結構化 JSON 資料中的不重複資料元素,而無須事先瞭解資料表結構定義。

透過搜尋索引,BigQuery 可在單一平台中提供強大的資料欄儲存空間和文字搜尋功能,讓您在需要尋找個別資料列時,能以高效率查詢資料列。常見用途之一是記錄檔分析。舉例來說,您可能需要找出與使用者相關聯的資料列,以便製作一般資料保護規則 (GDPR) 報表,或是在文字酬載中找出特定錯誤代碼。

BigQuery 會儲存及管理索引,因此當 BigQuery 提供資料時,您可以立即使用 SEARCH 函式其他運算子和函式 (例如等於 (=)、INLIKE 運算子,以及特定字串和 JSON 函式) 擷取資料。如要改善搜尋結果,請參閱最佳做法

用途

BigQuery 搜尋索引可協助您執行下列工作:

  • 搜尋儲存在 BigQuery 資料表中的系統、網路或應用程式記錄檔。
  • 找出要刪除的資料元素,以符合法規程序。
  • 協助開發人員排解問題。
  • 執行安全性稽核。
  • 建立需要高度精確搜尋篩選條件的資訊主頁。
  • 搜尋經過預先處理的資料,找出完全相符的項目。

詳情請參閱「建立搜尋索引」和「使用索引搜尋」。

定價

如果貴機構中索引表的總大小低於您所在地區的限制,則建立及更新搜尋索引所需的處理作業不會產生任何費用。如要支援超過此限制的索引,您必須提供自己的保留空間,以便處理索引管理工作。搜尋索引處於啟用狀態時,會產生儲存空間費用。您可以在 INFORMATION_SCHEMA.SEARCH_INDEXES 檢視畫面中查看索引儲存空間大小。

角色和權限

如要建立搜尋索引,您需要在建立索引的資料表上具備 bigquery.tables.createIndex IAM 權限。如要刪除搜尋索引,您必須具備 bigquery.tables.deleteIndex 權限。以下每個預先定義的 IAM 角色都包含使用搜尋索引所需的權限:

  • BigQuery 資料擁有者 (roles/bigquery.dataOwner)
  • BigQuery 資料編輯器 (roles/bigquery.dataEditor)
  • BigQuery 管理員 (roles/bigquery.admin)

限制

  • 您無法直接在檢視表或具象化檢視表上建立搜尋索引,但在已編製索引的資料表檢視表上呼叫 SEARCH 函式,即可使用基礎搜尋索引。
  • 如果您在建立搜尋索引後變更資料表名稱,索引就會失效。
  • SEARCH 函式專為點查詢而設計。無法使用模糊搜尋、錯字修正、萬用字元和其他類型的文件搜尋功能。
  • 如果搜尋索引的涵蓋率尚未達到 100%,您仍須為 INFORMATION_SCHEMA.SEARCH_INDEXES 檢視畫面中回報的所有索引儲存空間付費。
  • 使用 SEARCH 函式或經由搜尋索引器最佳化的查詢,不會由 BigQuery BI Engine 加速。
  • 當 DML 陳述式修改已編入索引的資料表時,系統不會使用搜尋索引,但如果可透過搜尋索引進行最佳化的判定式是 DML 陳述式中子查詢的一部分,則可使用搜尋索引。

    • 以下查詢不會使用搜尋索引:
    DELETE FROM my_dataset.indexed_table
    WHERE SEARCH(user_id, '123');
    • 您可以在下列查詢中使用搜尋索引:
    DELETE FROM my_dataset.other_table
    WHERE
      user_id IN (
        SELECT user_id
        FROM my_dataset.indexed_table
        WHERE SEARCH(user_id, '123')
      );
  • 查詢參照具體化檢視表時,系統不會使用搜尋索引。

  • 多語句交易查詢不會使用搜尋索引。

後續步驟