本文档介绍了如何重复使用 Knowledge Catalog(以前称为 Dataplex Universal Catalog)数据质量规则来定义和管理标准化业务规则。
借助规则可重用性,您可以使用规则模板在多个数据质量规则和扫描之间共享复杂或标准化的业务规则定义。本文档还介绍了如何设置、创建和管理可重复使用的规则模板,以及如何将数据质量规则作为元数据切面附加到目录条目。
使用场景
您可以在以下场景中使用数据质量规则可重用性:
- 标准化和共享规则定义:使用自定义规则模板存储复杂或标准化的业务规则定义。这可以通过使用模板化的 SQL 表达式来减少分发常见定义所需的时间和精力。例如,中央数据治理团队可以定义一个标准 有效电子邮件或 有效 SSN 模板,该模板可在整个组织中重复使用,从而确保一致性并减少管理重复规则的运营开销。
- 实现治理驱动的质量:通过在 BigQuery 表和业务术语库术语条目中使用 Knowledge Catalog 切面,将 数据规则声明为元数据。这使得您的规则可搜索和可重复使用。例如,当您将列链接到术语库术语时,该列可以自动继承为该术语定义的验证规则,从而通过语义元数据继承实现自动化治理政策。
- 搜索和发现可重复使用的规则:通过语义搜索在组织内查找现有规则。这使得数据分析师和工程师能够发现经过验证的标准化规则集(例如“基准财务常量”),并为新项目引导数据质量,而无需从头编写 SQL。
- 消除冷启动问题:利用 系统规则模板进行常用评估,例如 null 检查或范围预期。借助这些内置模板,您可以快速为常见场景设置数据质量监控,而无需编写自定义 SQL。
- 实现关注点分离:允许中央治理团队编写经过验证的规则模板,而工程团队则专注于将这些规则应用于其数据资产,而无需编写或维护复杂的 SQL。这种明确的职责划分提高了组织的敏捷性,并确保在整个企业中一致应用数据质量标准。
准备工作
-
启用 Dataplex API。
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予角色。
在使用数据质量规则可重用性之前,请确保您已完成以下要求。
设置 Dataplex API 环境
如需使用本文档中的 REST API 示例,请为 gcurl 设置别名,并配置 ${DATAPLEX_API} 环境变量。
设置
gcurl的别名。这会创建一个快捷方式,其中包含您的身份验证令牌,并为 API 请求设置 JSON 内容类型:alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'设置
DATAPLEX_API变量:DATAPLEX_API="dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION"
替换以下内容:
PROJECT_ID:您的项目 ID。LOCATION:扫描或资源所在的位置(例如,us-central1)。
设置服务帐号
必须使用服务帐号才能运行具有可重复使用规则的数据质量扫描。 创建服务账号,该账号具有 以下 Identity and Access Management 角色和权限:
- 您必须对托管服务帐号的项目拥有
iam.serviceAccounts.actAs权限(通常通过使用roles/iam.serviceAccountUser角色)。 - 为扫描项目的 Dataplex Service Agent (
service-PROJECT_ID@gcp-sa-dataplex.iam.gserviceaccount.com) 授予对服务帐号的iam.serviceAccounts.getAccessToken权限(例如,通过使用roles/iam.serviceAccountTokenCreator角色)。 - 该服务帐号必须具有以下权限:
- 对要扫描的表的
bigquery.tables.getData权限(例如,通过使用roles/bigquery.dataViewer)。 - 扫描项目中的
bigquery.jobs.insert权限(例如,通过使用roles/bigquery.jobUser)。 - 对导出数据集的
roles/bigquery.dataEditor权限(如果使用导出)。
- 对要扫描的表的
所需的角色和权限
确保您拥有以下 IAM 角色,以执行特定任务:
- 数据扫描管理:管理数据扫描资源所需的数据扫描角色 。
- 规则模板管理:如需创建或更新规则模板,您必须
拥有在规则模板的
条目组或项目中管理条目的必要权限。具体而言,
roles/dataplex.catalogEditor或roles/dataplex.entryOwner授予这些权限。 - 从规则引用规则模板:您必须对规则引用的规则模板的条目组或
项目拥有
dataplex.entries.get和dataplex.entries.getData权限。 - 将数据质量规则附加到 BigQuery 表:如需将数据
质量规则作为 Knowledge Catalog 元数据附加,您必须拥有
以下权限之一:
- 对表的
bigquery.tables.update或roles/bigquery.dataEditor权限,以及对表位置中的@bigquery条目组的dataplex.entryGroups.useDataRulesAspect权限。 - 对
@bigquery条目组的roles/dataplex.catalogEditor权限。
- 对表的
- 将数据质量规则附加到业务术语库术语:如需将数据
质量规则作为 Knowledge Catalog 元数据附加,您必须拥有以下权限之一:
- 对术语的
dataplex.glossaryTerms.update权限,以及对@dataplex条目组的dataplex.entryGroups.useDataRulesAspect权限。 - 对
@dataplex条目组的roles/dataplex.catalogEditor权限。
- 对术语的
- 使用基于条目的规则创建数据质量扫描:您必须拥有以下权限之一:
- 对表的
bigquery.tables.get和bigquery.tables.getData权限。 dataplex.entries.get和dataplex.entries.getData对表位置中的@bigquery条目组的权限。
- 对表的
规则模板的 SQL 查询语法
为规则模板编写 SQL 逻辑时,您必须提供返回无效行的语句。如果查询返回任何行,则规则失败。如需了解详情,请参阅 SqlAssertion。
请遵循以下准则编写规则模板 SQL:
- 从 SQL 语句中省略末尾的英文分号。
- 使用
${param(name)}引用输入参数,例如${param(min_value)}。 - 使用
$${...}to escape a literal${...}and prevent it from being replaced as a parameter. - Parameter variables are case-sensitive.
System-supported parameters
You can use the following system-supported parameters in your rule template SQL:
${project()}: The project ID of the resource being scanned.${dataset()}: The BigQuery dataset ID of the resource being scanned, formatted asPROJECT_ID.DATASET_ID.${table()}: The BigQuery table ID of the resource being scanned, formatted asPROJECT_ID.DATASET_ID.TABLE_ID.${column()}: The column the rule is evaluated on. An error occurs during rule evaluation if the rule is attached to the table level but references${column()}.${data()}: A reference to the data source table and all of its precondition filters like row filters, sampling percentages, and incremental filters defined in the scan specification. For more information, see Data reference parameter.
Example 1: Validate column values are between two values
The following example validates that all values in a column are between a minimum and maximum value:
SELECT *
FROM ${data()}
WHERE
NOT ((${column()}>=${param(min_value)} AND ${column()}<=${param(max_value)}) IS TRUE)
Note the following:
- Using
NOT(condition) IS TRUEreturns invalid rows, including rows withNULLvalues in the column. - Using
${data()}limits the scope of rows evaluated to the source table and its filters, such as row filters, sampling percentages, and incremental filters. - Using
${column()}lets you reference the column that the rule using this template is evaluated on.
Example 2: Foreign key validation
The following example verifies that each value in a column exists in a primary key column of another table:
SELECT t.*
FROM ${data()} AS t
LEFT JOIN `${param(reference_table)}` AS s
ON t.${column()} = s.`${param(reference_column)}`
WHERE s.`${param(reference_column)}` IS NULL
Input parameters for this template are as follows:
reference_table: The name of the reference table containing the primary keys. Use the formatPROJECT_ID.DATASET_ID.TABLE_ID.reference_column: The name of the primary key column in the reference table.
System rule templates
Knowledge Catalog provides system rule templates that can be used in any
region. Knowledge Catalog manages these templates in the
dataplex-templates project under the rule-library entry group. An example of
a full resource name is
projects/dataplex-templates/locations/global/entryGroups/rule-library/entries/non_null_expectation.
To view the list of all the available system rule templates, see System rule templates list.
To find the available list of system rule templates, select one of the following options:
Console
In the Google Cloud console, go to the Data profiling & quality page.
Click Rule libraries > System.
To see the list of available system rule templates, click rule-library.
When creating a new rule, you can select the system rule templates in the Choose rule types menu.
REST
To find the available list of system rule templates, use the
entries.list method:
gcurl "https://dataplex.googleapis.com/v1/projects/dataplex-templates/locations/global/entryGroups/rule-library/entries"
Known differences between system rule templates and built-in rules
The following table describes the differences between system rule templates and built-in rules:
| Feature | System rule templates | Built-in rules |
|---|---|---|
| Source | Reusable templates in the catalog | Built-in in the API |
| Referencing | Can be referenced by catalog entries and scans | Can only be used in scans |
The following list describes additional differences in how metrics are calculated for system rule templates:
- Assertion Row Count metric: This metric is populated for all template reference rules, not just SQL assertion rules.
- Statistic Range Expectation rule template: Rule metrics from evaluation
of rules referencing this template wouldn't contain the
nullCountmetric. Because it is an aggregate rule, theignore nullcapability isn't supported, and rule success is determined by the aggregate statistic being within the defined range. Uniqueness Expectation rule template: This template calculates
passedCountdifferently than the built-inUniquenessExpectationrule. The rule template returns all rows for which duplicate values or null rows exist, which can result in fewer passing rows if duplicates are present.For example, if a column contains the values
(a, a, b, b, c, d, e):- Built-in uniqueness rule: Returns 5 passing rows:
(a, b, c, d, e). - Uniqueness rule template: Returns 4 failing rows:
(a, a, b, b). The number of passing rows is 3 (7 total rows minus 4 failed rows):(c, d, e).
- Built-in uniqueness rule: Returns 5 passing rows:
Metadata aspects
This section describes the fields and values for the data-rules and
data-quality-rule-template aspect types.
data-rules aspect fields
To define data rules, use the dataplex-types.global.data-rules aspect. The following table describes the fields for this aspect.
| Field | Type | Description |
|---|---|---|
rules |
Array | Required. A list of data quality rules. |
rules[].name |
String | Required. A name for the rule. |
rules[].dimension |
String | Optional. The data quality dimension for the rule. |
rules[].description |
String | Optional. The description of the rule. |
rules[].suspended |
Boolean | Optional. Whether the rule is active or suspended. Default is false. |
rules[].threshold |
Double | Optional. The passing threshold for the rule, from 0.0 to 1.0. Default is 1.0. |
rules[].type |
Enum | Required. The type of the rule. The only supported value is TEMPLATE_REFERENCE. |
rules[].ignore_null |
Boolean | Optional. If true, rows with null values in the column are ignored when determining the success criteria. |
rules[].attributes |
Map | Optional. Custom key-value pairs associated with the rule. |
rules[].templateReference |
Object | Required. A reference to the rule template. |
rules[].templateReference.name |
String | Required. The resource name of the rule template. |
rules[].templateReference.values |
Map | Optional. The parameter names and values for the rule template. |
rules[].templateReference.values[].parameterValue.value |
String | Required. The value for the parameter. |
The following example shows a data-rules aspect in a payload.json file:
{
"aspects": {
"dataplex-types.global.data-rules": {
"data": {
"rules": [
{
"name": "valid-email",
"dimension": "VALIDITY",
"type": "TEMPLATE_REFERENCE",
"templateReference": {
"name": "projects/my-project/locations/us-central1/entryGroups/my-rules/entries/email-check",
"values": {
"column_name": {
"value": "email"
}
}
}
}
]
}
}
}
}
data-quality-rule-template aspect fields
Use the data-quality-rule-template aspect to define a custom data quality
rule template. The following table describes the fields for the
dataplex-types.global.data-quality-rule-template aspect.
| Field | Type | Description |
|---|---|---|
dimension |
String | Required. The dimension for the rule template. |
sqlCollection |
Array | Required. A list of SQL queries for the rule template. |
sqlCollection[].sql.query |
String | Required. The SQL query that returns invalid rows. |
inputParameters |
Map | Optional. A map of input parameters for the rule template. |
inputParameters[].parameterDescription.description |
String | Optional. The description of the input parameter. |
inputParameters[].parameterDescription.defaultValue |
String | Optional. The default value for the parameter if no value is provided. |
capabilities |
Array | Optional. A list of template capabilities, such as THRESHOLD or IGNORE_NULL. |
The following example displays the structure of a data-quality-rule-template
aspect:
{
"entryType": "projects/dataplex-types/locations/global/entryTypes/data-quality-rule-template",
"aspects": {
"dataplex-types.global.data-quality-rule-template": {
"data": {
"dimension": "COMPLETENESS",
"sqlCollection": [
{
"query": "SELECT * FROM ${data()} WHERE ${column()} > ${param(p1)}"
}
],
"inputParameters": {
"p1": {
"description": "The parameter description"
}
},
"capabilities": [
"THRESHOLD",
"IGNORE_NULL"
]
}
}
}
}
Manage data quality rule templates
This section describes how to create, edit, and delete rule templates.
Create a rule library
To create a rule library, you must create a Knowledge Catalog entry group.
Console
In the Google Cloud console, go to the Data profiling & quality page.
Go to Rule libraries > Custom, and click Create.
In the Create rule library window, fill in the following fields:
- Optional: Enter a display name.
- In Rule library ID, enter an ID. For more information, see the resource naming conventions.
- Optional: Enter a description.
- In the Location menu, select a location. It can't be changed later.
- Optional: Add labels. Labels are key-value pairs that let you group related objects together or with other Google Cloud resources.
- Click Save.
REST
To create a rule library by using the API, you must create an entry group with
the required label goog-dataplex-entry-group-type: rule_library:
gcurl -X POST "https://${DATAPLEX_API}/entryGroups?entryGroup_id=RULE_LIBRARY_ID" \ --data @- << EOF { "labels": { "goog-dataplex-entry-group-type": "rule_library" }, "description": "DESCRIPTION" } EOF
Replace the following:
RULE_LIBRARY_ID: a unique ID for your rule library.DESCRIPTION: an optional description for the rule library.
Terraform
To create a rule library, use the
google_dataplex_entry_group
resource:
resource "google_dataplex_entry_group" "rule_library" { project = "PROJECT_ID" location = "LOCATION" entry_group_id = "RULE_LIBRARY_ID" description = "DESCRIPTION" labels = { "goog-dataplex-entry-group-type" = "rule_library" } }
Replace the following:
PROJECT_ID: your project ID.LOCATION: the location for your rule library (for example,us-central1).RULE_LIBRARY_ID: a unique ID for your rule library.DESCRIPTION: an optional description for the rule library.
Create a rule template
To create a custom rule template, select one of the following:
Console
In the Google Cloud console, go to the Data profiling & quality page.
Go to Rule libraries > Custom.
Click the rule library where you want to add a template, and then click Create.
In the Create rule template window, fill in the following fields:
- Optional: Enter a name for the template.
- In Template ID, enter an ID. For more information, see the resource naming conventions.
- Optional: Enter a description.
- In the Dimension menu, select a dimension. For more information, see Dimensions.
In the SQL query field, enter the following example query that validates each column value is between two values:
SELECT * FROM ${data()} WHERE NOT(${column()}>=${param(min_value)} AND ${column()}<=${param(max_value)}) IS TRUEOptional: To enable the rule referencing this template to specify a threshold for success criteria, select Support threshold.
Optional: To allow rules referencing this template to ignore null values in the column for determining success criteria, select Support ignore null.
In Input Parameters, click Add input parameter, and then for each parameter used in the SQL query, enter an input name, description, and default value. In the preceding example, the names would be
min_valueandmax_value.Click Save.
REST
To create a custom rule template, create an entry of type
data-quality-rule-template:
gcurl -X POST "https://${DATAPLEX_API}/entryGroups/ENTRY_GROUP_ID/entries?entry_id=TEMPLATE_ID" \ --data @- << EOF { "entryType": "projects/dataplex-types/locations/global/entryTypes/data-quality-rule-template", "entrySource": { "displayName": "DISPLAY_NAME", "description": "DESCRIPTION" }, "aspects": { "dataplex-types.global.data-quality-rule-template": { "data": { "dimension": "VALIDITY", "sqlCollection": [ { "query": "SELECT t.* FROM ${data()} AS t LEFT JOIN `${param(reference_table)}` AS s ON t.${column()} = s.`${param(reference_column)}` WHERE s.`${param(reference_column)}` IS NULL" } ], "inputParameters": { "PARAMETER_NAME": { "description": "PARAMETER_DESCRIPTION" } }, "capabilities": ["THRESHOLD"] } } } } EOF
Replace the following:
ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: a unique ID for your rule template.DISPLAY_NAME: a display name for the rule template.DESCRIPTION: a description of the rule template.PARAMETER_NAME: the name of an input parameter used in the SQL query.PARAMETER_DESCRIPTION: a description of the input parameter.
Terraform
To create a custom rule template, use the
google_dataplex_entry
resource:
resource "google_dataplex_entry" "rule_template" { project = "PROJECT_ID" location = "LOCATION" entry_id = "TEMPLATE_ID" entry_group_id = "ENTRY_GROUP_ID" entry_type = "projects/dataplex-types/locations/global/entryTypes/data-quality-rule-template" entry_source { display_name = "DISPLAY_NAME" description = "DESCRIPTION" } aspects { aspect_key = "dataplex-types.global.data-quality-rule-template" aspect { data = jsonencode({ dimension = "VALIDITY" sqlCollection = [ { query = "SELECT t.* FROM $${data()} AS t LEFT JOIN `$${param(reference_table)}` AS s ON t.$${column()} = s.`$${param(reference_column)}` WHERE s.`$${param(reference_column)}` IS NULL" } ] inputParameters = { "PARAMETER_NAME" = { description = "PARAMETER_DESCRIPTION" } } capabilities = ["THRESHOLD"] }) } } }Replace the following:
PROJECT_ID: your project ID.LOCATION: the location for your rule template (for example,us-central1).ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: a unique ID for your rule template.DISPLAY_NAME: a display name for the rule template.DESCRIPTION: a description of the rule template.PARAMETER_NAME: the name of an input parameter used in the SQL query.PARAMETER_DESCRIPTION: a description of the input parameter.Update a rule template
To update an existing rule template, select one of the following options:
Console
In the Google Cloud console, go to the Data profiling & quality page.
Go to Rule libraries > Custom.
Click the rule library that contains the template you want to update.
In the Rule templates list, click the template that you want to update.
On the rule template details page, click Edit.
Update the fields, and then click Save.
REST
To update a custom rule template, patch the entry or specific aspect:
gcurl -X PATCH "https://${DATAPLEX_API}/entryGroups/ENTRY_GROUP_ID/entries/TEMPLATE_ID?updateMask=aspects" \ --data @- << EOF { "aspects": { "dataplex-types.global.data-quality-rule-template": { "data": { "dimension": "VALIDITY", "sqlCollection": [ { "query": "SELECT * FROM ${data()} WHERE ${column()} IS NOT NULL" } ] } } } } EOFReplace the following:
ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: the ID of the rule template that you want to update.Terraform
To update a custom rule template, use the
google_dataplex_entryresource: resource "google_dataplex_entry" "rule_template" { project = "PROJECT_ID" location = "LOCATION" entry_id = "TEMPLATE_ID" entry_group_id = "ENTRY_GROUP_ID" entry_type = "projects/dataplex-types/locations/global/entryTypes/data-quality-rule-template" aspects { aspect_key = "dataplex-types.global.data-quality-rule-template" aspect { data = jsonencode({ dimension = "VALIDITY" sqlCollection = [ { query = "SELECT * FROM $${data()} WHERE $${column()} IS NOT NULL" } ] }) } } }Replace the following:
PROJECT_ID: your project ID.LOCATION: the location for your rule template (for example,us-central1).ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: the ID of the rule template that you want to update.Delete a rule template
To delete an existing rule template, select one of the following options:
Console
In the Google Cloud console, go to the Data profiling & quality page.
Go to Rule libraries > Custom.
Click the rule library that contains the template you want to delete.
In the Rule templates list, click the template that you want to delete.
Click Delete, and then click Delete again to confirm.
REST
To delete a custom rule template, delete the entry:
gcurl -X DELETE \ "https://${DATAPLEX_API}/entryGroups/ENTRY_GROUP_ID/entries/TEMPLATE_ID"Replace the following:
ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: the ID of the rule template that you want to delete.Create a data quality scan using template rules
Use your custom templates to define rules for a data quality scan.
Console
In the Google Cloud console, go to the Data profiling & quality page.
Follow the steps to create a data quality scan, but update the following:
- In the Define scan window, in the Credential type menu, select Service account, and then enter a service account. A service account is mandatory for using rule templates.
- In the Data quality rules window, define the rules to configure for this data quality scan:
- Click Add rules > Template rules.
- You can either select Attach rule to entire table, or in Choose columns, browse and select the columns to apply rules for.
- In Choose rule templates, select the rule templates to use. Only the rule templates in the same location as the scan or in a global location can be used. Alternatively, you can also select system rule templates from the list.
- Click Ok.
- Click Edit rule, and then add rule specific parameters.
- Click Save.
- Select the rules that you want to add, and then click Select. The rules are now added to your current rules list.
- Optional: Repeat the previous steps to add additional rules to the data quality scan.
- Click Continue.
- Proceed with the remaining scan configuration.
- Click Create to only create the scan, or click Run scan to create and immediately run the scan.
REST
To create a data quality scan that references a rule template, specify the
templateReference. Custom rule templates use project-specific paths, while system rule templates use a global path:projects/dataplex-templates/locations/global/entryGroups/rule-library/entries/<var>SYSTEM_TEMPLATE_ID</var>.The following example creates a scan that uses a custom rule template and includes a filter to selectively run rules:
gcurl -X POST "https://${DATAPLEX_API}/dataScans?data_scan_id=DATASCAN_ID" \ --data @- << EOF { "data": { "resource": "//bigquery.googleapis.com/projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID" }, "executionIdentity": { "serviceAccount": { "email": "SERVICE_ACCOUNT_EMAIL" } }, "executionSpec": { "trigger": { "onDemand": {} } }, "type": "DATA_QUALITY", "dataQualitySpec": { "rules": [ { "templateReference": { "name": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/TEMPLATE_ID", "values": { "PARAMETER_NAME": { "value" : "PARAMETER_VALUE" } } }, "column": "COLUMN_NAME", "name": "RULE_NAME" } ], "filter": "FILTER_CONDITION" } } EOFReplace the following:
PROJECT_ID: your project ID.LOCATION: the location for your rule template and scan (for example,us-central1).DATASCAN_ID: the ID of the data quality scan.BIGQUERY_PROJECT_ID: the project ID of the BigQuery table.DATASET_ID: the BigQuery dataset ID.TABLE_ID: the BigQuery table ID.SERVICE_ACCOUNT_EMAIL: the email ID of the service account to run the scan.ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: the ID of the custom rule template.SYSTEM_TEMPLATE_ID: the ID of the system rule template (for example,non_null_expectation).PARAMETER_NAME: the name of an input parameter for the rule template.PARAMETER_VALUE: the value for the input parameter.COLUMN_NAME: the column to apply the rule to.RULE_NAME: a name for the rule instance.FILTER_CONDITION: an optional AIP-160 filter string to selectively run rules (for example,name = \"RULE_NAME\").Terraform
To create a data quality scan that references a rule template, use the
google_dataplex_datascanresource: resource "google_dataplex_datascan" "scan" { data_scan_id = "DATASCAN_ID" location = "LOCATION" project = "PROJECT_ID" data { resource = "//bigquery.googleapis.com/projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID" } execution_spec { service_account = "SERVICE_ACCOUNT_EMAIL" trigger { on_demand {} } } data_quality_spec { rules { column = "COLUMN_NAME" name = "RULE_NAME" dimension = "VALIDITY" template_reference { name = "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/TEMPLATE_ID" values = { "PARAMETER_NAME" = { value = "PARAMETER_VALUE" } } } } filter = "FILTER_CONDITION" } }Replace the following:
PROJECT_ID: your project ID.LOCATION: the location for your rule template and scan (for example,us-central1).DATASCAN_ID: the ID of the data quality scan.BIGQUERY_PROJECT_ID: the project ID of the BigQuery table.DATASET_ID: the BigQuery dataset ID.TABLE_ID: the BigQuery table ID.SERVICE_ACCOUNT_EMAIL: the email ID of the service account to run the scan.ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: the ID of the custom rule template.PARAMETER_NAME: the name of an input parameter for the rule template.PARAMETER_VALUE: the value for the input parameter.COLUMN_NAME: the column to apply the rule to.RULE_NAME: a name for the rule instance.FILTER_CONDITION: an optional AIP-160 filter string to selectively run rules.Run and monitor data quality scans
After you create a data quality scan, you must run it to validate your data. For more information, see Run a data quality scan.
You can then monitor the scan jobs and view the results. For more information, see View the data quality scan results.
Attach data quality rules to catalog entries
You can declare data quality rules as aspects in Knowledge Catalog to make them searchable and reusable across scans.
BigQuery table
To define rules directly on a BigQuery table entry, select one of the following:
Console
In the Google Cloud console, go to the Knowledge Catalog Search page.
Search for and select the table that you want to attach rules to.
Click Data quality > Rules management > Create rules.
In the Create rules window, do the following:
- In the Choose create option menu, select Create new rule.
- In Choose columns, click Browse. Select the columns to apply rules for.
- In the Choose rule types menu, select the rule templates to use. Only the rule templates in the same location as the scan can be used.
- Click Edit rule, and then add rule specific parameters.
Click Save.
The Rules management page displays all entry rules.
REST
To attach rules to a specific column using the API, patch the
@bigqueryentry with adata-rulesaspect targeted to that column: gcurl -X PATCH "https://${DATAPLEX_API}/entryGroups/@bigquery/entries/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/tables/TABLE_ID?updateMask=aspects&aspect_keys=projects/dataplex-types/locations/global/aspectTypes/data-rules@Schema.COLUMN_NAME" \ --data @- << EOF { "aspects": { "dataplex-types.global.data-rules@Schema.COLUMN_NAME": { "aspectType": "projects/dataplex-types/locations/global/aspectTypes/data-rules", "data": { "rules": [ { "templateReference": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/TEMPLATE_ID", "column": "COLUMN_NAME", "values": { "PARAMETER_NAME": { "value" : "PARAMETER_VALUE" } } } ] } } } } EOFReplace the following:
PROJECT_ID: your project ID.LOCATION: the location for your rule template and aspect.DATASET_ID: the BigQuery dataset ID.TABLE_ID: the BigQuery table ID.COLUMN_NAME: the column to apply the rule to.ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: the ID of the rule template.PARAMETER_NAME: the name of an input parameter for the rule template.PARAMETER_VALUE: the value for the input parameter.Terraform
To attach rules to a specific column, use the
google_dataplex_entryresource: resource "google_dataplex_entry" "bq_table_metadata" { project = "PROJECT_ID" location = "LOCATION" entry_id = "bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID" entry_group_id = "@bigquery" aspects { aspect_key = "dataplex-types.global.data-rules@Schema.COLUMN_NAME" aspect { data = jsonencode({ rules = [ { name = "RULE_NAME" dimension = "VALIDITY" templateReference = "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/TEMPLATE_ID" values = { "PARAMETER_NAME" = { value = "PARAMETER_VALUE" } } } ] }) } } }Replace the following:
PROJECT_ID: your project ID.LOCATION: the location for your rule template and aspect.DATASET_ID: the BigQuery dataset ID.TABLE_ID: the BigQuery table ID.COLUMN_NAME: the column to apply the rule to.ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: the ID of the rule template.PARAMETER_NAME: the name of an input parameter for the rule template.PARAMETER_VALUE: the value for the input parameter.RULE_NAME: a unique name for the rule.Business glossary terms
You can attach rules to business glossary terms. Rules attached to terms are automatically inherited by linked BigQuery tables.
Console
In the Google Cloud console, go to the Knowledge Catalog Glossaries page.
Search for and select the business glossary term.
In the Data quality rules section, click Add.
In the Create rules window, do the following:
- In the Choose create option menu, select Create new rule.
- In the Choose rule types menu, select the rule templates to use. Only the rule templates in the same location as the scan can be used.
- Click Edit rule, and then add rule specific parameters.
- Click Save.
Attach the term to a BigQuery table or columns. For more information, see Manage links between terms and data assets.
REST
To attach rules to a term using the API, patch the
@dataplexentry for the glossary term: gcurl -X PATCH "https://${DATAPLEX_API}/entryGroups/@dataplex/entries/projects/PROJECT_ID/locations/LOCATION/glossaries/GLOSSARY_ID/terms/TERM_ID?updateMask=aspects&aspect_keys=projects/dataplex-types/locations/global/aspectTypes/data-rules" \ --data @- << EOF { "aspects": { "dataplex-types.global.data-rules": { "aspectType": "projects/dataplex-types/locations/global/aspectTypes/data-rules", "data": { "rules": [ { "templateReference": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/TEMPLATE_ID", "column": "COLUMN_NAME", "values": { "PARAMETER_NAME": { "value" : "PARAMETER_VALUE" } } } ] } } } } EOFReplace the following:
PROJECT_ID: your project ID.LOCATION: the location for your rule template and aspect.GLOSSARY_ID: the ID of the business glossary.TERM_ID: the ID of the glossary term.ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: the ID of the rule template.COLUMN_NAME: the column to apply the rule to.PARAMETER_NAME: the name of an input parameter for the rule template.PARAMETER_VALUE: the value for the input parameter.Terraform
To attach rules to a business glossary term, use the
google_dataplex_entryresource: resource "google_dataplex_entry" "glossary_term_rules" { project = "PROJECT_ID" location = "LOCATION" entry_id = "projects/PROJECT_ID/locations/LOCATION/glossaries/GLOSSARY_ID/terms/TERM_ID" entry_group_id = "@dataplex" aspects { aspect_key = "dataplex-types.global.data-rules" aspect { data = jsonencode({ rules = [ { name = "RULE_NAME" dimension = "VALIDITY" templateReference = "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/TEMPLATE_ID" values = { "PARAMETER_NAME" = { value = "PARAMETER_VALUE" } } } ] }) } } }Replace the following:
PROJECT_ID: your project ID.LOCATION: the location for your rule template and aspect.GLOSSARY_ID: the ID of the business glossary.TERM_ID: the ID of the glossary term.ENTRY_GROUP_ID: the ID of the entry group that stores your rule template.TEMPLATE_ID: the ID of the rule template.PARAMETER_NAME: the name of an input parameter for the rule template.PARAMETER_VALUE: the value for the input parameter.RULE_NAME: a unique name for the rule.Import rules from another table
You can import data quality rules from an existing BigQuery table entry to your current table.
Console
In the Google Cloud console, go to the Knowledge Catalog Search page.
Select the table you want to manage rules for.
Click Data quality > Rules management.
Click Create rules.
In the Create rules window, do the following:
- In the Choose create option menu, select Import rules from another table.
- In Table, click Browse. Search for and select the source table containing the rules that you want to copy.
- Select the rules. You can also edit the rules.
Click Save.
The Rules management tab displays the new rules.
REST
To import rules, you must fetch the
data-rulesaspect from the source entry and apply it to the target entry.
Get the
data-rulesaspect from the source entry: gcurl "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/SOURCE_ENTRY_ID?view=FULL"Extract the
ruleslist from thedataplex-types.global.data-rulesaspect.Attach the rules to a target entry.
Replace the following:
PROJECT_ID: your project ID.LOCATION: the location of the source entry.ENTRY_GROUP_ID: the ID of the entry group for the source entry.SOURCE_ENTRY_ID: the ID of the source entry.View data quality rules for BigQuery table
You can view all rules applicable to a table, including rules attached directly and rules inherited from linked glossary terms.
Console
In the Google Cloud console, go to the Knowledge Catalog Search page.
Search for and select the table.
Click Data quality > Rules management to view all rules.
Create a data quality scan using rules from catalog
You can selectively run rules declared on catalog entries in a scan.
Console
In the Google Cloud console, go to the Data profiling & quality page.
Follow the steps to create a data quality scan, but update the following:
- In the Define scan window, do the following:
- In the Credential type menu, select Service account, and then enter a service account. A service account is mandatory for using rule templates.
- For Rule type, select Create with entry based rule.
- In the Data quality rules section, rules applicable to the table entry are displayed, including rules inherited from linked glossary terms. To filter the rules, do the following:
- In the Filter items field, filter items to selectively run rules.
- Click Apply. Filtered rules are displayed.
- Proceed with the remaining scan configuration.
- Click Create to only create the scan, or click Run scan to create and immediately run the scan.
Subsequent runs evaluate rules attached to the entry or inherited from glossary terms as observed at the time of execution.
REST
To run rules from catalog entries, set
enableCatalogBasedRulestotrue. You can also specify a filter.To create the scan, use the following code:
gcurl -X POST "https://${DATAPLEX_API}/dataScans?data_scan_id=DATASCAN_ID" \ --data @- << EOF { "type": "DATA_QUALITY", "data": { "resource": "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID" }, "executionIdentity": { "serviceAccount": { "email": "SERVICE_ACCOUNT_EMAIL" } }, "executionSpec": { "trigger": { "onDemand": {} } }, "dataQualitySpec": { "enableCatalogBasedRules": true, "filter": "FILTER_CONDITION" } } EOFReplace the following:
PROJECT_ID: your project ID.LOCATION: the location for your data scan.DATASCAN_ID: the ID of the data quality scan.DATASET_ID: the BigQuery dataset ID.TABLE_ID: the BigQuery table ID.SERVICE_ACCOUNT_EMAIL: the email ID of the service account to run the scan.FILTER_CONDITION: an AIP-160 filter string to selectively run rules (for example,attributes.environment = \"prod\").Terraform
To run rules from catalog entries, use the
google_dataplex_datascanresource: resource "google_dataplex_datascan" "scan" { data_scan_id = "DATASCAN_ID" location = "LOCATION" project = "PROJECT_ID" data { resource = "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID" } execution_spec { service_account = "SERVICE_ACCOUNT_EMAIL" trigger { on_demand {} } } data_quality_spec { enable_catalog_based_rules = true filter = "FILTER_CONDITION" } }Replace the following:
PROJECT_ID: your project ID.LOCATION: the location for your data scan.DATASCAN_ID: the ID of the data quality scan.DATASET_ID: the BigQuery dataset ID.TABLE_ID: the BigQuery table ID.SERVICE_ACCOUNT_EMAIL: the email ID of the service account to run the scan.FILTER_CONDITION: an AIP-160 filter string to selectively run rules.Pricing
Using Knowledge Catalog rule reusability involves the following pricing elements:
- BigQuery charges: BigQuery charges for the job that runs in the scan project. For more information, see BigQuery pricing.
- Knowledge Catalog data quality scan: There's no charge for processing since BigQuery charges for the job.
- Metadata storage:
data-rulesaspect anddata-quality-rule-templateaspect storage is charged as metadata storage. For more information, see Knowledge Catalog pricing.What's next
- Learn more about auto data quality overview.
- Learn how to use auto data quality scans.
- View a complete list of system rule templates.
- Learn about metadata management.
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2026-04-17。