Удаление переменных xcom Airflow не работает с операционной ошибкой: «Неверное значение даты и времени в« execution_date »в строке 1»

Столкнулся со странной ошибкой в ​​воздушном потоке. Я пытаюсь удалить переменные Xcom для задачи в пределах определенной даты выполнения; для создания и использования другого экземпляра переменной Xcomдля той же задачи.

Почему я хочу это сделать? Поскольку значение этой переменной Xcom меняется в течение дня, и иногда я замечаю конфликт, используется первое значение, что портит мои рабочие процессы. Я был бы рад объяснить с примерами, если это необходимо.

Когда я выполняю этот запрос:

SELECT * FROM xcom WHERE dag_id='datamart_integration.tracking_marketing' AND TASK_ID='find_file' AND execution_date LIKE '%2020-12-14%'

Я получаю 2 строки данных.

id  key value   timestamp   execution_date  task_id dag_id
4969    return_value    b'["DTM_DATALAKE_TRACKING_MARKETING_20201214_20201214060143.zip"]'  2020-12-14 10:22:50.085745  2020-12-14 05:40:38 find_file   datamart_integration.tracking_marketing
5139    return_value    b'["DTM_DATALAKE_TRACKING_MARKETING_20201214_20201214060143.zip", "DTM_DATALAKE_TRACKING_MARKETING_20201214_20201214130326.zip"]'   2020-12-14 16:50:55.596651  2020-12-14 13:35:44 find_file   datamart_integration.tracking_marketing

Но когда я выполняю этот запрос:

DELETE FROM xcom WHERE dag_id='datamart_integration.tracking_marketing' AND TASK_ID='find_file' AND execution_date LIKE '%2020-12-14%'

я получил

Не удалось выполнить sql 'УДАЛИТЬ ИЗ xcom, ГДЕ dag_id='datamart_integration.tracking_marketing' AND TASK_ID='find_file' AND execute_date LIKE '%2020-12-14%'': (1292, "Неверное значение даты и времени: '%2020-12- 14%" для столбца "execution_date" в строке 1")

Но я думаю, что настоящая проблема возникает, когда я пробую эти запросы:

DELETE FROM xcom WHERE dag_id='datamart_integration.tracking_marketing' AND TASK_ID='find_file' AND execution_date BETWEEN '2020-12-14 00:00:00' AND '2020-12-14 23:59:59'

DELETE FROM xcom WHERE dag_id='datamart_integration.tracking_marketing' AND TASK_ID='find_file' AND execution_date LIKE '2020-12-14%'

я получил

Объект NoneType не является итерируемым

Нет данных

Я думаю, возможно, база данных воздушного потока защищена от удаления/вставки, если где-то не указано и как-то? Но тогда эти ошибки будут сбивать с толку.

Airflow_db запускается с помощью MySQL, и я работаю над composer.

stackoverflow.com/questions/46707132/… ​​ не решили вашу проблему?

Elad Kalif 15.12.2020 20:06

@Elad Хорошо, нет, решение execution_date = {{ds}} будет преобразовано в execution_date=2020-12-14, которое ничего не возвращает для оператора SELECT и 'NoneType' object is not iterable для оператора DELETE

Imad 15.12.2020 20:12

Что ж, я попробовал второе решение, пройдя библиотеку Xcom программно, и, похоже, оно работает.

Imad 16.12.2020 10:06
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
721
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне удалось воспроизвести ту же самую ошибку, я предполагаю, что вы использовали Специальные запросы из Профилирования данных в пользовательском интерфейсе Airflow.

Хотя это не указано строго в документации Airflow (по крайней мере, я не нашел), я предполагаю, что операторы DML не могут запускаться оттуда; как описано в документах:

Пользовательский интерфейс специальных запросов позволяет выполнять простые SQL-взаимодействия с подключениями к базе данных, зарегистрированными в Airflow.

Я понимаю, что специальные запросы предназначены только для проверки соединений. Вероятно, именно поэтому операторы SELECT работают нормально, а операторы DELETE выдают эти ошибки, даже если запрос правильный.

Я могу подтвердить, что запуск операторов DELETE в DAG либо из MySqlOperator, либо через библиотеку xcom, как вы упомянули в комментарии, работает нормально.

Другие вопросы по теме

Похожие вопросы