FileFreshness
O FileFreshness garante que os arquivos de dados estejam atualizados com base nas condições que você fornece. Ele usa a hora da última modificação dos arquivos para garantir que os arquivos de dados ou a pasta inteira esteja atualizada.
Essa regra reúne duas métricas:
-
Conformidade com o FileFreshness com base na regra que você configurou
-
O número de arquivos que foram verificados pela regra
{"Dataset.*.FileFreshness.Compliance":1,"Dataset.*.FileCount":1}
A detecção de anomalias não considera essas métricas.
Verificação da atualização do arquivo
A regra a seguir garante que o tickets.parquet tenha sido criado nas últimas 24 horas.
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/tickets.parquet" > (now() - 24 hours)
Verificação da atualização da pasta
A regra a seguir será válida se todos os arquivos da pasta tiverem sido criados ou modificados nas últimas 24 horas.
FileFreshness "s3://bucket/" >= (now() -1 days) FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" >= (now() - 24 hours)
Verificação da atualização da pasta ou do arquivo com limite
A regra a seguir é válida se 10% dos arquivos da pasta “tiquetes” tiverem sido criados ou modificados nos últimos 10 dias.
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" < (now() - 10 days) with threshold > 0.1
Verificação de arquivos ou pastas com datas específicas
Você pode verificar a atualização de arquivos em dias 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"
Verificação de arquivos ou pastas com hora
É possível usar FileFreshness para garantir que os arquivos chegaram com base em determinadas horas.
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"
Considerações importantes:
-
O FileFreshness pode avaliar arquivos usando unidades de dias, horas e minutos
-
Para horários, ele oferece suporte aos formatos AM/PM e de 24 horas
-
Os horários são calculados em UTC, a menos que algo diferente seja especificado
-
As datas são calculadas em UTC no horário 00:00
O FileFreshness baseado em hora funciona da seguinte forma:
FileFreshness "s3://amzn-s3-demo-bucket/artifacts/file/tickets/" > "21:45"
-
Primeiro, o horário "21h45" é combinado com a data de hoje no formato UTC para criar um campo de data e hora
-
Em seguida, a data e hora são convertidas para um fuso horário que você especificou
-
Finalmente, a regra é avaliada
Tags de regras opcionais baseadas em arquivos:
As tags permitem controlar o comportamento da regra.
recentFiles
Essa tag limita o número de arquivos processados ao manter primeiro o arquivo mais recente.
FileFreshness "s3://amzn-s3-demo-bucket/" between (now() - 100 minutes) and (now() + 10 minutes) with recentFiles = 1
uriRegex
nota
A tag uriRegex está disponível no AWS Glue 5.0 e em versões posteriores.
Essa tag filtra os arquivos aplicando um padrão regex ao caminho do arquivo. Somente são processados os arquivos cujos caminhos correspondam ao padrão. Você também pode usar um lookahead negativo para excluir os arquivos que correspondam a um padrão.
# 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
A tag filterOrder está disponível no AWS Glue 5.0 e em versões posteriores.
Quando você usa várias tags de filtro juntas, como recentFiles e uriRegex, a tag filterOrder controla a ordem na qual elas são aplicadas. A ordem padronizada é primeiro recentFiles e depois uriRegex.
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with recentFiles = 1 with uriRegex = "inventory_" with filterOrder = ["uriRegex","recentFiles"]
No exemplo acima, primeiramente é aplicado o filtro uriRegex para selecionar somente os arquivos que correspondam a “inventory_” e, em seguida, recentFiles = 1 obtém o arquivo mais recente desse conjunto filtrado. Sem filterOrder, o comportamento padrão seria selecionar primeiro o arquivo mais recente e depois aplicar o regex, o que poderia resultar na ausência de correspondência de arquivos se o arquivo mais recente não correspondesse ao padrão.
nota
Todos os valores na lista filterOrder devem fazer referência a outras tags do filtro (recentFiles ou uriRegex) que também estejam presentes na mesma regra. Tags que não fazem parte do filtro, como timeZone ou failFast, não são válidas em filterOrder.
failFast
Quando definida como "true", a regra informa a falha imediatamente no primeiro arquivo que falhar na condição de atualização, em vez de avaliar todos os arquivos e calcular uma taxa de conformidade.
FileFreshness "s3://amzn-s3-demo-bucket/" > (now() - 24 hours) with failFast = "true"
timeZone
Substituições de fuso horário aceitas, consulte Fusos horários permitidos
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"
Dedução de nomes de arquivos diretamente de quadros de dados
Você nem sempre precisa fornecer um caminho de arquivo. Por exemplo, quando você está criando a regra no Catálogo de Dados do AWS Glue, pode ser difícil descobrir quais pastas as tabelas do catálogo estão usando. O AWS Glue Data Quality pode encontrar as pastas ou arquivos específicos usados para o preenchimento do quadro de dados e detectar se eles estão atualizados.
nota
Esse recurso só funcionará quando os arquivos forem lidos com sucesso no DynamicFrame ou no DataFrame.
FileFreshness > (now() - 24 hours)
Essa regra descobrirá o caminho da pasta ou os arquivos usados para preencher o quadro dinâmico ou o quadro de dados. Isso funciona para caminhos do Amazon S3 ou para tabelas do Catálogo de Dados do AWS Glue baseadas no Amazon S3. Existem algumas considerações:
-
No ETL do AWS Glue, você deve ter a transformação EvaluateDataQuality imediatamente após uma transformação do Amazon S3 ou do Catálogo de Dados do AWS Glue.
-
Essa regra não funcionará nas sessões interativas do AWS Glue.
Se você tentar isso em ambos os casos, ou quando o AWS Glue não conseguir encontrar os arquivos, o AWS Glue irá gerar o seguinte erro: “Unable to parse file path from DataFrame”