Python 气流DAG-如何先检查BQ(必要时删除),然后运行数据流作业?
我正在使用cloud composer为到达GCS并将其发送到BigQuery的文件编排ETL。我有一个cloud函数,当文件到达时触发dag,cloud函数将文件名/位置传递给dag。在我的DAG中,我有两项任务: 1)使用Python 气流DAG-如何先检查BQ(必要时删除),然后运行数据流作业?,python,google-cloud-platform,google-bigquery,airflow,google-cloud-composer,Python,Google Cloud Platform,Google Bigquery,Airflow,Google Cloud Composer,我正在使用cloud composer为到达GCS并将其发送到BigQuery的文件编排ETL。我有一个cloud函数,当文件到达时触发dag,cloud函数将文件名/位置传递给dag。在我的DAG中,我有两项任务: 1)使用DataflowPythonOperator运行数据流作业,该作业从GCS中的文本读取数据,并将其转换并输入到BQ中,2)根据作业失败还是成功,将文件移动到失败/成功存储桶中。 每个文件都有一个文件ID,它是bigquery表中的一列。有时一个文件会被编辑一次或两次(这不是
DataflowPythonOperator
运行数据流作业,该作业从GCS中的文本读取数据,并将其转换并输入到BQ中,2)根据作业失败还是成功,将文件移动到失败/成功存储桶中。
每个文件都有一个文件ID,它是bigquery表中的一列。有时一个文件会被编辑一次或两次(这不是一个经常进行流式处理的事情),我希望能够首先删除该文件的现有记录
我查看了其他气流操作符,但希望在运行数据流作业之前在DAG中有两个任务:
谢谢,我非常感谢大家的帮助,如果这不是你想要的那么清楚,我表示歉意。关于气流的文档非常强大,但鉴于cloud composer和bigquery相对较新,很难彻底了解如何完成某些GCP特定任务。听起来有点复杂。很高兴,几乎每项GCP服务都有运营商。另一件事是何时触发DAG执行。你明白了吗?您可能希望在每次新文件进入GCS存储桶时触发一个Google云函数运行
这有帮助吗?所以我已经完成了云功能步骤和数据流工作(数据流是因为它有100万条记录,气流没有那么快,除非我错了)。问题是,我需要能够访问文件ID,一旦我计算它。我可以通过使用文件名并在bigquery表中进行简单的查找来计算它。在我计算之后,我需要我的模板来知道在我的查询中使用它是什么。这有意义吗?气流不会导入文件本身。它会触发文件的BQ加载作业-这是非常快速和免费的(与数据流作业不同)。-至于文件id,让我过一会儿再告诉您,您是否能够(1)将数据导入临时表-(2)等待1小时进行文件更新(3)如果文件更新,则删除临时表(4)如果文件未更新,则将临时表复制到目标表?不幸的是,没有,而且通常更新时间不会在1小时内,可以是24小时后,也可以是1个月后,甚至一年后。在这种情况下,是的-您应该有一个(1)Python操作符来计算文件ID。(2)一个BigQueryOperator,它对具有该文件ID的所有行运行删除查询。(3)。一个DataflowPythonOperator,它运行一个作业,将文件ID添加到行中,并插入t BigQuery。怎么样?