BigQuery 搜尋功能簡介
BigQuery 搜尋索引可讓您有效率地找出藏在非結構化文字和半結構化 JSON 資料中的不重複資料元素,不必事先瞭解資料表結構定義。搜尋索引結合了資料欄儲存庫和文字搜尋功能,可讓您有效率地執行資料列查詢,以便進行記錄分析、安全性稽核和依法呈報等工作。
BigQuery 會儲存及管理索引,因此當資料在 BigQuery 中可用時,您可以使用 SEARCH 函式或其他支援的運算子和函式立即擷取資料。如要最佳化搜尋,請參閱最佳做法。
用途
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)
限制
- 您無法直接在檢視表或 materialized view 建立搜尋索引,但在已建立索引的資料表檢視表上呼叫
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') );
查詢參照具體化檢視表時,不會使用搜尋索引。
多重陳述式交易查詢不會使用搜尋索引。
時間旅行查詢不會使用搜尋索引。
後續步驟
- 進一步瞭解如何建立搜尋索引。
- 進一步瞭解如何使用搜尋索引在資料表中搜尋。