Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro no data_interval_end.strftime

Fiz uma pequena alteração no codigo para fins de exercicio e estou recebendo o seguinte problema:

ValueError: time data '{{data_interval_end.strftime("%Y-%m-%d")}}' does not match format '%Y-%m-%d'

Código que usa esse comando:

tarefa_extrai_dados = PythonOperator( task_id = 'extrai_dados', python_callable = extrai_dados, op_kwargs = {'data_inicio': '{{data_interval_end.strftime("%Y-%m-%d")}}', 'data_fim': ds_add('{{data_interval_end.strftime("%Y-%m-%d")}}',7)} )

Alguma dica?

1 resposta
solução!

Ooi, Leandro!

Tô aqui para ajudar você! :)

Esse erro ocorre porque o Python está tentando formatar uma string como se fosse uma data, mas na verdade essa string não é uma data.

No seu código, você usa data_interval_end.strftime("%Y-%m-%d") para formatar a data. Isso normalmente funcionaria se data_interval_end fosse um objeto de data. No entanto, parece que ele está sendo tratado como uma string comum, o que causa o erro.

Vou deixar abaixo algumas dicas para resolver o problema:

→ Verificar o tipo de dado: Antes de mais nada, vamos verificar o que realmente é data_interval_end. Adicione esta linha de código antes do erro para ver o tipo de dado:

print(type(data_interval_end))

→ Converter para data: Se o resultado for uma string, você precisará converter data_interval_end em um objeto de data antes de formatá-lo. Veja um exemplo de como você pode fazer isso:

from datetime import datetime

# Supondo que 'data_interval_end' seja uma string como "2024-01-01"
data_formatada = datetime.strptime(data_interval_end, "%Y-%m-%d")
data_em_string = data_formatada.strftime("%Y-%m-%d")

→ Uso correto das macros do Airflow: Verifique se você está usando as macros do Airflow corretamente para que data_interval_end seja reconhecido como uma data. Por exemplo:

tarefa_extrai_dados = PythonOperator(
    task_id='extrai_dados',
    python_callable=extrai_dados,
    op_kwargs={'data_inicio': '{{ ds }}', 'data_fim': '{{ tomorrow_ds }}'}
)

Espero ter ajudado!

Abraço! :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!