

# FileSize
<a name="dqdl-rule-types-FileSize"></a>

 FileSize 规则类型允许您确保文件符合特定的文件大小标准。这在以下用例中非常有用：

1.  确保创建器不会发送空文件或小得多的文件进行处理。

1.  确保您的目标存储桶中没有可能导致性能的问题较小文件。

 FileSize 会收集以下指标：

1.  合规性：返回符合您设定的规则阈值的文件百分比 

1.  文件计数：规则扫描的文件数 

1.  最小文件大小（字节） 

1.  最大文件大小（字节） 

```
Dataset.*.FileSize.Compliance: 1.00, 
Dataset.*.FileCount: 8.00, 
Dataset.*.MaximumFileSize: 327413121.00, 
Dataset.*.MinimumFileSize: 204558920.00
```

 这些指标不支持异常检测。

 **验证文件大小** 

 如果 file.dat 大于 2 MB，则此规则将通过。

```
FileSize "s3://amzn-s3-demo-bucket/file.dat" > 2 MB
```

 支持的单位包括 B（字节）、MB（兆字节）、GB（千兆字节）和 TB（太字节）。

 **验证文件夹中文件的大小** 

```
FileSize "s3://bucket/" > 5 B
FileSize "s3://bucket/" < 2 GB
```

 如果 s3://amzn-s3-demo-bucket 中有 70% 的文件大小在 2 GB 到 1 TB 之间，则此规则将通过。

```
FileSize "s3://amzn-s3-demo-bucket/" between 2 GB and 1 TB  with threshold > 0.7
```

 **直接从数据帧推断文件名** 

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

**注意**  
 仅当文件成功读取到 DynamicFrame 或 DataFrame 时，此功能才起作用。

```
FileSize < 10 MB with threshold > 0.7
```

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

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

 **recentFiles** 

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

```
FileSize "s3://amzn-s3-demo-bucket/" > 5 B with recentFiles = 1
```

 **uriRegex** 

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

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

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

 **filterOrder** 

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

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

```
FileSize "s3://bucket/" > 5 B with recentFiles = 5 with uriRegex = "\.dat$" with filterOrder = ["uriRegex","recentFiles"]
```

 **failFast** 

 如果设置为 `"true"`，则该规则会在遇到第一个不符合大小条件的文件时立即返回失败，而不会评估所有文件并计算合规率。

```
FileSize "s3://bucket/" > 2 MB with failFast = "true"
```

 有几个注意事项：

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

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