OracleBIで、別の分析の結果(絞り込んだテーブル情報)を分析に適用する方法
通常、OracleBIのFactテーブルとDimentionテーブルは、論理層と物理層で適切に紐づけられており、
例えば、売上のFactを、Dimの組織コードで絞ったり、GroupByして分析を行うことができます。
ただ、複雑なメタデータ定義になると、どうしても直接結びつけられるテーブルばかりとは限りません。
そんな時には、ある分析の結果レコードを保存しておき、次の分析のインプットとして使える機能が便利です。
これを使うと、ある条件で顧客を絞り、その顧客に対して、いろいろな分析を行うなど、ある意味セグメンテーションに近いことが柔軟にできます。
また、セグメンテーションは、通常、あらかじめ定義したID(顧客など)に対してしか行えませんが、
分析の結果を使用する方法では、抽出したカラムをなんでも利用できます。
以下では、例として、売上のFactを、組織で絞り込んでみましょう。(ふつうは、この程度であれば、メタ定義でテーブル同士を結びつけますが、簡便な例としてということで。。。)
最初に、レコードを絞り込む前の売上のレコードを見てみましょう。
次に、上記に対して、特定の組織のみを絞り込みするため、新たに分析を行います。
新しい分析では、フィルタ条件として、特定のROW_IDで組織を絞り込んでみます。
こうすることで、組織の分析の結果は、ROW_IDが1000000001、1000000002、1000000003に絞られました。
この絞り込んだ分析は、名前を付けて保存しておきます。後ほど、売上の分析の画面から利用するためです。
ここでは、「絞った組織」という名前で分析を保存しました。
それでは、売上側の分析に戻って、組織をフィルタするのに、先ほど保存した分析を使用することにします。
上記のように、フィルタしたい項目で「フィルタ」を選ぶと、下記のような「新規フィルタ」ダイアログが開きます。
このダイアログでは、
演算子 ⇒ 別の分析結果に基づく 保存済分析 ⇒ 先ほど保存した「絞った組織」分析 を指定しましょう。
なお、「次の列の値を使用」の項目には、保存した分析の項目を選択します。
この作業により、具体的には、裏側で一時テーブルが生成され、上記で選択したカラム(上の例ではROW_ID)がInsertされます。
フィルタを適用すると、以下のように表示されるはずです。
それでは、実際に結果を見てみましょう。
下記のように、売上のFactデータが、1000000001、1000000002、1000000003に絞られていることが確認できると思います。