2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MotionBoardのモデル機能のUTBとMDLの違いについて調査してみた

Last updated at Posted at 2021-05-17

最初に

MotionBoardは綺麗でわかりやすいグラフや画面を作ることができます。

綺麗な上に、動いたりもします。

気になる人は下記リンクをクリックしてください。体験デモもできます。

MotionBoard 体験デモについて(公式HPより)

【MotionBoardとは】

様々なデータソースからデータをあつめ、1つの画面上で統合するMotionBoard。

クラウドサービスとの接続もでき、チャットツール送信もできるのでとてもおもしろいです。

※キャプチャはウイングアーク1st社のホームページより抜粋

ウイングアーク1st株式会社 MotionBoard

今回は前回の記事である【4つの結合方法】MotionBoardのモデル機能を解説【難易度:中】にて、MotionBoard Cloudでデータストレージの中に発生する、[UTB_モデル名]と[MDL_モデル名]ってどう違うんだろ、と自分の中で思ってしまったので、それの調査・解説記事を書こうと思います。

先に結論を記述します。
MotionBoardオンプレならば違いがあり、MotionBoard Cloudならば違いがないという認識でOKです。
定義に違いはありますが、実際に入っているデータについては違いがないです。

詳細について、下記に記述をしていきます。

モデルとは

モデルはMotionBoardでデータをJOINやUNIONできる機能です。

ダッシュボードの中でデータを加工するよりも前の段階で、データを加工して、データベースに貯めておくことができます。
そのため、ダッシュボードを作成するときには「加工済みデータ」が使えるので、ボード作成が容易になります。
サクセスコンテンツサイトのデータ運用の実例の項にちょうど良い図がありました。

ちょっと縦横比が歪んでますが💦
こちらの例ではExcelやCSVをMotionBoardの中に取り込んでおいて、マスタを結合しながら、データストレージという領域にデータを貯めています。
image.png

今回はこのデータストレージのところですね。
ここのデータの貯め方のお話です。
image.png

UTBとMDLがある

MotionBoard Cloudですと、モデルデータの格納先はデータストレージになります。
そのデータストレージをのぞいてみますと、
image.png

というように、[UTB_モデル名]と[MDL_モデル名]があるのですね。
中のデータを見てみても、**違いある?**って感じです。
その違いについて、解説していきますね。

ここからはオンプレMotionBoardとMotionBoard Cloudのそれぞれについて記載します。
ご自身の使用しているMotionBoardがどちらかを確認しつつ、読んでみてください。

オンプレMotionBoardのモデル機能

オンプレMotionBoardではモデルで作成したデータを格納する場所が3つあり、選ぶことができます。
マニュアルにも記載がございますが、

インメモリOLAPクラスター
Dr.Sum
ファイルコネクター

から選択することが可能です。
ここでは一番機能の多い(し、汎用性もある)Dr.Sumについて見ていきます。

Dr.Sumへのデータ格納ではデータの格納パターンを2つから選択できます。

マニュアルはこちら

[テーブル方式]と[ビュー方式]があり、テーブル方式は大福帳の形で結合済みのデータがDr.Sumに格納されます。
ビュー方式はDr.Sumのビューの機能を使い、データを集計するタイミングで結合されます。
image.png

テーブル方式

設定画面から確認をしてみましょう。

まずは準備として、MotionBoardとDr.Sumの設定をします。
細かなところになるので、折りたたみの中で説明しますね。

MotionBoardオンプレのモデル設定について
とっても大事な注意点があるんです。 **MotionBoardのDr.Sumへの書き込み設定をONにしましょう。** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/54ace721-34cb-9919-3abd-0b8d8829ee48.png)

image.png

この設定をしていなかったので、テーブルはできるのにテーブルにデータが入らないという現象にひっかかりました。

あとはモデルの作成です。

格納先をDr.Sumに指定して、JOINを指定します。
そしてまずは[テーブル方式]を選択します。
image.png

