

# FileUniqueness


 文件唯一性可以确保从数据创建器收到的数据中没有重复文件。

 其收集以下数据统计信息：

1.  规则扫描的文件数 

1.  文件的唯一性比率 

```
Dataset.*.FileUniquenessRatio: 1.00, Dataset.*.FileCount: 8.00
```

 **查找文件夹中的重复文件：**

```
FileUniqueness "s3://bucket/" > 0.5
FileUniqueness "s3://bucket/folder/" = 1
```

 **直接从数据帧推断文件夹名称以检测重复项：**

 您不必总是提供文件路径。例如，当您在 Amazon Glue Data Catalog 中编写规则时，可能很难找到目录表使用的文件夹。AmazonGlue 数据质量自动监测功能可以找到用于填充数据帧的特定文件夹或文件。

**注意**  
 使用推理时，基于文件的规则只能检测成功读取到 DynamicFrame 或 DataFrame 的文件。

```
FileUniqueness > 0.5
```

 **可选的基于文件的规则标签：**

 通过标签，您可以控制规则行为。

 **recentFiles** 

 此标签通过将最新文件放在最前面，来限制处理的文件数。

```
FileUniqueness "s3://amzn-s3-demo-bucket/" > 0.5 with recentFiles = 1
```

 **uriRegex** 

**注意**  
 `uriRegex` 标签在 Amazon Glue 5.0 及更高版本中可用。

 此标签通过对文件路径应用正则表达式模式来筛选文件。只有路径与该模式匹配的文件才会被处理。您也可以使用负向先行断言来排除与某个模式匹配的文件。

```
# Match only files with a .csv extension
FileUniqueness "s3://bucket/" > 0.5 with uriRegex = "\.csv$"
# Exclude files ending in .tmp using a negative lookahead
FileUniqueness "s3://bucket/" > 0.5 with uriRegex = "(?!.*\.tmp$).*"
```

 **filterOrder** 

**注意**  
 `filterOrder` 标签在 Amazon Glue 5.0 及更高版本中可用。

 当您同时使用多个筛选标签（例如 `recentFiles` 和 `uriRegex`）时，`filterOrder` 标签用来控制这些标签的应用顺序。默认顺序为首先应用 `recentFiles`，然后应用 `uriRegex`。

```
FileUniqueness "s3://bucket/" > 0.5 with recentFiles = 5 with uriRegex = "\.csv$" with filterOrder = ["uriRegex","recentFiles"]
```

 **matchFileName** 

 此标签可确保文件没有重复的名称。默认行为是 false。

```
FileUniqueness "s3://amzn-s3-demo-bucket/" > 0.5 with matchFileName = "true"
```

 有几个注意事项：

1.  在 Amazon Glue ETL 中，您必须在 Amazon S3 或 Amazon Glue Data Catalog 转换之后立即进行 **EvaluateDataQuality** 转换。

1.  此规则在 Amazon Glue 交互式会话中不起作用。