Dr.Sum Data Funnelとは?
Dr.Sum Data Funnelとは、継続的に発生する時系列データをリアルタイムに収集、加工するためのツールです。収集した時系列データを、MotionBoardなどのBIツールで集計および分析するために適したフォーマットに加工し、Dr.Sumへの投入までを行なうことができます。
IoT機器や工業用デバイスなどから連携されるデータは粒度が細かく、かつ高頻度で件数も多くなる傾向があります。
Dr.Sumではテーブルにインポートされたデータを対象としてDS Scriptなどでデータの加工が可能ですが、データの参照や登録/更新のタイミングが競合するとそれぞれ待ちが発生することもあり、同一テーブルをBIツールから参照しながら加工を都度繰り返すのは難易度が高いです。
Data Funnelを使えば、Dr.Sumへデータを投入する前段階でデータの加工を行ない、分析に必要なデータだけを効率よくDr.Sumへ投入することができます。
本記事では、Data Funnelの利用が有効であるシチュエーションの具体例を提示したあと、Data Funnelを使った加工の方法を解説します。
Data Funnelが有効であるシチュエーション
「IoT」という言葉が世に出てきて久しいですが、IoT機器のデータを使った分析や現場改善が一部の先進的な企業を除いてあまり進んでいないのは、実際にデータを活用するまでに次のような課題があるためであると考えています。
IoTデータが取れる状態にはなっているが、蓄積する仕組みが無い
IoTデータを取って蓄積しても、そのまま可視化できる形式になっていない
「蓄積する仕組みが無い」についてはそのままなのでわかりやすいと思います。
それでは、「可視化できる形式になっていない」とはどういうことでしょうか?
以下はとあるデバイスから出力されるデータの一例です。
TIMESTAMP,ACCELX,ACCELY,ACCELZ,AMBIENTTEMP,GYROX,GYROY,GYROZ,HUMIDITY,LIGHT,MAGX,MAGY,MAGZ,OBJECTTEMP,ALTITUDE,PRESSURE
2024/06/14 15:46:55.188348,0.03,0.01,1.04,24.25,-2.72,1.84,1.73,54.92027,379,56.06,-29.23,128.62,21.19,-6.202476,985.22
2024/06/14 15:46:55.709866,0.03,0.01,1.04,24.25,-2.72,1.84,1.73,54.92027,376,56.06,-29.23,128.62,21.19,-6.202476,985.22
2024/06/14 15:47:01.235353,0.03,0.01,1.04,24.25,-2.72,1.84,1.73,54.92027,381,56.06,-29.23,128.62,21.19,-6.202476,985.22
2024/06/14 15:47:03.085963,0.03,0.01,1.04,24.25,-2.72,1.84,1.73,54.92027,1,56.06,-29.23,128.62,21.19,-6.202476,985.22
湿度(HUMIDITY)、照度(LIGHT)、高度(ALTITUDE)、気圧(PRESSURE)などの情報があることがわかります。時刻データ(TIMESTAMP)もありますね。
それでは、いざこのデータを用いてデータ分析のための可視化を考えていくと、すぐに次の点に気づきます。
TIMESTAMP列に注目すると、レコードごとの時刻の粒度が細かいです。1レコード目と2レコード目の時刻の差はおよそ0.5秒ですが、このデータを時系列順に並べて変化を観察するとして、0.5秒前の状態を確認したいシチュエーションはどの程度あるでしょうか。だいたいの場合において、もっとゆっくりとしたスパンで状態の変化を確認したいのではないでしょうか。
また、時刻が細かいということは、その分レコード数も増えがちになります。10分間のデータを使う場合に、1秒に1レコードであれば600レコードですが、0.1秒おきに1レコードであれば6,000レコードにもなります。MotionBoardには時刻データを丸める機能がある(日付グループ項目など)があるとはいえ、あまりにも多すぎるレコードデータに対して実施するのは賢明ではありません。可能な限り最少のレコードを分析対象にしたいところですよね。
引き続きTIMESTAMPに注目すると、2レコード目と3レコード目の間が5秒程度空いていることに気づきます。これは何が原因でしょうか?
可能性はいろいろあるのですが、一つにはIoTデバイス特有の問題かもしれません。
私たちが普段使うインターネットや業務アプリの通信は、通信プロトコル(データ通信時の約束事)においてデータの欠損や誤りが発生しないように工夫されています。仕事で使うデータのやりとりで途中のデータが抜けたりしたら大問題ですよね。
一方で、IoTデバイスのような比較的小さく処理量の多い端末は、いかに省電力で効率よくデータ送信ができるかが重視されます。そのため、IoTデバイスからのデータ送信では送信途中で欠損したデータを再送信する仕組みが無いこともあります。
意味が無いとまでは言いすぎですが、データが抜けているまま放置すると、ほかの時系列データと結合して複合的な軸で分析をしようとしても上手くいかないかもしれません。
欠損してしまったものは仕方無いにしても、データは補間しておきたいところです。
Data Funnelの持つ機能
Data Funnelは、これらIoTデータの分析にかかる課題を解決できる機能を備えています。
Funnelが持つ機能の一覧
時刻正規化やレコードの補間以外にも、IoTデバイスからのデータ送信ゆえのノイズによる異常値の除去や、独自の項目を追加することも可能です。
ここからは、Data Funnelの実際の画面を確認していきましょう。
時刻関連項目の設定
時刻の正規化は[時刻関連項目の設定]で設定します。
時刻関連項目の設定
[時刻関連項目の設定]では①どの時刻データ項目に基づいて、②どの単位で丸めて、丸めた時刻を③どういった項目として新たに定義するかを設定します。画像では、次のように設定しています。
①どの時刻データ項目に基づく?
[分析用日時項目]としてTIMESTAMPを設定しています。
なお、Data FunnelではARRIVEDTIMEという時刻項目を標準で用意しています。ARRIVEDTIMEとは、データがData Funnelサーバーに到達した際に自動的に付与されるタイムスタンプ項目です。IoTデバイスがデータを生成した時刻とはズレることになりますが、もし元データに時刻データが無い場合は、時系列の分析に有効利用できます。
②どの単位で丸める?
[丸め項目]で設定します。画像では1秒単位で丸めるようにしていますが、もちろん秒以外にもミリ秒や分、時間単位などを選択できます。
③どういった項目として新たに定義する?
ここではUPDATETIMEとしています。BIツールで分析する際に、時系列項目としてこの項目を使うことで、丸められた時刻ごとの時系列を可視化することができます。
レコードの補間
データの補間は[レコードの補間]で設定します。
レコードの補間
[レコードの補間]では①どの時刻データ項目に基づいて、②どの項目に対し、③どういったロジックで補間するかを設定します。画像では、次のように設定しています。
①どの時刻データ項目に基づく?
これは、[分析用日時項目]で設定した項目が使用されます。今回はUPDATETIMEですね。
②どの項目に対して?
補間する項目は複数設定できます。
画像ではLIGHT項目に対して補間を行なうように設定しています。
③どういったロジックで補間する?
補間する際のロジックを設定します。
画像では「前回の分析フレームの平均値」を選択しています。そのほか、中央値や最頻値、前回値や定数(初期値)や前々回値と前回値からの線形補間などを選択できます。
Data Funnelで加工した結果
このような設定を行なうと、冒頭で提示したデータを、次のようなデータに加工してDr.Sumに投入することができます。
UPDATETIME,LIGHT,ARRIVEDTIME,TOPIC,TIMESTAMP,ACCELX,ACCELY,ACCELZ,AMBIENTTEMP,GYROX,GYROY,GYROZ,HUMIDITY,MAGX,MAGY,MAGZ,OBJECTTEMP,ALTITUDE,PRESSURE,
"2024/06/14 15:46:55.000000","379","2024/06/15 22:24:12.621257","TEST","2024/06/14 15:46:55.188348","0.03","0.01","1.04","24.25","-2.72","1.84","1.73","54.92027","56.06","-29.23","128.62","21.19","-6.202476","985.22"
"2024/06/14 15:46:55.000000","376","2024/06/15 22:24:12.621257","TEST","2024/06/14 15:46:55.709866","0.03","0.01","1.04","24.25","-2.72","1.84","1.73","54.92027","56.06","-29.23","128.62","21.19","-6.202476","985.22"
"2024/06/14 15:46:56.000000","377","","","2024/06/14 15:46:56.000000","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"
"2024/06/14 15:46:57.000000","377","","","2024/06/14 15:46:57.000000","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"
"2024/06/14 15:46:58.000000","377","","","2024/06/14 15:46:58.000000","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"
"2024/06/14 15:46:59.000000","377","","","2024/06/14 15:46:59.000000","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"
"2024/06/14 15:47:00.000000","377","","","2024/06/14 15:47:00.000000","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"
"2024/06/14 15:47:01.000000","381","2024/06/15 22:24:12.621257","TEST","2024/06/14 15:47:01.235353","0.03","0.01","1.04","24.25","-2.72","1.84","1.73","54.92027","56.06","-29.23","128.62","21.19","-6.202476","985.22"
"2024/06/14 15:47:02.000000","381","","","2024/06/14 15:47:02.000000","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"
"2024/06/14 15:47:03.000000","1","2024/06/15 22:24:12.621257","TEST","2024/06/14 15:47:03.085963","0.03","0.01","1.04","24.25","-2.72","1.84","1.73","54.92027","56.06","-29.23","128.62","21.19","-6.202476","985.22"
※わかりやすいようにUPDATETIME列とLIGHT列を左端に移動しました。
TIMESTAMPを元に、UPDATETIMEが1秒単位で丸められていることがわかります。たとえば、1レコード目と2レコード目のUPDATETIMEはともに”2024/06/14 15:46:55.000000
“です。
さらに、LIGHT項目の値を見ると、1レコード目と2レコード目の値がそれぞれ379、376だったため、3レコード目から7レコード目に関して1秒ごとに補間が行なわれ、その際は379と376の切り捨て平均値である377が値として補間されているのがわかります。
おわりに
このように、Dr.Sum Data Funnelを使うと、IoTデータの分析でよく躓きがちな課題に対して必要となる加工を、ローコードで行なうことができ、データ分析を圧倒的に加速させることが可能となります。
皆様もぜひ、Dr.Sum Data Funnelを使ってよきデータ分析ライフをお過ごしください。