結合定義を組みます。
image.png

あとはここの実行ユーザーも注意です。
image.png

モデル実行できるユーザを選びましょう。

準備ができたらリロードボタンを実行します。
image.png

これで、モデル機能がつかえるようになりました。

まずは[テーブル方式]を試してみます。
[テーブル方式]を選択した、結合定義がこちらです。
image.png
image.png

モデルを実行し、Dr.Sumを見てみると、

テーブル:UTB_売上ビュー
ビュー:MDL_売上ビュー

ができました。

上の図にもあるように、UTBの一番後ろの列にはTRANSACTION IDというものがあります。
こちらはデータインポート時に内部的に必要な情報のようで、無視して問題ないようです。

さて、それぞれのCREATE文を見てみましょう。

👇 UTB_売上ビューのCREATE文 👇

CREATE TABLE UTB_売上ビュー (
  年月日コード NUMERIC,
   NUMERIC,
  顧客コード NUMERIC,
  商品コード NUMERIC,
  店舗コード NUMERIC,
  担当コード NUMERIC,
  支払方法コード NUMERIC,
  クレジット会社コード NUMERIC,
  売上数量 NUMERIC,
  売上金額 NUMERIC,
  原価 NUMERIC,
  値引き額 NUMERIC,
  カードポイント NUMERIC,
  動機コード NUMERIC,
  仕入先コード NUMERIC,
  ブロック名 VARCHAR,
  支社名 VARCHAR,
  店舗名称 VARCHAR,
  担当者名 VARCHAR,
  TRANSACTION_ID VARCHAR);

👇 MDL_売上ビューのCREATE文 👇

CREATE VIEW MDL_売上ビュー (年月日コード,,顧客コード,商品コード,店舗コード,担当コード,支払方法コード,クレジット会社コード,売上数量,売上金額,原価,値引き額,カードポイント,動機コード,仕入先コード,ブロック名,支社名,店舗名称,担当者名)
AS SELECT SUB10000.年月日コード AS 年月日コード,SUB10000. AS ,SUB10000.顧客コード AS 顧客コード,SUB10000.商品コード AS 商品コード,SUB10000.店舗コード AS 店舗コード,SUB10000.担当コード AS担当コード,SUB10000.支払方法コード AS 支払方法コード,SUB10000.クレジット会社コード AS クレジット会社コード,SUB10000.売上数量 AS 売上数量,SUB10000.売上金額 AS 売上金額,SUB10000.原価 AS 原価,SUB10000.値引き額 AS 値引き額,SUB10000.カードポイント AS カードポイント,SUB10000.動機コード AS 動機コード,SUB10000.仕入先コード AS 仕入先コード,SUB10000.ブロック名 AS ブロック名,SUB10000.支社名 AS 支社名,SUB10000.店舗名称 AS 店舗名称,SUB10000.担当者名 AS 担当者名
FROM UTB_売上ビュー SUB10000;

なるほど。MDL_売上ビューはただUTBのデータを読み込んでいるだけで、結合などは行っていませんね。
[テーブル方式]はMotionBoardで指定するときはどちらを選んでも変わらないです。

ビュー方式

次に[ビュー方式]の構造を確認します。

先ほど[テーブル方式]にしたところを[ビュー方式]に変更します。
image.png

テーブルとビューになりました。
image.png
image.png

テーブルのそれぞれのCREATE文がこちら
モデル定義で指定した項目のみがテーブル化されています。
CREATE TABLE MDL_売上データ (
  店舗コード NUMERIC,
  担当コード NUMERIC,
  年月日コード NUMERIC,
   NUMERIC,
  顧客コード NUMERIC,
  商品コード NUMERIC,
  支払方法コード NUMERIC,
  クレジット会社コード NUMERIC,
  売上数量 NUMERIC,
  売上金額 NUMERIC,
  原価 NUMERIC,
  値引き額 NUMERIC,
  カードポイント NUMERIC,
  動機コード NUMERIC,
  仕入先コード NUMERIC,
  TRANSACTION_ID VARCHAR);
