Snowflakeでメール送信する方法 SYSTEM$SEND_EMAILの使い方と通知自動化を解説

Snowflake

こんにちは!システムサポートの寺田です!

Snowflakeを用いてメールを送信できることをご存じでしょうか?
実は、1つの関数を呼び出すだけで簡単にメールを送信できてしまうんです。
本記事では、Snowflakeを用いたメール送信の方法について紹介します。
例として、「残業時間が40時間以上の社員がいることを担当者に通知する」
ストアドプロシージャを作成しました。
参考にしていただければ幸いです。

本記事でわかること


・Snowflakeを用いたメールの送信方法

オブジェクト作成


作成するオブジェクトは以下になります。

・データベース
・スキーマ
・テーブル
・メール通知統合
・ストアドプロシージャ

データべース作成

SYSADMINを使用して、データベース(management)を作成します。

スキーマ作成

スキーマ(attendance)を作成します。

テーブル作成

テーブル(work_hours)を作成します。

以下が、作成したテーブル(work_hours)の構造です。

物理名論理名
emp_id社員番号
emp_name社員名
work_time労働時間
over_time残業時間

以下が、テーブル(work_hours)に挿入したデータです。

emp_idemp_namework_timeover_time
1林 大士21050
2牧 ひろし1600
3寺畑 裕志20040

メール通知統合作成

メール送信に必要なメール通知統合を作成していきます。
メール通知統合は、デフォルトではACCOUNTADMINのみ作成できます。
メールアドレスはアカウント内の検証されたメールアドレスのみ使用できます。

allowed_recipientsには、許可するメールアドレスを指定(複数指定可能)
default_recipientsには、メール送信の関数内でメールアドレスが指定されない場合の
の送信先を指定します。
※default_recipientsに指定したメールアドレスは、allowed_recipientsに指定されている
必要があります。

プロシージャ作成

次にメール送信を行うストアドプロシージャを作成していきます。
メール送信は、SYSTEM$SEND_EMAIL関数を用いて行います。
この関数を使うことで、メール通知統合を経由して、
指定した宛先へメールを送信できます。
メール通知統合で、allowed_recipientsに指定したメールアドレスのみ
メール送信可能なことに注意が必要です。

実行結果確認


実行

先ほど作成したストアドプロシージャを実行することで、
残業時間が40時間以上の社員がいることを担当者に通知されます。
テーブルのデータを見ると、残業時間が40時間以上なのは林さん、寺畑さんです。
正しくプロシージャが機能すれば、2名分のメールが担当者の元へ届くはずです。

emp_idemp_namework_timeover_time
1林 大士21050
2牧 ひろし1600
3寺畑 裕志20040


それでは、プロシージャを実行していきます。

結果

無事、2人分の残業通知メールを送信することができました!


まとめ


今回は、Snowflakeを用いたメールの送信方法について紹介しました。
記載したコードをご自身のSnowflake環境で実行すれば、
気軽にメール送信を試すことができます。
ぜひ、試してみてください!

以上

コメント

タイトルとURLをコピーしました