You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Snowflake的SYSTEM$SEND_EMAIL中嵌入查询结果至邮件正文?

将Snowflake告警查询结果嵌入邮件正文的最优实现方式

问题背景

我的Snowflake通知集成已正常运行,能通过CREATE ALERT发送邮件。现在需要把每日监控表DB.LOAD_SUCCESS_TRACKING的所有行内容放到SYSTEM$SEND_EMAIL的邮件正文中,实现告警时附带查询结果。

测试告警代码如下:

CREATE OR REPLACE ALERT test
WAREHOUSE = ITSM_LWH
SCHEDULE = '1 minute'
IF (EXISTS ( SELECT * FROM DB.LOAD_SUCCESS_TRACKING))
THEN CALL SYSTEM$SEND_EMAIL(
    'ITSM_EMAIL',
     'nyoung@XXXXXX.net',
     'Game Alert: Possible degraded games on GS.',
     'Email Body.'
 );

 ALTER ALERT test RESUME;

最优实现步骤

1. 创建存储过程生成格式化邮件内容

创建存储过程,查询目标表并将结果转换为邮件客户端友好的HTML表格格式(也可按需改为纯文本CSV):

CREATE OR REPLACE PROCEDURE GENERATE_LOAD_TRACKING_EMAIL_BODY()
RETURNS STRING
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
    email_body STRING;
BEGIN
    -- 将表数据转换为HTML表格
    SELECT '<html><body><h3>每日加载监控结果</h3><table border="1"><tr>' ||
           ARRAY_TO_STRING(ARRAY_AGG('<th>' || COLUMN_NAME || '</th>'), '') ||
           '</tr>' ||
           ARRAY_TO_STRING(ARRAY_AGG('<tr>' ||
               ARRAY_TO_STRING(ARRAY_AGG('<td>' || NVL(VALUE::STRING, '') || '</td>'), '') ||
           '</tr>'), '') ||
           '</table></body></html>'
    INTO email_body
    FROM DB.LOAD_SUCCESS_TRACKING,
         LATERAL FLATTEN(INPUT => OBJECT_CONSTRUCT(*))
    GROUP BY SEQ8();

    -- 表为空时返回默认提示
    IF email_body IS NULL THEN
        RETURN '今日无加载监控数据。';
    END IF;

    RETURN email_body;
END;
$$;

2. 修改告警调用存储过程生成正文

更新原有告警逻辑,在SYSTEM$SEND_EMAIL中调用存储过程获取动态生成的邮件正文:

CREATE OR REPLACE ALERT test
WAREHOUSE = ITSM_LWH
SCHEDULE = '1 minute'
IF (EXISTS ( SELECT * FROM DB.LOAD_SUCCESS_TRACKING))
THEN CALL SYSTEM$SEND_EMAIL(
    'ITSM_EMAIL',
     'nyoung@XXXXXX.net',
     'Game Alert: Possible degraded games on GS.',
     GENERATE_LOAD_TRACKING_EMAIL_BODY() -- 调用存储过程获取动态正文
 );

ALTER ALERT test RESUME;

补充说明

  • 若偏好纯文本格式,可将存储过程中的HTML逻辑替换为CSV格式,用ARRAY_TO_STRING拼接逗号分隔的字段与行。
  • 确保告警使用的仓库有足够资源执行查询,且存储过程调用者拥有DB.LOAD_SUCCESS_TRACKING表的查询权限。
  • 可根据需求调整邮件正文样式,比如添加日期标记、高亮异常行等。

内容的提问来源于stack exchange,提问作者NRY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:52:07