Knowledge Catalog の検索構文

Knowledge Catalog を使用すると、組織のデータを検出、一元的にカタログ化、管理、把握できます。Data Catalog 内の特定のデータアセットを効率的に見つけるには、強力な検索クエリを使用します。検索クエリの構文には、次のものが含まれます。

  • シンプルな検索: 単一の検索キーワードを使用してデータアセットを見つける。
  • フリーテキスト検索: 自然言語のフレーズまたはキーワードを使用してデータアセットを検索します。
  • 修飾された述語: 名前、場所、システム、タイプなどの特定のメタデータ フィールドを使用して検索を絞り込みます。
  • アスペクト検索: 添付されたビジネス メタデータとテクニカル メタデータに基づいてエントリを検索します。
  • 論理演算子: ANDORNOT 演算子を使用して複数の検索条件を組み合わせ、複雑なクエリを作成します。この構文を理解することで、必要なデータをすばやく見つけることが可能です。

修飾された述語

修飾された述語を使用して、アセット名、タイプ、システムなどの特定のメタデータ フィールドを評価するように検索に明示的に指示することで、検索結果を絞り込みます。

述語の先頭にキーを付けて修飾すると、照合範囲を特定のメタデータ部分に限定できます。

  • 等号(=)は、検索の対象を完全一致に絞り込むものです。
  • キーの後のコロン(:)は、述語を検索結果内の値に含まれる部分文字列またはトークンと照合します。

トークン化により、テキストのストリームが一連のトークン(各トークンは通常 1 つの単語に対応)に分割されます。

次に例を示します。

  • name:foo は、foo 部分文字列を含む名前(foo1barfoo など)のリソースを選択します。
  • description:foo は、説明に foo トークンがあるリソース(barfoo など)を選択します。
  • location=foo は、ロケーション名が foo で指定されたロケーションのリソースに一致します。

サポートされている修飾子

Knowledge Catalog の検索では、次の修飾子がサポートされています。

限定子 説明
name:x x をリソース ID またはリソースの表示名の部分文字列と照合します。
displayname:x x をリソースの表示名の部分文字列と照合します。
column:x x をリソースのスキーマの列名(またはネストされた列名)の部分文字列と照合します。
description:x x をリソースの説明のトークンと照合します。次に例を示します。
  • description:"products" は、説明にトークン products が含まれているすべてのリソースを表示します。たとえば、「在庫にある商品のリスト」などです。
  • description:"prod" は、説明にトークン products があるリソースを表示しません。代わりに、説明にトークン prod が含まれているすべてのリソースが表示されます。例: 「prod environment」。
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

指定されたロケーションのリソースを正確な名前と照合します。= 修飾子が必要です。たとえば、location=us-central1 はアイオワでホストされているアセットに一致します。

BigQuery Omni アセットは、BigQuery Omni のロケーション名を使用してこの修飾子をサポートしています。たとえば、location=aws-us-east-1 は北バージニアの BigQuery Omni アセットに一致します。

createtime

指定した日付、タイムスタンプ、または相対時間(日数)以前または以降に作成されたリソースを検索します。サポートされている形式と演算子については、時間フィルタをご覧ください。

updatetime

指定した日付、タイムスタンプ、または相対時間(日数)以前または以降に更新されたリソースを検索します。サポートされている形式と演算子については、時間フィルタをご覧ください。

完全一致の条件

述語キー typesystemlocation、アスペクト検索(has を除く)は、部分文字列修飾子(:)ではなく、完全一致修飾子(=)のみをサポートします。

これらの述語には、次の完全一致構文を使用します。

