https://cloud.google.com/bigquery/docs/search-index?hl=ja
https://zenn.dev/cloud_ace/articles/d6be4751afaa81
検索インデックスは、大きなテーブルを想定して設計されています。10 GB 未満のテーブルに検索インデックスを作成した場合、インデックスは入力されません。
SEARCH 関数を呼び出す予定のない列はインデックス登録しないでください。
-- 1. 前作業
gcloud init
gcloud auth list
gcloud --version
gcloud projects create project01-9999999 \
--name="project01"
gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet
gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111
gcloud services enable compute.googleapis.com --project project01-9999999
gcloud components update
-- 2. BigQuery API有効化
gcloud services list --enabled
gcloud services enable bigquery.googleapis.com \
--project project01-9999999
-- 3. BigQueryデータセットを作成する
bq mk ds01
bq ls
-- 4. 動作確認
検索インデックスを作成する
CREATE OR REPLACE TABLE ds01.tab1(col1 STRING, col2 INT64, col3 JSON);
CREATE SEARCH INDEX ind1
ON ds01.tab1(col1, col3);
insert into ds01.tab1(col1) values('A');
DECLARE i INT64 DEFAULT 1;
set i = 0;
LOOP
insert into ds01.tab1 select * from ds01.tab1;
SET i = i + 1;
IF i >= 10 THEN
LEAVE;
END IF;
END LOOP;
select count(*) from ds01.tab1;
検索インデックスに関する情報を取得する
SELECT table_name, index_name, ddl, coverage_percentage, analyzer, index_status
FROM `project01-9999999`.ds01.INFORMATION_SCHEMA.SEARCH_INDEXES
;
SELECT table_name, index_name, index_column_name, index_field_path
FROM `project01-9999999`.ds01.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
;
SELECT
ic.INDEX_CATALOG AS project_name
, ic.INDEX_SCHEMA AS dataset_name
, ic.TABLE_NAME AS table_name
, ic.INDEX_NAME AS index_name
, ic.INDEX_COLUMN_NAME AS column_name
, ic.INDEX_FIELD_PATH AS field_path
, i.INDEX_STATUS AS status
, c.DATA_TYPE AS data_type
FROM
ds01.INFORMATION_SCHEMA.SEARCH_INDEXES i
INNER JOIN
ds01.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS ic
ON
i.TABLE_NAME = ic.TABLE_NAME
AND i.INDEX_NAME = ic.INDEX_NAME
LEFT OUTER JOIN
ds01.INFORMATION_SCHEMA.COLUMNS c
ON
i.INDEX_CATALOG = c.TABLE_CATALOG
AND i.INDEX_SCHEMA = c.TABLE_SCHEMA
AND ic.TABLE_NAME = c.TABLE_NAME
AND ic.INDEX_COLUMN_NAME = c.COLUMN_NAME
ORDER BY
project_name
, dataset_name
, table_name
, column_name
;
検索インデックスを削除する
DROP SEARCH INDEX ind1 ON ds01.tab1;
-- 5. クリーンアップ
gcloud projects list
gcloud projects delete project01-9999999 \
--quiet