

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

通过评估当前时间和日期列值之间的差异，来检查列中数据的新鲜度。您可以为此规则类型指定基于时间的表达式，以确保列值是最新的。

**语法**

```
DataFreshness <COL_NAME> <EXPRESSION>
```
+ **COL\$1NAME** — 要根据其评估数据质量规则的列的名称。

  **支持的列类型**：日期 
+ **EXPRESSION** — 以小时或天为单位的数字表达式。必须在表达式中指定时间单位。

**示例：数据新鲜度**

以下示例规则检查数据的新鲜度。

```
DataFreshness "Order_Date" <= 24 hours
DataFreshness "Order_Date" between 2 days and 5 days
```

**零值行为**

 对于含有 `NULL` 值的行，将不能通过 `DataFreshness` 规则。如果由于零值而导致不能通过规则，则失效原因将显示如下：

```
80.00 % of rows passed the threshold
```

 其中 20% 未通过该规则的行包含带 `NULL` 的行。

 以下示例复合规则提供了一种显式允许 `NULL` 值的方法：

```
(DataFreshness "Order_Date" <= 24 hours) OR (ColumnValues "Order_Date" = NULL)
```

**Amazon S3 对象的数据新鲜度**

 有时，您需要根据 Amazon S3 文件的创建时间来验证数据的新鲜度。为此，您可以使用以下代码获取时间戳并将其添加到您的数据框中，然后应用数据新鲜度检查。

```
df = glueContext.create_data_frame.from_catalog(database = "default", table_name = "mytable")
df = df.withColumn("file_ts", df["_metadata.file_modification_time"])

Rules = [
 DataFreshness "file_ts" < 24 hours 
]
```