この記事は、【Sisenseはじめの一歩】の第3回の記事です。 目次はこちら。 

 

こんにちは、Sato-Gです。
「Sisenseはじめの一歩」第2回では、ElastiCubeをWeb Data Designerで作成した。Data Designerはもっと細かいこともできるようなので、そのままData Designerでやってもいいのだが、あえて今回はDesktopで動作するElastiCube Managerで引き続き作業を行ってみる。

ElastiCube関連ファイル

ElastiCube関連ファイルは以下の場所にある。
C:\ProgramData\Sisense\PrismServer\ElastiCubeData


このフォルダ内にElastiCube単位でフォルダにまとめられていて、その中にあるElastiCube.ecubeというファイルが実体だ。
尚、CSVデータは以下のフォルダに格納されている。
C:\ProgramData\Sisense\PrismServer\FileUploads\storage

ElastiCube Managerを起動する

WindowsのスタートメニューからElastiCube Managerを開く。


ElastiCube Managerが起動したら「Servers」メニューから「Local」→「foodmart」と進み「Edit」アイコンを選択することで、ElastiCubeの編集が可能となる。
「foodmart」が開かれると、以下の画面が現れる。


この画面ではテーブルがアイコン表示となっているため、テーブルのアイコンをダブルクリックすると、各テーブルのフィールドが現れ、リレーションシップも表示される。

データの追加

メニューから⊕Add Dataを選択し、CSV Filesを指定する。


まだ取り込んでいない「顧客.csv」「地域.csv」の2つのCSVファイルを追加する。まずは「顧客.csv」。


データの設定ダイアログが表示される。このダイアログの設定は以下のとおり
・delimiter→CSVのためComma(,)
・Forst Row Contains Field names(1行目をヘッダとするか)→チェック
・Advanced Optionsでは詳細設定ができる。
・Preview →データのプレビューを表示する
※日付のフォーマットなどに留意する
・Culture →Japanese(Japan)を指定する。これを指定することで、日付も形式はyyyy/mm/ddに変更される


設定が完了し、[Add]ボタンをクリックすると、「顧客.csv」テーブルが追加される。
さらに「地域.csv」データも「顧客.csv」と同様に設定を行い、追加する。

ビルド


「Build」アイコンをクリックし、
・Taget Server  →Local
・Build Optons  →Build Schema Changes
・Build Logging  →Normal
・More Settings  →Sample Data (Number of rows=1000)
と設定して[Build]を実行する。

データモデルの編集

・テーブル名の変更
まず、テーブル名を変更する。テーブルのタイトルバーをクリックすると、上部にメニューアイコンが現れる。
今回はタイトルバーをダブルクリックしてテーブル名を変更する。

「顧客.csv」→「Dim_顧客」
「地域.csv」→「Dim_地域」

・インポートする項目の設定
テーブルのタイトルバーを右クリックするとコンテキストメニューが表示されるので、「Uncheck All」を選択し、一旦すべてのフィールドのチェックを外す。


すべてのフィールドのチェックが外れたので、「地域ID」「売上市区」「売上都道府県」の3つのフィールドをそれぞれ右クリックし、「Import」の設定を行う。
この際、データ型(Type)は正しく設定しておく必要がある。


・リレーションシップの設定


「Dim_顧客」テーブルの「顧客ID」の右に「MERGE」の表示が現れるので、マウスでクリックし、「Fact_売上」テーブルの「顧客ID」にドラッグすると下記のように線で繋がる。


もし誤って繋いでしまった時は、下記のように繋いだ線の●をクリックすると「ゴミ箱」アイコンが出てくるので、クリックして削除し、再度結合し直す。


これで、取り込むデータ全てのデータモデルが一旦完成した。ファクトテーブルである「Fact_売上」を中心し、3系統のディメンションが繋がるスタースキーマモデルになっている。

カスタムフィールド

・「粗利」の追加


Sisenseでは、テーブル内に「カスタムフィールド」という、計算式で作成するフィールドを作成することができる。
テーブルのタイトルバーをクリックし、メニューを表示したら[+]アイコンをクリックすると「カスタムフィールド」が追加される。カスタムフィールドの鉛筆アイコンをクリックし、編集メニューを表示し、
・タイトル  →「粗利」
・Type    →「Int」
と設定したら、「Edit」のリンクをクリックして、数式エディタを開く。


「Functions」の「Fields」からフィールドを選択しながら、[売上金額] – [原価]と入力したら、「SQL」ボタンで数式のチェックを行う。エラーがなければ、「プレビュー」ボタンで結果をプレビューする。


エディタの下にプレビューが表示される。ここでは「粗利」というフィールドが追加され、「売上金額」から「原価」を引いた金額が正しく表示されていることを確認できる。

・「購入時年齢」の追加
「Dim_顧客」テーブルには「生年月日」フィールドがあるため、年齢を求めることができるが、いつを基準に年齢を計算すればよいだろうか?現在の年齢という視点もあるだろうが、顧客にとっては売上があった時点で年齢が異なるため、売上日と生年月日から「購入時年齢」を求めたい。


「Fact_売上」に上と同じ方法で「購入時年齢」というカスタムフィールドを追加する。
数式では
YearDiff([売上日], Lookup([Dim_顧客],[生年月日],[顧客ID],[顧客ID]))
と入力する。
YearDiffとLookupという2つの関数が使われているが、関数の使い方はそれぞれ以下のとおりである。

YearDiff(end,start)
startからendまで何年かを求める。ここでは生年月日から売上日までの年数を算出する。

LOOKUP(remote_table,remote_result_column,current_match_column, remote_match_column)
ExcelのVLOOKUP関数のようにキーフィールドを使用して別テーブルから参照したい値を取得する。ここではDim_顧客テーブルから、顧客IDをキーとして、生年月日を取得するよう設定している。顧客IDが2つ指定されているが、最初の顧客IDはFact_売上の顧客IDで、後の顧客IDはDim_顧客の顧客IDである。
数式の結果は下記のようにプレビューされる。

最後に「ビルド」を行い全レコードをインポートし、以下のように完成すればOK。ビルドを行えば、ElastiCubeの変更は保存されるので、ElastiCube Managerはクローズしてもよい。

まとめ

今回、ElastiCube Managerで行った内容はWeb Data Designerでも行える。というより、大半の機能はWeb Data Designerでも行えるので、ElastiCube Managerを使う必要はないのかもしれない。ただし、ElastiCube Managerでしかサポートされていないコネクタ(特にオンプレ系)があるので、ElastiCube Managerの使用方法は覚えておく必要はありそうだ。

第2回、第3回と簡単なデータモデリングをご紹介してきた。ここで使用したデータは非常に扱いやすいデータにしてあるので、実際の場面ではこう簡単にはいかない。もっと数式を使用してカスタムフィールドを作成したり、SQLを使用してカスタムテーブルを作成する必要も出てくるだろう。ただ、Sisenseは複雑なデータモデルでも比較的簡単に構成できることは、ご覧いただいた通りだ。
次回は、いよいよダッシュボードの作成をご紹介したいと思っているので、乞うご期待。

この記事が気に入ったら
いいね ! しよう