

# 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 Data Quality は、データフレームへの入力に使用される特定のフォルダまたはファイルを見つけることができます。

**注記**  
 この機能は、ファイルが 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 Transform を実行する必要があります。

1.  このルールは AWS Glue インタラクティブセッションでは機能しません。