記事
· 2024年4月23日 6m read

IRIS BI開発者向けチュートリアルを試してみる(6)

はじめに

IRIS BIチュートリアル試してみたシリーズの6回目です。
今回からは、全6ページのうちの4ページ目「キューブ定義の拡張」に入っていきます。
前回まではメジャーやディメンジョンなど、基本的なキューブの構成要素を作成しましたが、さらにキューブを使いやすくするための機能について学んでいきます。
では、早速はじめましょう。

階層へのレベルの追加

前回までの作業で作成した HomeD ディメンジョンに階層となるレベルを追加します。3回目の記事で BirthD ディメンジョンで体験したドリルダウン・ドリルアップの機能を使えるようにするものです。
キューブを変更しますので、アーキテクト画面に行き、Tutorial キューブを開きます。開いたら、画面左側のクラス・ビューワで HomeCity を展開します。
 
HomeCity の配下にある PostalCode を追加します。HomeD ディメンジョンの H1 階層の上にドラッグ&ドロップします。  
 
そうしますと、PostalCode がレベルとして追加されます。「level 2」となっていますね。

       
レベル名を ZIP Code に変更します。詳細ペインのところで書き換えてください。
 
書き換えたら、キューブをコンパイルします。画面上部の [コンパイル] ボタンから実行します。
コンパイルが完了したら、続いてビルドを行います。同様に画面上部の [ビルド] ボタンをクリックすると、以下のダイアログが表示されます。
 
ビルド・オプションで「選択構築」が選ばれ、ディメンジョンで [HomeD].[H1].[ZIP Code] が選ばれた状態になっています。
新しい列を追加するか、既存の列を変更した場合には、このように「選択構築」のプロンプトが表示されます。このまま [ビルド] をクリックしてビルドします。

エラー無くビルドが完了したらアナライザ画面を開いて確認します。HomeD ディメンジョンを展開すると ZIP Code レベルが追加されています。
   
では、この ZIP Code を [列] に追加してピボットテーブルを作成してみましょう。

 
※注意:サンプルデータはランダムに作成されるため、こちらの画面表示とみなさまの実行結果は一致しないことがあります。
郵便番号ごとの件数が表示されました。ですが、32006 や 34577 などは複数件表示されています。本来なら1件に集約されてほしいところですが。
このように、レベルに同一の値が複数件表示されるのは、以下の2つのパターンが考えられます。

  • レベル名が一意でないレベル・プロパティに基づいている場合
  • レベルに親レベルがある場合

1つめは、以前の記事で採り上げた同姓同名の医師のようなケースです。2つめは、レベルの上下関係が正しくないケースです。
この場合は2つめの方に該当しそうですね。基のデータを確認してみましょう。別ウィンドウでSQL画面を開き、以下のSQLコマンドを実行します。

SELECT Name, PostalCode
FROM BI_Study.City
ORDER BY PostalCode

以下のような結果が返ってきました。どうやら PostalCode → Name という階層になっているようです。日本では市区町村 → 郵便番号という階層が一般的なので、ちょっと違和感がありますが。。
 
ともかく、階層の上下関係を修正する必要があります。再びアーキテクト画面に戻り、ZIP Code レベルの右側にある上矢印アイコンをクリックします。

 
そうすると ZIP Code が level 1に上がり、City が level 2 に下がります。

 
この状態で、再びキューブをコンパイル、ビルドします。ビルドが完了したら、再びアナライザ画面で確認してみましょう。

 
ZIP Code と City の上下が入れ替わりましたね。再び ZIP Code を [列] にドラッグ&ドロップします。
 
今度は正しく表示されています。ドリルダウンできるかも確認しましょう。この状態で 34577 のところをダブルクリックします。
 
ZIP Code=34577 に属する市(Cypress、Magnolia、Pine)にドリルダウンできました。正しく機能しているようですね。

時間レベルの追加

続いては、日時に関するレベルの追加です。クラス・ビューワを見ると、患者の出生日時に関するフィールドは4つ存在します。
 
今回は、この中から BirthDateTimeStamp を使用します。1つの項目で出生の年月日と時刻の両方の情報を持っているためです。

アーキテクト画面の [要素を追加] リンクから BirthD ディメンジョンを作成します。要素選択では 時間ディメンジョン を指定します。
 
BirthD ディメンジョンが作成されました。タイプが time ディメンジョンになっています。
 
BirthD ディメンジョンが選択された状態でプロパティの設定を行います。詳細ペインで、プロパティに BirthDateTimeStamp と入力します。

 
プロパティ横の虫眼鏡アイコンからダイアログを開いて選択する方法も可能です。
 
続いてレベルの設定を変更します。New_Level1 という名前で作成されているレベルを選択し、詳細ペインで [名前] を Year に書き換え、[関数で値を抽出] に Year を選択します。
 
Year(年)レベルの下に Month Year(年月)レベルを追加します。H1 階層のところをクリックして選択し、その状態で上の [要素を追加] リンクをクリックします。
  
要素名に Month Year と入力し、要素選択は レベル を選択します。
 
Month Year が level 2 で作成されました。このレベルに対する設定を行いますので、選択された状態のままにしておきます。
   
詳細ペインの [関数で値を抽出] で、MonthYear を選択します。

 
今度は、BirthD ディメンジョンに対して別の階層とレベルを追加します。BirthD ディメンジョンを選択した状態で [要素を追加] リンクをクリックします。
 
要素名には H2 と入力し、要素選択は 階層 を選びます。
   
BirthD ディメンジョンに H2 階層が追加されました。

   
レベルの設定を変更しますので、New_Level1 という名で作成されたレベルをクリックし、詳細ペインで [名前] を Time に書き換え、[関数で値を抽出] は HourNumber を選択します。

 
ここまで出来たら、キューブをコンパイルし、ビルドします。ビルドは「すべて構築」でも「選択構築」でも構いません。「選択構築」でうまくいかない場合には「すべて構築」でやり直してみてください。
ビルドが完了したら、再びアナライザ画面で確認します。以前の状態で開いている場合には再読み込みします。
 
BirthD ディメンジョンと階層、レベルが追加されているのが確認できます。Year レベルを展開してみましょう。
 
患者の生年ごとのメンバが表示されます。いちばん上に NOW というメンバがありますが、これはシステムが自動作成するメンバです。現在の年を参照します。
同様に Month Year のメンバも確認してみます。こちらにも NOW メンバが作成されています。

 
ピボットテーブルを作成して確認してみます。[列] に Year をドラッグ&ドロップします。年ごとのレコード件数が集計されます。
 
[行] を Month Year に置き換えます。年月単位で集計されます。

 
最後に、[行] を Time で置き換えます。出生の時(Hour)単位で集計されます。

 

おわりに

今回は既存のキューブに対してレベルの拡張と時間ディメンジョン、レベルの追加を行いました。
次回も引き続きキューブの拡張を行ってまいります。お楽しみに!

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください