我想对 AWS Glue 数据质量自动监测功能规则和规则集的问题进行故障排除。
解决方法
在 AWS Glue 数据质量自动监测功能规则和规则集方面,您可能会遇到以下问题:
- 您的按键映射不适合数据帧。
- 您设置的值不符合约束要求。
- 列验证规则中有不正确的正则表达式。
- 您的 AWS Glue 数据质量自动监测功能作业执行缓慢。
- AWS Glue 对象缺少 start_data_quality_rule_recommendation_run 属性。
完成以下与您的问题相对应的操作。
您的按键映射不适合数据帧
在运行 DatasetMatch 规则时,您会收到以下错误消息:
“Provided Key Map Not Suitable for Given DataFrames”(提供的按键映射不适合给定的数据帧)
要解决此错误,请执行以下操作:
- 验证主数据集和参考数据集中的联接键是否是唯一的。联接键必须是不包含重复项的主键。
- 验证键列是否不包含 NULL 值。
- (可选)使用包含干净键列的其他数据集。
在以下示例 DatasetMatch 规则中,example_a 和 example_b 必须仅包含不是 NULL 的唯一值:
Rules = [
DatasetMatch "reference" "example_a,example_b" = 1
]
您设置的值不符合约束要求
运行数据质量检查时,您会收到以下错误消息:
“Value does not meet constraint requirement”(值不符合约束要求)
要解决此错误,请执行以下操作:
- 检查您的规则配置,并验证列值的约束条件是否与数据的特征相匹配。例如,如果您检查数据的唯一性,请确保该列中没有重复值。
- 确保您检查的数据遵循规则指定的格式。
- 清理数据集,使其符合规则规定的约束条件。
在以下示例 DatasetMatch 规则中,example_a 必须仅包含不是 NULL 的唯一值:
Rules = [
DatasetMatch "reference" "example_a,example_a" = 1
]
列验证规则中有不正确的正则表达式
使用 ColumnValues 规则验证列格式时,请遵循以下最佳实践:
-
使用与您的数据格式相匹配的正则表达式。以下示例规则匹配格式为 yyyy-mm-dd 和 yyyy/mm/dd 的日期:
Rules = \[
ColumnValues "test\_date" matches "^(19|20)\\d\\d\[- /.\](0\[1-9\]|1\[012\])\[- /.\](0\[1-9\]|\[12\]\[0-9\]|3\[01\])"
\]
但是,以下示例规则仅匹配格式为 yyyy-mm-dd 的日期:
Rules = [
ColumnValues "test_date" matches "^(19|20)\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])"
]
-
在应用正则表达式之前,请使用在线工具或 Python 库对照样本数据测试您的正则表达式。
-
确保您的正则表达式与预期的列格式相匹配。调整模式,使模式包含多种格式。
您的 AWS Glue 数据质量自动监测功能作业执行缓慢
如果您在运行 AWS Glue 数据质量自动监测功能作业时遇到性能下降的情况,请采取以下措施:
AWS Glue 对象缺少 'start_data_quality_rule_recommendation_run'" 属性
您会收到以下错误消息:
"AttributeError: 'Glue' object has no attribute "start_data_quality_rule_recommendation_run""
如果您的 AWS Glue 对象不具有 start_data_quality_rule_recommendation_run 属性,请将以下键值对添加到作业的参数中:
Key: —additional-python-modules
Value: boto3==1.28.26
相关信息
How do I create AWS Glue Data Quality rules and optimize their performance?