BigQuery 搜尋功能簡介
有了 BigQuery 搜尋索引,您就能使用 GoogleSQL 有效找出藏在非結構化文字和半結構化 JSON 資料中的不重複資料元素,而無須事先瞭解資料表結構定義。
透過搜尋索引,BigQuery 可在單一平台中提供強大的資料欄儲存空間和文字搜尋功能,讓您在需要尋找個別資料列時,能以高效率查詢資料列。常見用途之一是記錄檔分析。舉例來說,您可能需要找出與使用者相關聯的資料列,以便製作一般資料保護規則 (GDPR) 報表,或是在文字酬載中找出特定錯誤代碼。
BigQuery 會儲存及管理索引,因此當 BigQuery 提供資料時,您可以立即使用 SEARCH
函式或其他運算子和函式 (例如等於 (=
)、IN
或 LIKE
運算子,以及特定字串和 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') );
查詢參照具體化檢視表時,系統不會使用搜尋索引。
多語句交易查詢不會使用搜尋索引。
後續步驟
- 進一步瞭解如何建立搜尋索引。
- 進一步瞭解如何在含有搜尋索引的資料表中搜尋。