

# FileFreshness


 FileFreshness garantiza que sus archivos de datos estén actualizados en función de la condición que proporcione. Utiliza la hora de la última modificación de los archivos para garantizar que los archivos de datos o toda la carpeta estén actualizados. 

 Esta regla recopila dos métricas: 
+ El cumplimiento de FileFreshness se basa en la regla que haya configurado
+ El número de archivos que ha analizado la regla

```
{"Dataset.*.FileFreshness.Compliance":1,"Dataset.*.FileCount":1} 
```

 La detección de anomalías no tiene en cuenta estas métricas. 

 **Cómo comprobar si los archivos están actualizados** 

 La siguiente regla garantiza que tickets.parquet se haya creado en las últimas 24 horas. 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/tickets.parquet" > (now() - 24 hours)
```

 **Cómo comprobar si la carpeta está actualizada** 

 La siguiente regla se aplica si todos los archivos de la carpeta se crearon o modificaron en las últimas 24 horas. 

```
FileFreshness "s3://bucket/" >= (now() -1 days)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" >= (now() - 24 hours)
```

 **Cómo comprobar si una carpeta o un archivo está actualizado (con umbral)** 

 La siguiente regla se aplica si el 10 % de los archivos de la carpeta “tickets” se crearon o modificaron en los últimos 10 días. 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" < (now() - 10 days) with threshold > 0.1
```

 **Cómo comprobar archivos o carpetas con fechas específicas** 

 Puede comprobar si los archivos se actualizaron en días específicos. 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > "2020-01-01"
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "2023-01-01" and "2024-01-01"
```

 **Cómo comprobar archivos o carpetas con fechas y horas** 

 Puede usar FileFreshness para asegurarse de que los archivos lleguen dentro de las horas previstas. 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between now() and (now() - 45 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "9:30 AM" and "9:30 PM"
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > (now() - 10 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > now()
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between (now() - 2 hours) and (now() + 15 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between (now() - 3 days) and (now() + 15 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "2001-02-07" and (now() + 15 minutes)
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > "21:45""
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > "2024-01-01"
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "02:30" and "04:30"
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" between "9:30 AM" and "22:15"
```

 Consideraciones clave: 
+  FileFreshness puede evaluar los archivos utilizando unidades de días, horas y minutos 
+  Es compatible con los formatos de tiempo AM/PM y 24 horas 
+  Los horarios se calculan en UTC, a menos que se especifique una anulación 
+  Las fechas se calculan en UTC a las 00:00 h 

 El análisis de FileFreshness basado en la fecha y la hora funciona de la siguiente manera: 

```
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > "21:45"
```
+  En primer lugar, la hora “21:45” se combina con la fecha de hoy en formato UTC para crear un campo de fecha y hora 
+  A continuación, la fecha y la hora se convierten en la zona horaria que haya especificado 
+  Por último, se evalúa la regla 

 **Etiquetas de reglas opcionales basadas en archivos:** 

 Las etiquetas permiten controlar el comportamiento de las reglas. 

 **recentFiles** 

 Esta etiqueta limita el número de archivos procesados dejando primero el archivo más reciente. 

```
FileFreshness "s3://amzn-s3-demo-bucket/" between (now() - 100 minutes) and (now() + 10 minutes) with recentFiles = 1
```

 **uriRegex** 

**nota**  
 La etiqueta AWS está disponible en `uriRegex` Glue 5.0 y versiones posteriores. 

 Esta etiqueta filtra los archivos mediante la aplicación de un patrón de expresión regular a la ruta del archivo. Solo se procesan los archivos cuyas rutas coinciden con el patrón. También puede usar una anticipación negativa para excluir los archivos que coinciden con un patrón. 

```
# Match only files with a .csv extension
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with uriRegex = "\.csv$"
# Match Parquet files that contain "orders_" in the path
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with uriRegex = ".*orders_.*\.parquet"
# Exclude files ending in .tmp using a negative lookahead
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with uriRegex = "(?!.*\.tmp$).*"
```

 **filterOrder** 

**nota**  
 La etiqueta AWS está disponible en `filterOrder` Glue 5.0 y versiones posteriores. 

 Cuando utiliza varias etiquetas de filtro, como `recentFiles` y `uriRegex`, en conjunto, la etiqueta `filterOrder` controla el orden en que se aplican. El orden predeterminado es primero `recentFiles` y luego `uriRegex`. 

```
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with recentFiles = 1 with uriRegex = "inventory_" with filterOrder = ["uriRegex","recentFiles"]
```

 En el ejemplo anterior, el filtro `uriRegex` se aplica primero para seleccionar únicamente los archivos que coinciden con “inventory\$1”, y luego `recentFiles = 1` toma el archivo más reciente de ese conjunto filtrado. Sin `filterOrder`, el comportamiento predeterminado tomaría primero el archivo más reciente y luego aplicaría la expresión regular, lo que podría dar como resultado que no haya archivos coincidentes si el archivo más reciente no coincide con el patrón. 

**nota**  
 Todos los valores de la lista `filterOrder` deben hacer referencia a otras etiquetas de filtro (`recentFiles` o `uriRegex`) que también estén presentes en la misma regla. Las etiquetas que no son de filtro, como `timeZone` o `failFast`, no son válidas en `filterOrder`. 

 **failFast** 

 Cuando se establece en `"true"`, la regla devuelve un error de inmediato en el primer archivo que no cumple la condición de vigencia, en lugar de evaluar todos los archivos y calcular una tasa de cumplimiento. 

```
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with failFast = "true"
```

 **timeZone** 

 Indica las anulaciones de zonas horaria aceptadas; consulte [Allowed Time Zones](https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html) para ver las zonas horarias admitidas. 

```
FileFreshness "s3://path/" > "21:45" with timeZone = "America/New_York"
```

```
FileFreshness "s3://path/" > "21:45" with timeZone = "America/Chicago"
```

```
FileFreshness "s3://path/" > "21:45" with timeZone = "Europe/Paris"
```

```
FileFreshness "s3://path/" > "21:45" with timeZone = "Asia/Shanghai"
```

```
FileFreshness "s3://path/" > "21:45" with timeZone = "Australia/Darwin"
```

 **Cómo inferir los nombres de los archivos directamente de los marcos de datos** 

 No siempre tiene que proporcionar una ruta de archivo. Por ejemplo, al crear la regla en el catálogo de datos de AWS Glue, puede resultar difícil encontrar qué carpetas usan las tablas del catálogo. AWS Calidad de datos de Glue puede encontrar las carpetas o archivos específicos que se usan para rellenar su marco de datos y puede detectar si están actualizados. 

**nota**  
 Esta característica solo funcionará cuando los archivos se lean correctamente en DynamicFrame o DataFrame. 

```
FileFreshness > (now() - 24 hours)
```

 Esta regla encontrará la ruta de la carpeta o los archivos que se usan para rellenar el marco dinámico o el marco de datos. Esto funciona para las rutas de Amazon S3 o las tablas de Catálogo de datos de AWS Glue basadas en Amazon S3. Existen algunas consideraciones: 

1.  En la ETL de AWS Glue, debe tener la transformación **EvaluateDataQuality** inmediatamente después de una transformación de Amazon S3 o del Catálogo de datos de AWS Glue.   
![\[La instantánea muestra un nodo de evaluación de Calidad de datos conectado a un nodo de Amazon S3.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/data-quality-file-freshness.png)

1.  Esta regla no funcionará en las sesiones interactivas de AWS Glue. 

 Si lo intenta en ambos casos, o si AWS Glue no encuentra los archivos, AWS Glue devolverá el siguiente error: `“Unable to parse file path from DataFrame”` 