知识目录的搜索语法

借助 Knowledge Catalog,您可以发现、集中编目、管理和了解组织的数据。如需在数据目录中高效查找特定数据资产,您可以使用强大的搜索查询。搜索查询的语法包括:

  • 简单搜索:使用单个搜索字词查找数据资产。
  • 自由文本搜索:使用自然语言短语或关键字查找数据资产。
  • 限定性谓词:使用名称、位置、系统或类型等特定元数据字段来优化搜索。
  • 切面搜索:根据条目附加的业务元数据和技术元数据搜索条目。
  • 逻辑运算符:使用 ANDORNOT 运算符组合多个搜索条件,以创建复杂的查询。了解此语法后,您便可以快速找到所需的数据。

限定谓词

使用限定谓词,通过明确指示搜索评估特定元数据字段(例如资产名称、类型或系统)来缩小搜索结果范围。

您可以通过在谓词前面添加一个键来限定谓词,该键将匹配限制为特定的一部分元数据:

  • 等号 (=) 可将搜索限制为完全匹配。
  • 键后面的英文冒号 (:) 将谓词与搜索结果的值中的子字符串或词元匹配。

词元化将文本流分解为一系列词元,每个词元通常对应于一个字词。

例如:

  • 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 词元的所有资源。例如,“生产环境”。
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

匹配指定位置中具有确切名称的资源。需要 = 限定符。 例如,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:tabletype:tab
system system=bigquery(或system=spanner system:bigquerysystem:big
location location=us-central1(或location=europe-west1 location:us-central1location: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-DDYYYY/MM/DD:按 GMT/UTC 中的特定日期过滤。
  • 完整时间戳(YYYY-MM-DDTHH:MM:SSYYYY-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-DDYYYY/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
  • createtimeupdatetime 限定符内不支持自然语言日期短语。
  • 使用相对日期语法(-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 且值包含 analytics 作为子字符串(例如 analytics-teamdata-analytics)的资源。
多个标签(AND) labels.env=prod labels.data_tier=tier1 匹配同时附加了 env=proddata_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
    
  • 在项目 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_maskedtransactions_masked
  • 不支持name:*_masked* 被视为字面字符,而不是模式通配符。

括号

搜索查询中的英文圆括号具有特定的技术功能。如果您过度使用圆括号或将其应用于自然语言查询,可能会使搜索解析器感到困惑,从而降低搜索结果质量。

简单自然的语言

提出业务问题时,以纯文本形式传递查询。请勿将其括在英文圆括号中。例如,输入:

Find customer orders containing email addresses

缩写的谓词语法

与谓词键搭配使用时,括号非常有效,可采用紧凑的格式列出多个 ORAND 条件。

  • 使用 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)

后续步骤