記事
· 2024年5月12日 6m read

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

はじめに

IRIS BIチュートリアル試してみたシリーズの9回目です。
今回は、チュートリアル全6ページのうちの5ページ目、「サブジェクト領域の作成」について試していきます。
「サブジェクト領域」という新しい概念が出てきますが、どんなものかを触りながら理解していきます。
では、早速はじめていきましょう。

サブジェクト領域の作成

最初に、サブジェクト領域とは何かを理解するところから始めましょう。チュートリアルでは以下のような説明があります。

”サブジェクト領域は、オプションによる項目名のオーバーライドを持つサブキューブです。サブジェクト領域を定義すると、セキュリティ上の理由およびその他の理由により、より小さなデータ・セットに焦点を当てることができます。”

うーん、分かったような、分からないような。。実例を基に説明してみます。
6回目の記事で郵便番号と市区町村の階層を作成しました。郵便番号→市区町村という階層構造になっていましたよね。以下の図が、郵便番号と市区町村の関連を表したものです。
 
現状、チュートリアルで使用しているキューブには上記5つの郵便番号を持つデータが格納されています。
これを、特定の郵便番号のデータだけを扱えるサブセットに分割したい要件があったとします。例えば配達員の担当地域ごとに分割するとか。
そのような場合に用いられるのがサブジェクト領域です。チュートリアルでは、以下の2つのサブジェクト領域を作成します。

サブジェクト領域名 コンテンツ
Patient Set A 郵便番号 32006、32007、または 36711 に居住する患者
Patient Set B 郵便番号 34577、または 38928 に居住する患者


では、実際に作成していきます。作業はアーキテクト画面から行いますので、アーキテクト画面を開きます。
画面上部の [新規] ボタンをクリックし、新規作成のダイアログを表示します。表示されたダイアログに、以下のように設定します。

  • 定義タイプ:サブジェクト領域
  • サブジェクト領域の名前:Patient Set A
  • ベースキューブ:Tutorial
  • サブジェクト領域のクラス名:Tutorial.SubjectA

 
ベースキューブは [参照] ボタンから選択することもできます。

 
[OK] で終了すると、以下のような画面が表示されます。キューブ作成と同様に、ここに設定を施していくことになります。

ではここに、郵便番号のフィルタ条件を追加していきます。それに必要な情報を取得するために、別ウィンドウでアナライザ画面を立ち上げ、Tutorialキューブを開きます。
HomeD ディメンジョン配下の ZIP Code レベルを [フィルタ] にド
ラッグ&ドロップします。こんな画面になります。

ピボット・プレビュー領域のすぐ上に表示された ZIP Code の虫眼鏡アイコンをクリックします。
Patient Set Aの条件である、郵便番号=32006、32007、36711をチェックし、✓をクリックして終了します。


フィルタが適用され、件数が変わりました。
※注意:サンプルデータはランダムに作成されるため、こちらの画面表示とみなさまの実行結果は一致しないことがあります。

この状態で [クエリ表示] アイコンをクリックします。ピボット・ビルダ領域の [列] の上あたりにあるアイコンです。
   
MDXクエリが表示されます。

 
MDXクエリって何??という方もいらっしゃるかもしれません。これはOLAPデータベースに対する標準クエリ言語で、RDBにおけるSQLのようなものです。
このクエリ構文から、%FILTER より後ろにある条件の部分をコピーしておきます。コピーしたら、ダイアログは [OK] で閉じます。

%OR({[HOMED].[H1].[ZIP CODE].&[32006],[HOMED].[H1].[ZIP CODE].&[32007],[HOMED].[H1].[ZIP CODE].&[36711]})

では、再びアーキテクト画面に戻り、Patient Set Aの行をクリックして選択し、詳細ペインの [フィルタ] にコピーしたフィルタ式を貼り付けます。

 貼り付けたら [保存] ボタンをクリックして、サブジェクト領域を保存します。以下のダイアログで [OK] をクリックします。
  
保存が完了したら、続いてコンパイルします。

 

これで Patient Set A については作成できました。同様にPatient Set Bも作成します。

先ほどとの相違点のみ記載します。作成のダイアログで、名前を Patient Set B 、クラス名を Tutorial.SubjectB とします。
 
設定するフィルタ条件は、郵便番号=34577、38928 の2つになります。

%OR({[HOMED].[H1].[ZIP Code].&[34577],[HOMED].[H1].[ZIP Code].&[38928]})

保存、コンパイルまで完了したら、これで2つのサブジェクト領域は完成です。思ったよりもシンプルな作業ですね。

サブジェクト領域の検証

では、作成したサブジェクト領域が意図した通りに動作するかを確認します。
アナライザ画面で キューブの変更 アイコンをクリックします。作成した2つのサブジェクト領域が表示されますね。Patient Set A を選択して開きます。

 
[行] に ZIP Code をドラッグ&ドロップします。フィルタ設定した3つの郵便番号のみが表示されます。

 
同様に Patient Set B についても確認します。こちらもフィルタ設定した2つの郵便番号のみが表示されます。

 

一般的なフィルタ式

もう少しMDXクエリについて学んでみたいと思います。アナライザ画面で Tutorial キューブを開きます。
何も条件を設定しない状態で、先ほどの [クエリ表示] アイコンをクリックします。
 
Tutorial キューブが選択されていて、フィルタ条件などは一切無い状態です。
ではここに、ColorD ディメンジョン配下 Favorite Color レベルから Orange メンバを [フィルタ] にドラッグ&ドロップします。カウントが変わりましたね。

この状態で [クエリ表示] アイコンをクリックします。
 
フィルタ条件の構文、 %FILTER [ColorD].[H1].[Favorite Color].&[Orange] が追加されました。
では、いま設定したフィルタ条件を × で削除し、今度は Favorite Color レベルを [フィルタ] にセットします。その後にフィルタ・ボックスから Orange と Purple の2つを選択します。
 この状態でクエリ表示をしてみます。Orange だけの場合と異なり、 %OR で Orange と Purple の条件が囲まれています。
  
では次に、Favorite Color フィルタを Orange だけに設定し、AllerD ディメンジョン配下の Allergies レベルから mold メンバを [フィルタ] に追加します。以下のような設定になります。


この状態で [クエリ表示] アイコンをクリックします。
 
今度は2つの条件の組み合わせ(AND条件)になりますので、NONEMPTYCROSSJOIN という関数でフィルタ指定した2つのメンバが囲まれています。
ここでは、フィルタ条件を中心にMDXクエリについて確認しました。MDXについて詳しいことが知りたい場合は、オンラインドキュメントの以下のページを参考にしてください。

おわりに

今回はサブジェクト領域の作成を行いながら、その後ろ側で使用されているMDXクエリについて簡単に学びました。
部門ごとに参照可能なデータを制限したい、などデータを特定の条件でフィルタして公開したいというユースケースはよくあるかと思います。そのような場合に別々のキューブを作らずに対応できるサブジェクト領域は有用であると考えます。
次回からは、いよいよ最終ページ「ピボット・テーブルおよびダッシュボードの作成とパッケージ化」について取り上げます。お楽しみに!

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