借助 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):按 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=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 中的元数据管理。
- 了解如何使用切面通过元数据丰富条目和条目链接。
- 了解如何管理条目和注入自定义来源。