checking-freshness

Verifique a atualização dos dados analisando os timestamps das tabelas e os padrões de atualização em relação a uma escala de obsolescência. Identifica colunas de timestamp usando padrões comuns de nomenclatura ETL (_loaded_at, _updated_at, created_at, etc.) e consulta seus valores máximos para determinar a idade. Classifica os dados em quatro status de atualização: Atualizados (< 4 horas), Desatualizados (4–24 horas), Muito Desatualizados (> 24 horas) ou Desconhecido (nenhum timestamp encontrado). Fornece modelos SQL para verificar o horário da última atualização e as tendências de contagem de linhas nos dias recentes para...

npx skills add https://github.com/astronomer/agents --skill checking-freshness

Data Freshness Check

Quickly determine if data is fresh enough to use.

Freshness Check Process

For each table to check:

1. Find the Timestamp Column

Look for columns that indicate when data was loaded or updated:

  • _loaded_at, _updated_at, _created_at (common ETL patterns)
  • updated_at, created_at, modified_at (application timestamps)
  • load_date, etl_timestamp, ingestion_time
  • date, event_date, transaction_date (business dates)

Query INFORMATION_SCHEMA.COLUMNS if you need to see column names.

2. Query Last Update Time

SELECT
    MAX(<timestamp_column>) as last_update,
    CURRENT_TIMESTAMP() as current_time,
    TIMESTAMPDIFF('hour', MAX(<timestamp_column>), CURRENT_TIMESTAMP()) as hours_ago,
    TIMESTAMPDIFF('minute', MAX(<timestamp_column>), CURRENT_TIMESTAMP()) as minutes_ago
FROM <table>

3. Check Row Counts by Time

For tables with regular updates, check recent activity:

SELECT
    DATE_TRUNC('day', <timestamp_column>) as day,
    COUNT(*) as row_count
FROM <table>
WHERE <timestamp_column> >= DATEADD('day', -7, CURRENT_DATE())
GROUP BY 1
ORDER BY 1 DESC

Freshness Status

Report status using this scale:

StatusAgeMeaning
Fresh< 4 hoursData is current
Stale4-24 hoursMay be outdated, check if expected
Very Stale> 24 hoursLikely a problem unless batch job
UnknownNo timestampCan't determine freshness

If Data is Stale

Check Airflow for the source pipeline:

  1. Find the DAG: Which DAG populates this table? Use af dags list and look for matching names.

  2. Check DAG status:

    • Is the DAG paused? Use af dags get <dag_id>
    • Did the last run fail? Use af dags stats
    • Is a run currently in progress?
  3. Diagnose if needed: If the DAG failed, use the debugging-dags skill to investigate.

On Astro

If you're running on Astro, you can also:

  • DAG history in the Astro UI: Check the deployment's DAG run history for a visual timeline of recent runs and their outcomes
  • Astro alerts for SLA monitoring: Configure alerts to get notified when DAGs miss their expected completion windows, catching staleness before users report it

On OSS Airflow

  • Airflow UI: Use the DAGs view and task logs to verify last successful runs and SLA misses

Output Format

Provide a clear, scannable report:

FRESHNESS REPORT
================

TABLE: database.schema.table_name
Last Update: 2024-01-15 14:32:00 UTC
Age: 2 hours 15 minutes
Status: Fresh

TABLE: database.schema.other_table
Last Update: 2024-01-14 03:00:00 UTC
Age: 37 hours
Status: Very Stale
Source DAG: daily_etl_pipeline (FAILED)
Action: Investigate with **debugging-dags** skill

Quick Checks

If user just wants a yes/no answer:

  • "Is X fresh?" -> Check and respond with status + one line
  • "Can I use X for my 9am meeting?" -> Check and give clear yes/no with context

Mais skills de astronomer

airflow-state-store
astronomer
Persists task and asset state across retries and DAG runs using Airflow 3.3's AIP-103 key/value stores (`task_state_store`, `asset_state_store`) and the…
creating-openlineage-extractors
astronomer
Extratores OpenLineage personalizados para operadores Airflow não suportados e cenários complexos de linhagem. Duas abordagens: adicionar métodos OpenLineage diretamente aos operadores que você possui (recomendado), ou criar extratores personalizados para operadores de terceiros que você não pode modificar. Os extratores interceptam a execução do operador em três pontos: antes da execução para linhagem estática, após o sucesso para saídas determinadas em tempo de execução e, opcionalmente, após falha para linhagem parcial. Registre os extratores via airflow.cfg ou ambiente...
debugging-dags
astronomer
Análise sistemática de causa raiz e remediação para DAGs do Airflow com falhas, utilizando fluxos de investigação estruturados. Orienta por um processo de diagnóstico em quatro etapas: identificar a falha, extrair detalhes do erro, reunir informações contextuais e fornecer etapas de remediação acionáveis. Classifica as falhas em quatro tipos (dados, código, infraestrutura, dependência) para focar a investigação e sugerir correções apropriadas. Fornece comandos CLI prontos para recuperação de logs, comparação de execuções, limpeza de tarefas e DAG...
delegating-to-otto
astronomer
Direciona o agente Otto da
deploying-airflow
astronomer
Implantar DAGs e projetos do Airflow. Use quando o usuário quiser implantar código, enviar DAGs, configurar CI/CD, implantar em produção ou perguntar sobre estratégias de implantação…
deploying-go-sdk-bundles
astronomer
Compila, empacota e implanta pacotes compilados do Airflow Go SDK para que o ExecutableCoordinator possa executá-los. Use quando o usuário quiser compilar um pacote de tarefas Go, pedir…
testing-dags
astronomer
Ciclos iterativos de teste-depuração-correção para DAGs do Airflow com diagnóstico abrangente de falhas. Comece com af runs trigger-wait <dag_id> para executar um DAG e aguardar a conclusão; não são necessárias verificações prévias. Em caso de falha, use af runs diagnose para um resumo abrangente de falhas e af tasks logs para inspecionar detalhes de erros de tarefas específicas. Suporta configuração personalizada, timeouts e tentativas de repetição; lida com cenários de sucesso, falha e timeout com interpretação clara da resposta. Validação rápida disponível...
tracing-downstream-lineage
astronomer
Rastreie a linhagem de dados downstream para avaliar o impacto de alterações antes de modificar tabelas ou DAGs. Identifica consumidores diretos de uma tabela ou DAG alvo por meio de busca em código-fonte, dependências de views e conexões com ferramentas de BI. Constrói uma árvore de dependências completa mapeando todos os impactos downstream, desde tabelas até dashboards e modelos de ML. Categoriza dependências por criticidade (crítica, alta, média, baixa) para priorizar comunicação com stakeholders e testes. Gera um relatório de impacto com avaliação de risco, afetados...