データ追加の監視と、メール送信先の振り分け | MotionBoard
データが追加された時に自動的にメール送信したい。例えば、全国各地にある店舗の売上データが追加された時に担当者にメールしたい。しかも、関東の店舗の売上データが追加された時は関東の担当者だけに、関西の店舗の売上データが追加された時は関西の担当者だけにメールしたい。
データ追加の監視と、メール送信先の振り分け、という2つの課題に立ち向かいます。
概要
本記事は、業務アプリなBIツールであるMotionBoardを用いて、上記の動作を実現するための方法を説明するものです。
現在のMotionBoard(バージョン6.4.00.0007)において、上記の動作を直接的に実現する機能はありませんが、様々な機能を組み合わせることで実現できます。
対象読者
MotionBoardの基本的な操作ができる、かつ簡単なボードを作成したことがある方を対象とします。
想定するデータ
下記のデータを用いて説明します。実用上は他にも様々なデータがあるでしょうが、説明を簡単にするために絞りました。また、今回はCSVファイルにしましたが、データベースでも可能です。ファイル名は「店舗売上.csv」とします。項目名やファイル名は何でも良いです。
日時,地域,店舗,売上
2024/02/06 09:00:00,関東,新宿店,1000
2024/02/06 09:10:00,関西,梅田店,1500
いつの売上かを示すデータとして「日時」列を用意しました。
メール送信先を振り分けるためのデータとして「地域」列を用意しました。本記事が想定するユースケースは地域別であるためこれを使いますが、国別でメール送信先を振り分けたい場合は「国」列を用意することになります。
CSVファイルをアップロード
「店舗売上.csv」を共有CSVとしてアップロードします。各店舗の店長(各地域の担当者とは異なる)が売上データをMotionBoardから入力する運用を想定します。MotionBoardはCSVファイルやデータベースに対して書き込みもできるBIツールです。CSVファイルに書き込みする場合は共有CSVである必要があります(専用CSVではなく)。
まずは「共有アイテム管理」画面の「CSV/Excel」タブで「CSV/Excel」フォルダの下に「売上」フォルダを作成してください(フォルダを作成せずルート直下に配置でも構いません)。店舗売上の他にネットショップ売上などのCSVファイルも格納するかも、という想定です。今回は店舗売上のみを扱いますので、「売上」フォルダに「店舗売上.csv」ファイルのみをアップロードしてください。
想定するユースケースについて
実運用を考えれば店舗の売上データはPOSシステムによって自動的にデータベースに書き込まれる様になっているでしょうし、売上ごとに担当者にメールが来るのはやり過ぎな気がしますが(たまにしか売れない高級品であれば、そうでもない?)、本記事を執筆するための一例である点をご了承ください。これを読まれているあなたのユースケースに置き換えて読んでもらえれば幸いです。
こんなユースケースがあるよ、という事例やアイディアをお持ちの方は、是非コメントください。
ユースケースを実現するための主要機能と戦略
MotionBoardが提供する標準機能である「リアルタイムアラート」を主軸として実現への戦略を考えます。
リアルタイムアラートは、チャートアイテムのアラートの発生有無を、指定した間隔で繰り返し監視する機能です。監視対象のチャートアイテムでアラートが発生した場合に、検知してメールやチャットを送信したり、拡張プログラムを実行したりするなど、次の動作(アラートアクション)につなげることができます。詳しくはマニュアルを見てください。
リアルタイムアラート
リアルタイムアラートはアラートの発生有無を監視する機能です。データが追加されたことを監視する機能ではありません。これが直接的に実現する機能はないと冒頭で説明した理由になるのですが、使い方を工夫するとデータ追加の監視も可能です。
アラートが発生していればメール送信できるため、追加データがアラートしていればメール送信できることになります。ただし、追加データのみアラートさせる方法が思いつかないため、すべてのデータをアラートさせます(メール送信しない地域がある場合、それは除く)。でも、それだとデータが追加された時だけでなく、常にメール送信されてしまいます。それを回避するために「前回と同じアラートは無視する」設定を利用します。
前回と同じアラートは無視する
繰り返しになりますが、リアルタイムアラートは、チャートアイテムのアラートの発生有無を、指定した間隔で「繰り返し」監視する機能です。そのため、処理が実行されるタイミングで、新しく追加されたデータや更新されたデータがなくても、以前と同じデータでアラートが発生していれば、何度でも反応します。「メール送信する」がオンであれば、何度でもメール送信が実行されます。これだとユースケース(データが追加された時にメール送信)を満たせないため、「前回と同じアラートは無視する」をオンにして、繰り返しメール送信が実行されないようにします。
今回は使わない:追加データのアラートを監視する
設定画面を見ると「追加データのアラートを監視する」という、すごくユースケースを満たせそうな設定がありますが、今回は使いません。
マニュアルを見ると以下のように記載されています。最終行「以降」である点が要注意です。最終行が含まれるという意味です。
最終行でアラートが発生していれば、新しく追加されたデータや更新されたデータがなくても、何度でもメール送信が実行されます。これだとユースケースを満たせず、やっぱり「前回と同じアラートは無視する」設定を同時にオンにする必要があります。
既存データの変更に反応しても良い、または既存データは変更しない、などの運用が許容される場合、この設定は不要です。今回は許容される想定で進めます。
仮に「追加データのアラートを監視する」をオンにする場合は以下の点にも注意してください。
行項目に日付型または日時型の項目を1つだけ配置する
その項目は昇順ソートする
日付または日時の値を見てデータが追加されたかを判断するため、日付型または日時型の項目が必ず1つ必要です。こういったデータがなく、IDで判断してほしい、といった使い方はできません。
今回はレベルごとに設定しない:メール送信
リアルタイムアラートの「メール設定」画面を開くと、アラートのレベルごとにメール送信先やメール本文を変更できることがわかります。が、複数のアラートが同時に発生しても、最も優先度の高いアラートに対応するメール送信しか実行されないため、関東と関西のデータが同時に追加された場合、どちらかの担当者にしかメール送信されない事態が発生します。今回はレベルごとに設定せず、デフォルトのみ使います。
メール送信先ごとにボードを分ける
上記の通り、メール送信におけるレベル設定ではユースケース(メール送信先の振り分け)を実現できないため、メール送信先ごとにボードを分けてしまいます。例えば、地域が関東であれば必ずアラートが発生するチャートを配置したボードと、地域が関西であれば必ずアラートが発生するチャートを配置したボードを別に作り、それぞれにリアルタイムアラートの設定をします。それらは独立して動作するため、関東と関西のデータが同時に追加された場合も対応できます。
主要機能と戦略まとめ
まとめると以下の通りです。実現できるイメージが湧いたでしょうか?
リアルタイムアラートを使う
前回と同じアラートは無視する
メール送信先ごとにボードを分ける
メーリングリスト作成
地域ごとのメーリングリストを作成する必要があります。地域ごとの担当者が1名であっても、その担当者のメールアドレスだけが含まれたメーリングリストが必要です。メーリングリストは「システム設定」画面ー「通知」ー「メーリングリスト」で設定します。
ボード作成
地域ごとのボードを作成します。例えば、関東や関西などの名前でボードを作成します。名前は何でも良いです。
リアルタイムアラート監視用のボードでありユーザーに公開する必要がないため、見た目の設定は気にしなくて大丈夫です。
ボードにはリアルタイムアラート監視対象のチャートを1つだけ配置するイメージです。後で作成します。
リアルタイムアラート
リアルタイムアラートの設定をします。1分間隔で監視するようにします。
「ボード管理」画面の「リアルタイムアラート」タブ
リアルタイムアラートを有効にする:オン
「基本設定」タブ
実行ユーザーを指定
実行間隔
正常終了時:60秒
アラートアクション発生後:0分
「監視アイテム設定」タブ
作成したチャートを監視対象にする
「アラートアクション設定」タブ
前回と同じアラートは無視する:オン
メール送信する:オン
メール設定
デフォルト設定のみ
宛先MLを選択する
件名とメール本文を編集する
データソース定義の作成
チャート用のデータソース定義を作成します。常にアラートが発生するようにします。
行列集計項目
行列集計項目を以下のように配置します。
「アラートアクション設定」の「前回と同じアラートは無視する」は行列項目の値、および集計値が同じ場合はアラートを無視するため、データ追加時に行列項目の値と集計値重が同じにならないように注意する必要があります。例えば、「日時」「地域」「店舗」の値が同じ、かつ「売上」が0の場合、この条件に当てはまります。無理やりな例なので、今回は対策しないことにします。
行項目:日時
列項目:地域、店舗
集計項目:売上
参考:ユニークな集計値
「日時」「地域」「店舗」の値が同じ、かつ「売上」が0の場合の対策として、「カスタム項目」を「集計項目」に追加する方法が考えられます。
「カスタム項目」の「データ型」は「数値」、「計算式」は「1」とすれば、「売上」の集計値が同じ場合でも、「カスタム項目」の集計値は異なるため、アラートは無視されません。
アラート設定
関東のボードを例に考えます。
「行列項目」に「地域」を配置して「値」を「関東」にしてください。
「すべての集計項目をアラート対象とする」をオンにしてください。
これで関東であれば必ずアラートします。
検索設定
検索設定は任意ですが、不要なデータを絞り込んで処理を軽くします。
例えば、関東のボードであれば、関東以外のデータは不要であるため、「地域」が「関東」と「等しい」、という条件を追加します。同様に、関西のボードであれば、「地域」が「関西」と「等しい」、という条件を追加します。
もっとデータを軽くする場合や、一定期間より古いデータに反応して欲しくない場合は、その条件も追加します。例えば、本日のデータだけに絞る場合など。今回は省略します。
チャート作成
先程作成したデータソース定義を用いてチャートを作成します。チャートの種類は何でも良いですが、集計表が動作確認しやすいです。このチャートは(というか、このボードは)ユーザーに公開する必要がないため、配置場所や大きさ、見た目は気にしなくて大丈夫です。
地域ごとのボードを作成
以上で、特定の地域のボード作成が完成しました!
あとは他の地域のボードも作成するだけです。
動作確認
MotionBoardの明細表アイテムからデータ追加して、メール送信されるか動作確認してみましょう。動作確認用の適当なボードを作成してください。
データソース定義の設定で入力を許可してください(「データソースエディタ」画面ー「入力」ボタンー「データベース入力」画面で「項目値の編集を許可する」と「追加を許可する」をオン)。「アラート設定」と「検索設定」は不要です。
明細表アイテムを作成してボードに配置してください。
「新規レコード作成」ボタンを押して、以下のように関東と関西のデータを入力してみます。「データ更新」ボタンを押すと・・・関東と関西の担当者の両方にメールが来ましたか?
最後に:本記事の執筆の動機
以前書いた以下の記事が一部の方のお役に立っていたのを発見して嬉しかったのと、弊社ユーザーコミュニティnestにおいて、今回のお困りごとに遭遇していたユーザー様がいたため、他の方も困っているかもしれないと思ったためです。
開発者であってもユーザーコミュニティに積極的に参加して、ユーザー様と一緒に開発できるのが弊社の魅力であると、最後に宣伝しておきます。