Knowledge Catalog を使用すると、組織のデータを検出、一元的にカタログ化、管理、把握できます。Data Catalog 内の特定のデータアセットを効率的に見つけるには、強力な検索クエリを使用します。検索クエリの構文には、次のものが含まれます。
- シンプルな検索: 単一の検索キーワードを使用してデータアセットを見つける。
- フリーテキスト検索: 自然言語のフレーズまたはキーワードを使用してデータアセットを検索します。
- 修飾された述語: 名前、場所、システム、タイプなどの特定のメタデータ フィールドを使用して検索を絞り込みます。
- アスペクト検索: 添付されたビジネス メタデータとテクニカル メタデータに基づいてエントリを検索します。
- 論理演算子:
AND、OR、NOT演算子を使用して複数の検索条件を組み合わせ、複雑なクエリを作成します。この構文を理解することで、必要なデータをすばやく見つけることが可能です。
修飾された述語
修飾された述語を使用して、アセット名、タイプ、システムなどの特定のメタデータ フィールドを評価するように検索に明示的に指示することで、検索結果を絞り込みます。
述語の先頭にキーを付けて修飾すると、照合範囲を特定のメタデータ部分に限定できます。
- 等号(
=)は、検索の対象を完全一致に絞り込むものです。 - キーの後のコロン(
:)は、述語を検索結果内の値に含まれる部分文字列またはトークンと照合します。
トークン化により、テキストのストリームが一連のトークン(各トークンは通常 1 つの単語に対応)に分割されます。
次に例を示します。
name:fooは、foo部分文字列を含む名前(foo1、barfooなど)のリソースを選択します。description:fooは、説明にfooトークンがあるリソース(bar、fooなど)を選択します。location=fooは、ロケーション名がfooで指定されたロケーションのリソースに一致します。
サポートされている修飾子
Knowledge Catalog の検索では、次の修飾子がサポートされています。
| 限定子 | 説明 |
|---|---|
name:x |
x をリソース ID またはリソースの表示名の部分文字列と照合します。 |
displayname:x |
x をリソースの表示名の部分文字列と照合します。 |
column:x |
x をリソースのスキーマの列名(またはネストされた列名)の部分文字列と照合します。 |
description:x |
x をリソースの説明のトークンと照合します。次に例を示します。
|
labels:bar |
ラベル(値があるもの)を持ち、ラベルキーに部分文字列として bar が含まれているリソースと一致します。 |
labels=bar |
ラベル(値があるもの)を持ち、ラベルキーが文字列として bar と等しいリソースと一致します。 |
labels.bar:x |
x を、リソースにアタッチされたキー bar を含むラベルの値の部分文字列と照合します。 |
labels.foo=bar |
キーが foo でキー値が bar であるリソースと一致させます。 |
type=TYPE |
特定のエントリタイプまたはそのタイプ エイリアスのリソースと照合します。= 修飾子が必要です。 |
projectid:bar |
ID の部分文字列として bar と一致する Google Cloud プロジェクト内のリソースと照合します。 |
parent:x |
x をリソースの階層パスの部分文字列と照合します。 |
system=SYSTEM |
指定されたシステムのリソースを照合します。= 修飾子が必要です。 |
location=LOCATION |
指定されたロケーションのリソースを正確な名前と照合します。 BigQuery Omni アセットは、BigQuery Omni のロケーション名を使用してこの修飾子をサポートしています。たとえば、 |
createtime |
指定した日付、タイムスタンプ、または相対時間(日数)以前または以降に作成されたリソースを検索します。サポートされている形式と演算子については、時間フィルタをご覧ください。 |
updatetime |
指定した日付、タイムスタンプ、または相対時間(日数)以前または以降に更新されたリソースを検索します。サポートされている形式と演算子については、時間フィルタをご覧ください。 |
完全一致の条件
述語キー type、system、location、アスペクト検索(has を除く)は、部分文字列修飾子(:)ではなく、完全一致修飾子(=)のみをサポートします。
これらの述語には、次の完全一致構文を使用します。
| 述語キー | 正しい構文 | 構文が正しくない |
|---|---|---|
type |
type=table(または type=view、type=dataset) |
type:table または type:tab |
system |
system=bigquery(または system=spanner) |
system:bigquery または system:big |
location |
location=us-central1(または location=europe-west1) |
location:us-central1 または location:us |
部分文字列修飾子
name、displayname、column、projectid、parent などの述語は、コロン(:)修飾子による部分文字列一致をサポートします。
name:transactionsは、ID または表示名にtransactionsが含まれるリソースと一致します。たとえば、daily_transactions_rawやtransactions_v2です。column:customer_idは、customer_idを含む列名のリソースに一致します。projectid:prodは、ID にprodが含まれているプロジェクト内のリソースと一致します。例:finance-prod-2026
期間のフィルタ
リソースは、作成日時(createtime)または最終更新日時(updatetime)でフィルタできます。
サポートされている演算子と形式
- サポートされている演算子:
:、=、<、>、<=、>=、=>、=< - 相対日数(
-Nd): 過去の相対日数でフィルタします(-30d、-7d、-1dなど)。 - カレンダーの日付(
YYYY-MM-DDまたはYYYY/MM/DD): GMT/UTC の特定の日付でフィルタします。 - 完全なタイムスタンプ(
YYYY-MM-DDTHH:MM:SSまたはYYYY-MM-DDTHH:MM:SSZ): GMT/UTC の正確なタイムスタンプでフィルタします。YYYY-MM-DDTHH:MMやYYYY-MM-DDTHHなどの部分的なタイムスタンプもサポートされています。
時間フィルタの構文
次の表に、時間フィルタの構文を示します。
| フォーマット カテゴリ | 有効な構文 | 無効な構文 | 説明 |
|---|---|---|---|
| 相対時間の単位 |
|
|
|
| カレンダーの日付 |
|
|
|
| タイムスタンプとタイムゾーン |
|
|
|
| 時間帯の範囲 |
|
|
|
| 自然言語の日付 |
|
|
|
ラベルフィルタ
labels 述語を使用して、関連付けられたラベルでリソースをフィルタします。ラベルキー、ラベル値、またはその両方でフィルタできます。
| クエリパターン | 例 | 説明 |
|---|---|---|
labels=KEY |
labels=environment |
値に関係なく、キーが environment のラベルを持つリソースと一致します。 |
labels:KEY_SUBSTRING |
labels:tier |
tier を部分文字列として含むラベルキー(service_tier や storage_tier など)を持つリソースと一致させます。 |
labels.KEY=VALUE |
labels.env=prod |
ラベルキーが env で、値が prod に完全に一致するリソースと一致します。 |
labels.KEY:VALUE_SUBSTRING |
labels.owner:analytics |
ラベルキー owner を持つリソースを照合します。値には部分文字列として analytics(analytics-team や data-analytics など)が含まれます。 |
| 複数のラベル(AND) | labels.env=prod labels.data_tier=tier1 |
env=prod ラベルと data_tier=tier1 ラベルの両方が適用されたリソースを照合します。 |
| システムとタイプを組み合わせたもの | system=bigquery type=table labels.env=prod labels.confidentiality=high |
env=prod と confidentiality=high のラベルが付いた BigQuery テーブルと一致します。 |
アスペクト検索
クエリ構文を使用して、付加されたアスペクトに基づいてエントリを検索できます。
部分文字列一致では、制限された数のアスペクトとの一致が試行されます。パスの一部を使用してエントリが見つからない場合は、完全パスを使用して検索を絞り込み、レコードの回収率を高めます。
| 限定子 | 説明 |
|---|---|
aspect:xまたは has:x |
エントリに関連付けられているアスペクトのアスペクト タイプの完全パスの部分文字列として x と一致させます(projectid.location.ASPECT_TYPE_ID 形式)。 |
aspect=xまたは has=x |
エントリに関連付けられているアスペクトのアスペクト タイプの完全パスとして x と一致させます(projectid.location.ASPECT_TYPE_ID 形式)。 |
x |
アスペクト フィールドの値を検索します。エントリに関連付けられているアスペクトのアスペクト タイプとフィールド名の完全パスの部分文字列として次の形式で
検索できるのは、アスペクトの最上位フィールドのみです。 |
論理演算子
クエリでは、論理演算子を使用して複数の述語を組み合わせることができます。注: 論理演算子 AND、OR、NOT では大文字と小文字が区別されます。大文字で記述する必要があります。
AND 演算子
複数の検索語句または述語をスペースで区切ると、論理 AND が暗黙的に指定されるため、明示的に記述する必要はありません。
次の例は、AND 演算子を使用してクエリを作成する方法を示しています。
BigQuery テーブルを検索する
system=bigquery type=tablecustomer_idという名前の列を含むプロジェクトbanking-prodのリソースを検索するprojectid:banking-prod column:customer_id必要に応じて、明示的な
AND演算子を使用できます。system=bigquery AND type=table AND location=us-central1
OR 演算子
複数の条件のいずれかに一致させるには、OR 演算子を使用します。OR を他の条件と組み合わせる場合は、丸かっこ ( ) を使用して式をグループ化し、優先順位を定義します。
次の例は、OR 演算子を使用してクエリを作成する方法を示しています。
BigQuery のテーブルとビューを検索する
system=bigquery (type=table OR type=view)複数のシステムにわたってテーブルを検索する
(system=bigquery OR system=spanner) type=tableマーケティング データセットまたは財務データセットのエントリを検索する
system=bigquery (parent:marketing_analytics OR parent:finance_analytics)
NOT 演算子
述語を否定するには、先頭に大文字の NOT または -(ハイフン)を付けます。
次の例は、NOT 演算子を使用してクエリを作成する方法を示しています。
サンドボックス プロジェクト内のテーブルを除くすべてのテーブルを検索する
NOT演算子を使用する
type=table NOT projectid:sandbox-project- ハイフンを使用する
type=table -projectid:sandbox-project名前に
testが含まれていないすべての BigQuery リソースを検索するsystem=bigquery -name:test
簡略構文
簡略化された構文を使用する場合は、かっこ内の OR 演算子には |(垂直バー)を、AND 演算子には ,(カンマ)を使用します。この簡略構文は、修飾された述語で使用できます。
複数のプロジェクト ID を検索する
OR演算子を使用します。
projectid:(finance-prod|sales-prod|analytics-prod)- 括弧を使用する:
projectid:finance-prod OR projectid:sales-prod OR projectid:analytics-prod複数の列名に一致するエントリを検索する(
AND)column:(customer_id,transaction_date,amount)複数の列名(
OR)のいずれかに一致するエントリを検索するcolumn:(customer_id|user_id|client_id)
ワイルドカード ポリシー
Knowledge Catalog の検索構文では、クエリ文字列や述語で * や ? などのワイルドカードはサポートされていません。
クエリにアスタリスク(*)または疑問符(?)を含めると、パターン マッチングのワイルドカードではなく、リテラル文字として扱われます。
たとえば、名前が _masked で終わるテーブルを検索するには:
- サポートされている:
name:_masked: 部分文字列一致の:修飾子を使用して、名前に_maskedを含むすべてのリソース(customer_records_maskedやtransactions_maskedなど)を検索します。 - サポート対象外:
name:*_masked:*はパターン ワイルドカードではなく、リテラル文字として扱われます。
かっこ
検索クエリのかっこには、特定の技術的な機能があります。かっこを多用したり、自然言語クエリに適用したりすると、検索パーサーが混乱し、結果の品質が低下する可能性があります。
平易な自然言語
ビジネスに関する質問をする場合は、クエリをプレーン テキストで渡します。かっこで囲まないでください。たとえば、次のように入力します。
Find customer orders containing email addresses
述語の省略構文
かっこは、述語キーとともに使用して、複数の OR 条件と AND 条件をコンパクトな形式でリストする場合に非常に効果的です。
ORを使用して述語キーをグループ化する(|)(
|)を使用して、リストされているプロジェクトのいずれかに存在するエントリを検索します。projectid:(finance-prod|finance-test|analytics-raw)(
OR)を使用して、リストされているプロジェクトのいずれかに存在するエントリを検索します。
projectid:finance-prod OR projectid:finance-test OR projectid:finance-rawANDを使用して述語キーをグループ化する(,)- (
,)を使用して、指定されたすべての列を含むエントリを検索する
column:(customer_id, order_date, total_amount)- (
AND)を使用して、指定されたすべての列を含むエントリを検索する
column:customer_id AND column:order_date AND column:total_amount- (
ハイブリッド検索
自然言語クエリとコンパクト フィルタを組み合わせることができます。
たとえば、1 か月のアクティブ ユーザーを指定するテーブルを検索し、検索を特定のプロジェクトに制限するには、次のクエリを使用します。
monthly active users type=table projectid:(data-warehouse|analytical-tier)
かっこを使用する際のベスト プラクティス
質問全体をかっこで囲まないでください。セマンティック エンジンがかっこをリテラル文字として扱い、関連性の低い結果が返される可能性があります。
- 正しくない例:
(Show me datasets about US population by state) - 正しい例:
Show me datasets about US population by state
- 正しくない例:
複雑なネストされたブール値ツリーと自然言語フィールド内の括弧を混在させないでください。検索は自然言語の意図に最適化されています。かっこや明示的なロジックブロックを使用してクエリを複雑にすると、パーサーが混乱します。
- 正しくない例:
(revenue data) AND system=BIGQUERY AND projectid:(data-warehouse | analytical-tier) - 正しい例:
revenue data system=bigquery projectid:(data-warehouse|analytical-tier)
- 正しくない例:
値の一部でない限り、スペースを任意に追加しないでください。
- 正しくない例:
column:( email | id ) - 正しい例:
column:(email|id)。
- 正しくない例:
次のステップ
- Knowledge Catalog でリソースを検索する方法を学習する
- Knowledge Catalog のメタデータ管理の詳細を確認する。
- アスペクトを使用してエントリとエントリ リンクをメタデータで拡充する方法を学習する。
- エントリの管理方法とカスタムソースを取り込む方法を学習する。