データマネジメントチームの金野 浩之です。
前回の記事では、「シナリオごとにセグメントリストを抽出するWorkflowの書き方」を紹介いたしましたが、今回はそのWorkflowにメール通知の仕組みを組み込んで、処理の成否に応じた通知を飛ばしてみたいと思います。
通常、Workflowの処理途中でエラーが発生するとWorkflowオーナーにはメールで通知されます。しかし、複数名で管理している場合だと他のメンバーに通知が届かなかったり、処理が正常に完了しているかどうかを毎回コンソールにアクセスしてJob一覧を確認しなければいけなかったりと運用の手間がかかってしまします。その為、メール通知の仕組みを入れておくことで日々のWorkflow運用コストを軽減することができます。
まず前回ご紹介したセグメントリスト作成のWorkflowのおさらいです。+empty_tblタスクで抽出したリストを格納するテーブルを作成し、+insert_mail_listタスクでセグメントリストを抽出するSQLを実行する形です。
今回は上記digファイル内に、エラー発生時と正常終了時にメール通知するdigファイルを組み込んでいきたいと思います。
メール通知するWorkflowについて
メール通知処理については別のdigファイルを作成し、callオペレータで呼び出す形式にします。実際に呼び出すメール通知のdigファイルは下記の通りです。
_export配下にWorkflow名を変数化しておき、メール件名や本文に代入できるようにしておきます。メール送信処理の実体は+send_email配下のmail>:オペレータです。送信されるメール本文は6行目のdata:オブジェクトです。ここでは2行目で設定したWorkflow_nameやデフォルトで取得できるproject_idを動的に挿入することで、どのWorkflowの通知かを判別できるようにしています。※data:オブジェクトはインデントを一つ下げてください。
メール件名は7行目のsubject:オブジェクトに記載する形です。ここでもWorkflow_nameやproject_idを代入して、通知内容を判別できるようにします。送信先のmail addressは8行目のto:オブジェクトに設定します。メールアドレスは[“mail@mail.com”]
のように、ダブルコーテーションとカッコでくくります。複数アドレス宛に送信する場合、[“mail@mail.com”,”mail2@mail.com”]
のようにカンマで繋いでおきます。
上記のWorkflowはエラー発生時用の記載なので、正常終了時にもメール通知する場合はsubjectやdataを正常終了用の記載に変更してもう一つdigファイルを作成します。
Workflow本体へメール通知Workflowを組み込み
メール通知処理を組み込んだセグメント作成Workflowが以下の通りです。
エラー通知処理は9〜11行目です。_error:タスクの下にcall>:オペレータでdigファイルを呼び出すことで、Workflowエラー時にのみエラーメール通知が飛びます。また、Workflow実行の一番最後(31〜33行目)に正常終了のメール通知Workflowを同じようにcall>:オペレータで呼び出します。これでメール通知処理の組み込みは完了です。Treasure Data CDPのWorkflowではメール以外にもSlackとAPI連携することで、指定のSlackチャネルにMessageを送信することも可能です。
ぜひWorkflowの効率的な運用にお役だてください。