在Airflow中,可以使用EmailOperator组件将电子邮件发送给特定的收件人。对于发送包含表格数据的电子邮件,可以使用Pandas库中的DataFrame类来操作数据,并将其转换为HTML表格格式。以下是一个示例代码,展示了如何使用EmailOperator和Pandas来发送电子邮件。
from airflow import DAG
from airflow.operators.email_operator import EmailOperator
from datetime import datetime
import pandas as pd
default_args = {
'owner': 'airflow',
'start_date': datetime(2020, 1, 1),
'retries': 1,
'retry_delay': timedelta(minutes=5)
}
dag = DAG(
'sending_email_with_database_table',
default_args=default_args,
schedule_interval='@daily')
def query_data():
# Assuming the data is stored in a database table
table = pd.read_sql("SELECT * FROM table_name", conn)
# Convert the table data into HTML format
table_html = table.to_html(index=False)
return table_html
html_table = query_data()
send_email = EmailOperator(
task_id='send_email',
to='recipient@example.com',
subject='Table Data',
html_content=html_table,
dag=dag)
send_email
该示例假设数据存储在名为“table_name”的数据库表中,并通过Pandas进行查询和转换。然后将HTML表格作为电子邮件的内容使用EmailOperator组件发送。这是一种可靠且灵活的方法,可以轻松地发送包含表格数据的电子邮件。