透過 Knowledge Catalog,您可以探索、集中編目、管理及瞭解貴機構的資料。如要有效率地在資料目錄中找出特定資料資產,可以使用功能強大的搜尋查詢。搜尋查詢的語法包括:
- 簡易搜尋:使用單一搜尋字詞尋找資料資產。
- 任意文字搜尋:使用自然語言片語或關鍵字尋找資料資產。
- 限定述詞:使用特定中繼資料欄位 (例如名稱、位置、系統或類型) 縮小搜尋範圍。
- 切面搜尋:根據附加的業務和技術中繼資料搜尋項目。
- 邏輯運算子:使用
AND、OR或NOT運算子結合多個搜尋條件,建立複雜的查詢。瞭解這項語法後,您就能快速找到所需資料。
限定述詞
使用限定述詞,明確指示搜尋評估特定中繼資料欄位 (例如資產名稱、類型或系統),縮小搜尋結果範圍。
您可以限定述詞,方法是在述詞前面加上一個鍵,藉此將比對作業限制於中繼資料的特定部分:
- 等號 (
=):將搜尋範圍限制在完全相符的結果。 - 在鍵後方加上半形冒號 (
:),即可將述詞比對至搜尋結果值中的子字串或權杖。
斷詞會將一段文字拆解為一連串符記,一個符記通常會對應至一個字詞。
例如:
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 |
比對 Google Cloud 專案中的資源,這些專案的 ID 包含 bar 做為子字串。 |
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):依格林威治標準時間/世界標準時間的特定日期篩選。 - 完整時間戳記 (
YYYY-MM-DDTHH:MM:SS或YYYY-MM-DDTHH:MM:SSZ):依格林威治標準時間/世界標準時間的精確時間戳記篩選。系統也支援部分時間戳記,例如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=table在專案
banking-prod中搜尋名為「customer_id」的資料欄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-raw使用
AND(,) 將群組述詞鍵分組。- 使用 (
,) 搜尋包含所有指定資料欄的項目
column:(customer_id, order_date, total_amount)- 使用 (
AND) 搜尋包含所有指定資料欄的項目
column:customer_id AND column:order_date AND column:total_amount- 使用 (
混合搜尋
您可以將自然語言查詢與精簡篩選器結合使用。
舉例來說,如要尋找指定每月活躍使用者的資料表,但將搜尋範圍限制在指定專案,請使用下列查詢:
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 中的中繼資料管理功能。
- 瞭解如何使用層面,透過中繼資料擴充項目和項目連結。
- 瞭解如何管理項目及擷取自訂來源。