使用 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?

Airflow实践 | 一款基于python的智能工作流引擎

Airflow自定义插件, 使用datax抽数

Bigquery:如果不存在则创建表并使用 Python 和 Apache AirFlow 加载数据