CREATE TABLE MDL_店舗マスタ (
  店舗コード NUMERIC NOT NULL UNIQUE,
  ブロック名 VARCHAR,
  支社名 VARCHAR,
  店舗名称 VARCHAR);
CREATE TABLE MDL_担当者マスタ (
  担当コード NUMERIC NOT NULL UNIQUE,
  担当者名 VARCHAR);

そしてDr.Sumのビューに入っているMDL_売上ビューの定義がこちら。

CREATE VIEW MDL_売上ビュー (
  年月日コード,,顧客コード,商品コード,店舗コード,担当コード,支払方法コード,クレジット会社コード,売上数量,売上金額,原価,値引き額,カードポイント,動機コード,仕入先コード,ブロック名,支社名,店舗名称,担当者名)
AS
  SELECT
 FCT.年月日コード,FCT.,FCT.顧客コード,FCT.商品コード,FCT.店舗コード,FCT.担当コード,FCT.支払方法コード,FCT.クレジット会社コード,FCT.売上数量,FCT.売上金額,FCT.原価,FCT.値引き額,FCT.カードポイント,FCT.動機コード,FCT.仕入先コード,MST0.ブロック名,MST0.支社名,MST0.店舗名称,MST1.担当者名FROM MDL_売上データ FCT
  LEFT OUTER JOIN MDL_店舗マスタ MST0 ON FCT.店舗コード = MST0.店舗コード
  LEFT OUTER JOIN MDL_担当者マスタ MST1 ON FCT.担当コード = MST1.担当コード;

JOIN句が入っております。
つまり、MotionBoardで画面描画をするタイミングでテーブル同士が結合されます。

どう使い分けるのか

過去の売上データを最新のマスタで参照したいのかしたくないのか、によって切り替えると良いです。
例えば、今2021年です。
売上データには2019年のデータも入っています。
2019年の担当者コード001はAさんでしたが、2021年の担当者コード001はBさんになっていました。
担当者マスタは常に最新のデータが入っている場合がほとんどです。そのときは
[テーブル形式]ではデータを結合させて、取り込んでいるので2019年の担当者はAさん、
[ビュー形式]ではデータを閲覧するタイミングで結合させるので、2019年のデータも最新マスタで紐づけてBさんと表示されます。

マスタを年代別に管理したり、いろいろな手法があるのですが、この場合なら[テーブル形式]で取り込むのが良いでしょう。

MotionBoard Cloudのモデル機能

さて、ようやくここへ来ました。
冒頭に書きましたようにオンプレのモデルとクラウドのモデルは機能が少し異なります。
異なる箇所は2点。

ひとつはデータの格納先がDataStorageのみであること
もうひとつは格納方法が[テーブル方式]のみであること、です。

ここで冒頭の画像に戻ります。
image.png

なるほど、選択できる要素がない。
モデル設定画面もオンプレより情報が少ないですね。
image.png

オンプレとクラウドの機能差異マニュアルを見てみると、

モデルのデータ格納先は、「DataStorage」のみ選択できます(ファイルコネクターやDr.Sumは選択肢として表示されません)。ただし、インメモリOLAPのオプションがある場合は、インメモリテーブルも格納先として選択できます。

と記載がありました。

[テーブル形式]の[MDL_モデル名]はUTBのテーブルをただ参照しているだけのビューでした。

つまり、MotionBoard Cloudにおいて、UTBもMDLもデータの中身は変わらんという結論になります。

ようやく納得がいきました。
オンプレの[テーブル形式]を把握しておかないと、ここの理解までたどり着きませんでした。

さいごに

いかがだったでしょうか。
マニアックな内容になってしまいました。

MotionBoardユーザーが、もしUTBとMDLって何が違うの? って疑問に持たれたときに、この記事にたどり着いてもらえると幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?