使用 Python 和 Airflow 在电子邮件中发送 Redshift 查询结果
Posted
技术标签:
【中文标题】使用 Python 和 Airflow 在电子邮件中发送 Redshift 查询结果【英文标题】:Sending Redshift Query Result in Email with Python and Airflow 【发布时间】:2021-08-29 13:35:03 【问题描述】:我正在制作每日 DAG,它将在 Redshift 中运行查询并将结果表通过电子邮件发送。
我目前设法获取查询结果并将其放入 DataFrame。我的问题是使用send_email
(来自气流包)并为其选择参数以显示数据。
不幸的是,电子邮件的输出不是表格,只是结果以文本形式到处都是。
这是我为send_email
写的:
html_content = f"""
<html><body><p>Hello,</p>
<p>Found num_of_late_dags Late DAGs:</p>
late_dags
<p>Regards,</p>
<p>Me</p>
</body></html>
"""
send_email(to=v_email_recipients_daily_report,
cc=cc,
bcc=bcc,
subject=f'Daily DAG Load Report',
html_content=html_content,
mime_subtype='alternative') ```
【问题讨论】:
你试过df.to_html()
吗? pandas.pydata.org/docs/reference/api/…
谢谢!我用过,但显然我用错了。现在工作。非常感谢!
【参考方案1】:
更新:
我在.format(to_html())
中的html_content
之后使用了pd.to_html()
,但这没有用。
在将数据创建为有效的 DataFrame 时,我使用了 to_html()
。不知道为什么,他们应该这样做。
所以它看起来像这样:df = pd.DataFrame(data, columns=['X',Y']).to_html()
然后将df
放入 HTML 内容中就可以了。
【讨论】:
以上是关于使用 Python 和 Airflow 在电子邮件中发送 Redshift 查询结果的主要内容,如果未能解决你的问题,请参考以下文章
airflow实战系列 基于 python 的调度和监控工作流的平台
如何使用 AirFlow 运行 python 文件的文件夹?
如何使用 Python 在 Airflow 中成功触发另一个 DAG 时触发 DAG?