This document describes the syntax for Data Catalog search queries. Before you read this document, it is important that you understand the concepts of Data Catalog such as data entry, tags and tag templates, and other kinds of metadata. See What is Data Catalog?.
To launch a Data Catalog search query in the Google Cloud console, go to the Data Catalog Search page and select Data Catalog as the search mode.
Simple search
In its simplest form, a Data Catalog search query comprises a single predicate. Such a predicate can match several pieces of metadata:
- A substring of a name, display name, or description of a data asset
- Exact type of a data asset
- A substring of a column name (or nested column name) in the schema of a data asset
- A substring of a project ID
- The value of a public tag, the name of a public tag template, or a field name in a public tag template attached to a data entry.
- (Preview) A string for an email address or name for a data steward
- (Preview) A string from an overview description
The simple search does not support tag template fields of type datetime.
For example, the predicate foo matches the following entities:
- Data asset with the foo.barname
- Data asset with the Foo Bardisplay name
- Data asset with the description This is the foo script.
- Data asset with the exact footype
- Column foo_barin the schema of a data asset
- Nested column foo_barin the schema of a data asset
- Project prod-foo-bar
- Public tag template named foo, data entries tagged with thefootag template, tag template display name offoo, tag template field name offoo, and tag field value offooin a string, enum, or rich text.
- (Preview) Data asset with a data steward called foo.
- (Preview) Data asset with an overview containing the word foo.
To know more about the roles and permissions to view public and private tags, see Roles to view public and private tags.
Qualified predicates
You can qualify a predicate by prefixing it with a key that restricts the matching to a specific piece of metadata.
An equal sign (=) restricts the search to an exact match.
A colon (:) after the key matches the predicate to either a substring or token within
the value in search results.
Tokenization breaks the stream of text up into a series of tokens, with each token usually corresponding to a single word.
For example:
- name:fooselects entities with names that contain the- foosubstring:- foo1and- barfoo.
- description:fooselects entities with the- footoken in the description:- bar and foo.
- location=foomatches all data assets in a specified location with- fooas the location name.
Data Catalog supports the following qualifiers:
| Qualifier | Description | 
|---|---|
| name:x | Matches xas a substring of the data asset ID. | 
| displayname:x | Match xas a substring of the data asset display name. | 
| column:x | Matches xas a substring of the column name (or nested column name) in the schema of the data asset.You can search for a nested column by its path using the AND logical operator. For example, column:(foo bar)matches a nested column with thefoo.barpath. | 
| description:x | Matches xas a token in the data asset description. | 
| label:bar | Matches BigQuery data assets that have a label (with some value) and the label key has baras a substring. | 
| label=bar | Matches BigQuery data assets that have a label (with some value) and the label key equals baras a string. | 
| label:bar:x | Matches xas a substring in the value of a label with keybarattached to a BigQuery data asset. | 
| label=foo:bar | Matches BigQuery data assets where the key equals fooand the key value equalsbar. | 
| label.foo=bar | Matches BigQuery data assets where the key equals fooand the key value equalsbar. | 
| label.foo | Matches BigQuery data assets that have a label whose key equals fooas a string. | 
| type=<type> | Matches data assets of a specific object type or subtype. Subtypes can be added with the format <type>.<sub-type>.Types and subtypes include: 
 | 
| projectid:bar | Matches data assets within Cloud projects that match baras a substring in the ID. | 
| parent:x | Matches xas a substring of the hierarchical path of a BigQuery data asset. The path has the format<project_id>.<dataset_name>.For example, parent:foo.barmatches all tables and views of a dataset with the pathproject-foo.bar-dataset. | 
| orgid=number | Matches data assets within a Cloud organization with the exact ID value of number. | 
| system=<system> | Matches all data assets from a specified system. Systems include: 
 | 
| location=<location> | Matches all data assets in a specified location with an exact name. For example, location=us-central1matches all assets hosted in Iowa.For a full list of supported locations, see Data Catalog regions. | 
| cluster_location=<location> | Matches all Bigtable data assets in a specified location with an exact name. For example, cluster_location=us-central1matches all assets hosted in Iowa.For a full list of supported locations, see Bigtable regions. | 
| tag:x | Matches data assets where xmatches any substring in <tag_template_project_id>.<tag_template_id>.<tag_field_id> of a private or public tag.Examples: 
 | 
| tag:key<operator>val | First, matches the keyto any substring of the tag field ID, tag template ID, or Google Cloud project ID of a tag template. Then, matchesvalto the tag value of thekeydepending on the tag field type.The type-dependent <operator>sets permitted for tag values are:
 
 | 
| createtime | Finds data assets that were created within, prior to, or after a given date or time. Examples: 
 | 
| updatetime | Finds data assets that were updated within, prior to, or after a given date or time. Examples: 
 | 
| policytag:x | Match xas a substring of the policy tag display name. Finds all assets using matching policy tag or its descendants. | 
| policytagid=x | Matches xas a policy tag or taxonomy ID. Finds all assets using matching policy tag or its descendants. | 
| term:x | Matches data assets connected to a business glossary term where a substring of name, description, or data steward matches x. | 
| fully_qualified_name:x | Matches xas a substring offully_qualified_name. | 
| fully_qualified_name=x | Matches xasfully_qualified_name. | 
Logical operators
A query can be comprised of several
predicates with logical operators. If you don't specify an operator, logical
AND is implied. For example, foo bar returns entities that match both
predicate foo and predicate bar.
Logical AND and logical OR are supported, for example, foo OR bar.
You can negate a predicate with a - or NOT prefix. For example, -name:foo returns
all entities with names that don't match the predicate foo.
Abbreviated syntax
An abbreviated search syntax is also available, using | for OR operators and
, for AND operators.
For example, to search for entries inside one of many projects using the OR
operator, you can use:
projectid:(pid1|pid2|pid3|pid4)
Instead of:
projectid:pid1 OR projectid:pid2 OR projectid:pid3 OR projectid:pid4
To search for entries with matching column names:
- AND: column:(name1, name2, name3)
- OR: column:(name1|name2|name3)
This abbreviated syntax works for the qualified
predicates listed earlier, except for tag, term,
policytag, policytagid and label.