Removing Airflow's xcom variables isn't working with Operational Error : "Incorrect datetime value in 'execution_date' at row 1"
Removing Airflow's xcom variables isn't working with Operational Error : "Incorrect datetime value in 'execution_date' at row 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%'
我明白了
Execution failed on sql 'DELETE FROM xcom WHERE dag_id='datamart_integration.tracking_marketing' AND TASK_ID='find_file' AND execution_date LIKE '%2020-12-14%'': (1292, "Incorrect datetime value: '%2020-12-14%' for column 'execution_date' at row 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' object is not iterable
No data
我在想,除非在某处以某种方式指定,否则气流数据库可能受到 deletion/insertion 的保护?但是这些错误会令人困惑。
airflow_db 由 MySQL
启动,我正在研究 composer。
我能够重现这个完全相同的错误,我假设你在 Airflow 的 UI.
中使用 Adhoc Queries from Data Profiling
虽然在 Airflow 文档中没有严格指定(至少我没有找到),但我认为 DML 语句不允许从那里 运行;如文档中所述:
The adhoc query UI allows for simple SQL interactions with the database connections registered in Airflow
我了解临时查询仅用于测试连接。这可能就是为什么 SELECT 语句工作正常,但 DELETE 语句即使查询正确也会抛出这些错误。
我可以确认 运行DAG 中的 DELETE 语句,无论是来自 MySqlOperator 还是通过 xcom 库,正如您在评论中提到的,工作正常。
我遇到了一个奇怪的气流错误。我尝试在某个执行日期内删除任务的 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%'
我明白了
Execution failed on sql 'DELETE FROM xcom WHERE dag_id='datamart_integration.tracking_marketing' AND TASK_ID='find_file' AND execution_date LIKE '%2020-12-14%'': (1292, "Incorrect datetime value: '%2020-12-14%' for column 'execution_date' at row 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' object is not iterable
No data
我在想,除非在某处以某种方式指定,否则气流数据库可能受到 deletion/insertion 的保护?但是这些错误会令人困惑。
airflow_db 由 MySQL
启动,我正在研究 composer。
我能够重现这个完全相同的错误,我假设你在 Airflow 的 UI.
中使用 Adhoc Queries from Data Profiling虽然在 Airflow 文档中没有严格指定(至少我没有找到),但我认为 DML 语句不允许从那里 运行;如文档中所述:
The adhoc query UI allows for simple SQL interactions with the database connections registered in Airflow
我了解临时查询仅用于测试连接。这可能就是为什么 SELECT 语句工作正常,但 DELETE 语句即使查询正确也会抛出这些错误。
我可以确认 运行DAG 中的 DELETE 语句,无论是来自 MySqlOperator 还是通过 xcom 库,正如您在评论中提到的,工作正常。