述語キー 正しい構文 構文が正しくない
type type=table(または type=viewtype=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

部分文字列修飾子

namedisplaynamecolumnprojectidparent などの述語は、コロン(:)修飾子による部分文字列一致をサポートします。

  • name:transactions は、ID または表示名に transactions が含まれるリソースと一致します。たとえば、daily_transactions_rawtransactions_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:MMYYYY-MM-DDTHH などの部分的なタイムスタンプもサポートされています。

時間フィルタの構文

次の表に、時間フィルタの構文を示します。

フォーマット カテゴリ 有効な構文 無効な構文 説明
相対時間の単位
  • createtime>-30d(過去 30 日間)
  • createtime<=-7d(7 日以上前)
  • updatetime=-1d (前日)
  • updatetime>=-90d
  • createtime>-24h
  • createtime>-60m
  • createtime>-2w
  • createtime>30d
  • 相対時間では、負の日単位(-Nd)のみがサポートされます。
  • 短い単位(時間 h、分 m)と長い単位(週 w、月 m)はサポートされていません。
  • 先頭にマイナス記号(-)のない正のオフセットは無効です。
カレンダーの日付
  • createtime:2025-01-15
  • createtime>2025-01-01
  • createtime<=2025-06-30
  • createtime:2025/01/15
  • createtime:2025-01
  • createtime:2025
  • createtime:15-01-2025
  • createtime:Jan-15-2025
  • createtime:01/15/2025
  • 日付は YYYY-MM-DD または YYYY/MM/DD の形式で指定する必要があります。
  • コンポーネントの順序が標準でない形式(DD-MM-YYYYMM/DD/YYYY など)や月の名前を含む形式は無効です。
タイムスタンプとタイムゾーン
  • createtime:2025-01-15T05:30:00
  • createtime>2025-01-15T05:30:00Z
  • createtime:2025-01-15T05:30
  • createtime:2025-01-15T05:30:00-08:00
  • createtime:2025-01-15T05:30:00 EST
  • createtime:2025-01-15T05:30:00+05:30
  • すべてのタイムスタンプは GMT/UTC で評価されます。
  • GMT 以外のタイムゾーン オフセット(-08:00+05:30 など)とタイムゾーンの略称(ESTPST など)はサポートされていません。
時間帯の範囲
  • createtime>=2025-01-15T09:00:00 createtime<=2025-01-15T17:00:00
  • createtime:09:00:00..17:00:00
  • createtime:09:00-17:00
  • 時刻範囲の構文はサポートされていません。
  • 代わりに、完全な日時文字列を使用して、下限と上限を別々に比較します。
自然言語の日付
  • createtime=-1d
  • createtime>-30d
  • createtime:yesterday
  • createtime:"last week"
  • createtime:today
  • createtime 修飾子または updatetime 修飾子内では、自然言語の日付フレーズはサポートされていません。
  • 相対日付構文(-1d-7d)または明示的な日付を使用します。

ラベルフィルタ

labels 述語を使用して、関連付けられたラベルでリソースをフィルタします。ラベルキー、ラベル値、またはその両方でフィルタできます。

クエリパターン 説明
labels=KEY labels=environment 値に関係なく、キーが environment のラベルを持つリソースと一致します。
labels:KEY_SUBSTRING labels:tier tier を部分文字列として含むラベルキー(service_tierstorage_tier など)を持つリソースと一致させます。
labels.KEY=VALUE labels.env=prod ラベルキーが env で、値が prod に完全に一致するリソースと一致します。
labels.KEY:VALUE_SUBSTRING labels.owner:analytics ラベルキー owner を持つリソースを照合します。値には部分文字列として analyticsanalytics-teamdata-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=prodconfidentiality=high のラベルが付いた BigQuery テーブルと一致します。

クエリ構文を使用して、付加されたアスペクトに基づいてエントリを検索できます。

部分文字列一致では、制限された数のアスペクトとの一致が試行されます。パスの一部を使用してエントリが見つからない場合は、完全パスを使用して検索を絞り込み、レコードの回収率を高めます。

限定子 説明
aspect:x
または
has:x
エントリに関連付けられているアスペクトのアスペクト タイプの完全パスの部分文字列として x と一致させます(projectid.location.ASPECT_TYPE_ID 形式)。
aspect=x
または
has=x
エントリに関連付けられているアスペクトのアスペクト タイプの完全パスとして x と一致させます(projectid.location.ASPECT_TYPE_ID 形式)。
x
OPERATOR
value

アスペクト フィールドの値を検索します。エントリに関連付けられているアスペクトのアスペクト タイプとフィールド名の完全パスの部分文字列として次の形式で x と一致させます。

  • システム アスペクト タイプの構文:

    • ASPECT_TYPE_ID.FIELD_NAME
    • dataplex-types.ASPECT_TYPE_ID.FIELD_NAME
    • dataplex-types.LOCATION.ASPECT_TYPE_ID.FIELD_NAME

    たとえば、次のクエリは、bigquery-dataset アスペクトの type フィールドの値が default であるエントリに一致します。

    • bigquery-dataset.type=default
    • dataplex-types.bigquery-dataset.type=default
    • dataplex-types.global.bigquery-dataset.type=default
  • カスタム アスペクト タイプの構文:

    • アスペクトがグローバル リージョンに作成されている場合: PROJECT_ID.ASPECT_TYPE_ID.FIELD_NAME
    • アスペクトが特定のリージョンに作成されている場合: PROJECT_ID.REGION.ASPECT_TYPE_ID.FIELD_NAME

    たとえば、次のクエリは、employee-info アスペクトの is-enrolled フィールドの値が true であるエントリに一致します。

    • example-project.us-central1.employee-info.is-enrolled=true
    • example-project.employee-info.is-enrolled=true

    サポートされる演算子のリストは、次のようにアスペクト内のフィールドのタイプによって異なります。

    • 文字列: =(完全一致)
    • すべての数値タイプ: =:<><=>==>=<
    • 列挙型: =
    • 日時: 数値の場合と同じですが、比較する値は数値ではなく日時として扱われます。
    • ブール値: =

検索できるのは、アスペクトの最上位フィールドのみです。

論理演算子

クエリでは、論理演算子を使用して複数の述語を組み合わせることができます。注: 論理演算子 ANDORNOT では大文字と小文字が区別されます。大文字で記述する必要があります。

AND 演算子

複数の検索語句または述語をスペースで区切ると、論理 AND が暗黙的に指定されるため、明示的に記述する必要はありません。

次の例は、AND 演算子を使用してクエリを作成する方法を示しています。

  • BigQuery テーブルを検索する

    system=bigquery type=table
    
  • customer_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_maskedtransactions_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-raw
    
  • AND を使用して述語キーをグループ化する(,

    • ,)を使用して、指定されたすべての列を含むエントリを検索する
    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)

次のステップ