ヘッダーをスキップ
Oracle® OLAPユーザーズ・ガイド
11g リリース2(11.2)
B61345-01
  目次へ
目次
索引へ
索引

戻る
戻る
 
次へ
次へ
 

5 分析コンテンツによるデータベースの拡張

Oracle OLAPには、情報量の豊富なコンテンツを利用してデータベースを拡張できる多数の分析関数が用意されています。この章では、Analytic Workspace Managerでテンプレートや非定型の計算を使用して計算済メジャーを作成する方法について説明します。

この章では、次の項目について説明します。

計算済メジャーとは

計算済メジャーは、1つ以上のメジャーに格納されたデータを基にして実行時に計算される値を戻します。リレーショナル・ビューと同様に、計算済メジャーには、他のオブジェクトに格納されているデータに対する問合せが格納されます。計算済メジャーにはデータは格納されないため、計算済メジャーを多数作成してもデータベースのサイズが大きくなることはありません。計算済メジャーは、別の計算済メジャーを定義する際のベースとして使用できるので、Analytic Workspace Managerでテンプレートを基にして作成できる計算の種類が豊富になります。

計算済メジャーを作成すると、ただちにキューブ・ビューの列として表示されます。計算済メジャーにはデータが格納されていないため、これらのメジャーは作成処理とは関連していません。計算済メジャーはいつでも作成可能であり、SQLアプリケーションでの問合せ用としてすぐに利用できます。

計算を定義するための関数

計算済メジャーを定義するための関数のライブラリには、次の基本的な分類があります。

算術演算子

2つのメジャーに対して次の算術演算子を実行できます。キューブ内での計算は、ディメンション階層のすべてのレベルでセル単位に実行されます。

  • 加算: 2つのメジャーの値を足します。

  • 減算: 一方のメジャーの値からもう一方のメジャーの値を引きます。

  • 乗算: 2つのメジャーの値を掛けます。

  • 除算または比率: 一方の値をもう一方の値で割ります。

  • 相違率: 2つのメジャーの値の相違率を計算します。

算術演算子は、Analytic Workspace Managerではテンプレートとして使用できます(「計算テンプレートの使用」を参照)。

分析関数

分析関数は、ビジネス・インテリジェンスなどのアプリケーションでの問合せをさらに有益なものにする最も効果的な計算です。ランク関数、シェア関数、時系列関数など各種の単一行関数が用意されています。分析関数を使用することによって、分析担当者や意思決定者は比較を行ったり傾向を把握したりできます。

Oracle OLAPの分析関数では、ディメンションに関連付けられた、レベルや親子関係の情報を活用します。さらに、時間ディメンションには、時系列の手法(ラグ、リード、移動、累積などの計算)に利用できる情報が含まれています。このような情報はディメンションに格納されているため、計算済メジャーを作成するときにこれらの関係を指定する必要はありません。

分析関数は、Analytic Workspace Managerではテンプレートとして使用できます。詳細は、「計算テンプレートの使用」を参照してください。

単一行関数

Oracle OLAPでは、ほとんどのSQL単一行関数をサポートしています。たとえば次のようなものがあります。

  • 数値関数: ABSCEILFLOORPOWERROUNDTRUNCなど

  • 文字関数: CONCATLPADRPADLTRIMRTRIMREPLACESUBSTRなど

  • 日時関数: CURRENT_DAYMONTHS_BETWEENNEXT_DAYSYSTIMESTAMPなど

  • 比較関数: GREATESTLEAST

  • 変換関数: TO_CHARTO_DATETO_NUMBERTO_TIMESTAMPなど

これらの関数を使用すると、メジャー内のデータ値を(一般に、より複雑な計算の一部として)操作できます。これらの関数はテンプレートとしては使用できませんが、非定型の計算で使用できます(「ユーザー定義の式の作成」を参照)。

計算済メジャーの作成

Analytic Workspace Managerには、計算済メジャーの作成時に利用できる使いやすいテンプレートが用意されています。計算済メジャーはソース・メジャーと同じキューブ内に作成できますが、別のキューブ内に作成することもできます。

計算済メジャーは、キューブ・ビュー(UNITS_CUBE_VIEWなど)の追加の列として、問合せ時に利用できます。キューブ・マテリアライズド・ビュー(CB$UNITS_CUBEなど)では利用できません。

計算済メジャー・ジェネレータは、ランク、シェア、前期間と将来期間、現在までの期間、平行期間、移動集計および累積集計など、キューブの1つ以上のメジャーに対して標準の計算済メジャーを素早く生成します。このジェネレータでは、名前と説明の生成にいくつかのネーミング規則を使用しています。これらのネーミング規則は「ネーミング・ルール」タブでカスタマイズできます。

また、OLAP式の構文やOLAP DMLを使用して、個々の計算済メジャー(ユーザー定義の式など)を作成することもできます。

複数の計算済メジャーの作成手順: 

  1. ナビゲーション・ツリーでキューブを右クリックし、「計算メジャーの生成」を選択します。

  2. 「計算」タブで、計算済メジャーのベースにするメジャーを選択します。

  3. 選択したメジャーについて、「計算詳細」をスクロール・ダウンし、作成する計算済メジャーの各タイプを選択します。必要に応じてテンプレートを変更し、計算を編集します。

  4. 時系列の計算に使用するTimeディメンションを選択します。

  5. 計算済メジャーのリストを確認します。生成された名前は「ネーミング・ルール」タブで変更できます。

  6. 「計算の生成」をクリックして計算済メジャーを作成します。

  7. 同じ基本タイプで様々な計算を生成する場合は、この手順を繰り返します。たとえば、メジャーが同じでも対象のディメンションが異なるシェア計算を別に生成できます。ネーミング規則を変更して、新しい一意の名前を生成します。

図5-1に、「計算メジャーの生成」ダイアログ・ボックスを示します。

図5-1 複数の計算済メジャーの生成

図5-1の説明が続きます。
「図5-1 複数の計算済メジャーの生成」の説明

単独の計算済メジャーの作成手順: 

  1. ナビゲーション・ツリーでキューブ・フォルダを開きます。

  2. 「計算済メジャー」を右クリックし、ショートカット・メニューから「計算済メジャーの作成」を選択します。

    「計算済メジャーの作成」ダイアログ・ボックスが表示されます。

  3. わかりやすい名前を入力します。

  4. 計算方法を選択します。

    算術関数または分析関数を選択すると、計算テンプレートが動的に変わります。

  5. 計算テンプレートを編集します。

  6. 作成」をクリックします。

    計算済メジャーがナビゲーション・ツリーの「計算済メジャー」フォルダ内に表示されます。

図5-2に、「計算済メジャーの作成」ダイアログ・ボックスを示します。

図5-2 計算済メジャーの作成

「計算済メジャーの作成」ダイアログ・ボックス
「図5-2 計算済メジャーの作成」の説明

テンプレートの変更

選択した計算はテンプレートとして表示されます。テンプレートは計算の詳細を示すもので、変数部分を変更することによりカスタマイズできます。

図5-3は、前の期間を計算するためのテンプレートです。リンクをクリックすると、選択リストが表示されます。

図5-3 計算の変数部分の変更

前回の期間テンプレート
「図5-3 計算の変数部分の変更」の説明

1つの計算にメジャーのすべての値を含めることができます。計算の種類によっては、選択した値のみが含まれるようにメジャーにフィルタを適用できます。1つ以上のディメンションを単独のディメンション・メンバーに制限するには、メジャーの横にある省略記号(...)をクリックします。図5-4のような「メジャーの修飾」ダイアログ・ボックスが表示されます。

図5-4 単独のディメンション・メンバーに制限

「メジャーの修飾」ダイアログ・ボックス
「図5-4 単独のディメンション・メンバーに制限」の説明

期間の範囲の選択

大部分の計算は、階層の同じレベルの期間に対して実行されます。一部の種類の計算では、同じ計算で使用される期間の範囲を指定できます。たとえば、キューブに格納された1番目の月から始まる累計ではなく、各会計年度の月の累計を求めたい場合などです。

計算対象の期間の範囲を指定する場合、次の基準を使用できます。

  • レベル: 同じレベルのすべての期間を計算します。たとえば、キューブ内のすべての月を1つの計算に含め、すべての四半期を別の計算に含めることができます。

  • : 同じ親を持つすべての期間を計算します。たとえば、Q1-07に含まれるすべての月を1つの計算に含め、Q2-07に含まれるすべての月を別の計算に含めることができます。

  • レベルの祖先: 特定のレベルの同じ祖先を持つすべての期間を計算します。たとえば、特定のレベルがYear-Quarter-Month階層のYearであるとき、Q1-06からQ4-06までを1つの計算に含め、Q1-07からQ4-07までを別の計算に含め、Jan-06からDec-06までをさらに別の計算に含めることができます。階層内の上位のレベルについては計算されません。

  • グレゴリオ暦の期間: 選択した階層にグレゴリオ暦の期間(年、四半期、月、週)を適用します。この方法は、非標準的なカレンダ階層が使用されているデータを分析するときに有効です。たとえば、7月1日から始まり6月30日に終わる会計年度の階層でグレゴリオ暦を使用すると、ある会計年度の下半期とその次の会計年度の上半期が一緒に計算されます。指定したグレゴリオ暦期間よりも上位にある階層内の期間については計算されません。

計算テンプレートの使用

Analytic Workspace Managerには、ビジネス・インテリジェンス・アプリケーションで一般的に必要とされるあらゆる計算用のテンプレートが用意されています。次の各項では、Analytic Workspace Managerで計算テンプレートとして利用できる計算の種類について説明します。

算術計算

基本的な数学の演算子を使用して、2つのメジャーに関してセル単位の計算を実行できます(「算術演算子」を参照)。

算術計算の例

次のテンプレートは、相違率を使用してGlobal Priceキューブの計算済メジャーを定義します。

Percent difference between measure UNIT_PRICE and measure UNIT_COST.

この計算済メジャーに対して問合せを発行すると、次のような結果が戻されます。PCT_CHG列に、PRICECOSTの変化率が示されています。この値はPRICE-COST/COSTの計算で求められます。

PRODUCT                   PRICE       COST   PCT_DIFF
-------------------- ---------- ---------- ----------
Envoy Ambassador           2892       2664        .09
Envoy Executive            2803       2644        .06
Envoy Standard             1662       1737       -.04
Sentinel Financial         1755       1658        .06
Sentinel Multimedia        1770       1813       -.02
Sentinel Standard          1552       1410         .1

指数

指数は、単独のメジャーに対して計算される数学的演算の1つです。指数計算では、メジャーの値と、基準となる数値との差の割合を求めます。

指数計算では計算テンプレートを使用しません。そのかわり、キューブの各ディメンションのディメンション・メンバーのリストから、指数として使用するものを選択できます(図5-5を参照)。

図5-5 Productの指数の計算

指数の「計算済メジャーの作成」ダイアログ・ボックス
「図5-5 Productの指数の計算」の説明

指数の例

この例では、Productディメンションに関して指数を作成し、Desktop PCsが指数として使用されています。

PRODUCT                   SALES PROD_INDEX
-------------------- ---------- ----------
Desktop PCs            76682955        100
Portable PCs           18072328         24
CD/DVD                 17302122         23
Modems/Fax              5565552          7
Memory                  5347292          7
Monitors                3926632          5

前期間と将来期間

Oracle OLAPでは、前の期間または将来の期間についての計算ができます。

  • 前回の期間: 前の期間のメジャーの値を戻します。

  • 前期間との相違: 現在の期間の値と前の期間の値の差を計算します。

  • 前期間との相違率: 現在の期間の値と前の期間の値との相違率を計算します。

  • 将来期間: 後の期間のメジャーの値を戻します。

  • 将来期間との相違: 現在の期間の値と後の期間の値の差を計算します。

  • 将来期間との相違率: 現在の期間の値と後の期間の値との相違率を計算します。

前の期間または将来期間の計算を作成するときは、メジャー、時間ディメンション、階層、および現在の期間からいくつ前(または後)の期間かを選択します。

前の期間の例

次のテンプレートは、前回の期間を使用して計算済メジャーを定義します。

Prior period for measure SALES in TIME dimension and TIME.CALENDAR hierarchy 1 period ago.

この計算済メジャーに対する問合せの結果は次のとおりです。PRIOR_PERIOD列に、Calendar階層の同じレベルで1つ前の期間におけるSalesの値が示されます。

TIME     TIME_LEVEL                SALES PRIOR_PERIOD
-------- -------------------- ---------- ------------
2005     CALENDAR_YEAR         136986572    144290686
2006     CALENDAR_YEAR         140138317    136986572
Q1.05    CALENDAR_QUARTER       31381338     41988687
Q2.05    CALENDAR_QUARTER       37642741     31381338
Q3.05    CALENDAR_QUARTER       32617249     37642741
Q4.05    CALENDAR_QUARTER       35345244     32617249
Q1.06    CALENDAR_QUARTER       36154815     35345244
Q2.06    CALENDAR_QUARTER       36815657     36154815
Q3.06    CALENDAR_QUARTER       32318935     36815657
Q4.06    CALENDAR_QUARTER       34848911     32318935

現在までの期間

現在までの期間を求める関数は、現在の期間に至る一連の期間(親が同じもの)に対して計算を行います。現在までの期間を計算する関数には次のものがあります。

  • 現在までの期間: 現在の期間までの値を計算します。

  • 前期間までの期間: 前の期間までのデータ値を計算します。

  • 前期間までの期間との相違: 現在の期間までのデータ値と前期間までのデータ値の差を計算します。

  • 前期間までの期間との相違率: 現在の期間までのデータ値と前期間までのデータ値の相違率を計算します。

現在までの期間の計算を作成するときは、次の集計方法のいずれかを選択します。

  • 合計

  • 平均

  • 最大

  • 最小

その他に、メジャー、時間ディメンション、階層も選択します。

現在までの期間の例

次のテンプレートは、現在までの期間を使用して計算済メジャーを定義します。

Gregorian Year to date for SALES in the TIME dimension and TIME.CALENDAR hierarchy. Aggregate using MINIMUM from the beginning of the period.

この計算済メジャーに対する問合せの結果は次のとおりです。MIN_TO_DATE列に、該当のレベルおよび年の中で最小のSALESの値が表示されます。

TIME     TIME_LEVEL                SALES MIN_TO_DATE
-------- -------------------- ---------- -----------
Q1.06    CALENDAR_QUARTER       36154815    36154815
Q2.06    CALENDAR_QUARTER       36815657    36154815
Q3.06    CALENDAR_QUARTER       32318935    32318935
Q4.06    CALENDAR_QUARTER       34848911    32318935
JAN-06   MONTH                  13119235    13119235
FEB-06   MONTH                  11441738    11441738
MAR-06   MONTH                  11593842    11441738
APR-06   MONTH                  11356940    11356940
MAY-06   MONTH                  13820218    11356940
JUN-06   MONTH                  11638499    11356940
JUL-06   MONTH                   9417316     9417316
AUG-06   MONTH                  11596052     9417316
SEP-06   MONTH                  11305567     9417316
OCT-06   MONTH                  11780401     9417316
NOV-06   MONTH                  10653184     9417316
DEC-06   MONTH                  12415325     9417316

シェア

シェアを使用すると、現在のディメンション・メンバーのメジャーの値を、同じディメンションの関連メンバーの値と比較した割合を計算できます。関連メンバーとして次のいずれかを選択できます。

  • 階層の最上位: 合計に対する各メンバーの比率を計算します。

  • メンバーの親: それぞれの親に対する各メンバーの比率を計算します。

  • レベルのメンバーの祖先: それぞれの祖先(階層内の特定の上位レベルのメンバー)に対する各メンバーの比率を計算します。

シェア計算を作成するときは、メジャー、ディメンションおよび階層を選択します。また、結果に100を掛けることにより、比率をパーセンテージで表すようにすることもできます。

シェアの例

次のテンプレートは、SHAREを使用して計算済メジャーを定義します。

Share of measure SALES in PRODUCT.PRIMARY hierarchy of the PRODUCT dimension as a ratio of top of hierarchy.

この計算済メジャーに対する問合せの結果は次のとおりです。TOTAL_SHARE列に、選択した製品の合計に対する比率がパーセント単位で表示されます。

PRODUCT              PROD_LEVEL           SALES TOTAL_SHARE
-------------------- --------------- ---------- -----------
Total Product        TOTAL            144290686         100
Hardware             CLASS            130145388          90
Desktop PCs          FAMILY            78770152          55
Portable PCs         FAMILY            19066575          13
CD/DVD               FAMILY            16559860          11
Software/Other       CLASS             14145298          10
Accessories          FAMILY             6475353           4
Operating Systems    FAMILY             5738775           4
Memory               FAMILY             5430466           4
Modems/Fax           FAMILY             5844185           4
Monitors             FAMILY             4474150           3
Documentation        FAMILY             1931170           1

ランク

ランクは、選択したメジャーの値に基づいてディメンションの値を順位付けします。ランク計算を定義するときは、ディメンション、階層およびメジャーを選択します。

同一の値を処理する方法は、次の中から選択できます。

  • ランク: 同一の値に同じ順位を割り当てます。そのため、メンバーの数よりランクの数の方が少なくなることがあります。たとえば、5つのディメンション・メンバーに対して、12334という順位が戻されます。

  • 稠密ランク: 同一の値に同じ最小順位を割り当てます。たとえば、5つのディメンション・メンバーに対して、12335という順位が戻されます。

  • 平均ランク: 同一の値に同じ平均順位を割り当てます。たとえば、5つのディメンション・メンバーに対して、123.53.55という順位が戻されます。

ディメンション・メンバーを順位付けするグループを選択することもできます。

  • メンバーのレベル: 同じレベルのメンバーを順位付けします。

  • メンバーの親: 同じ親を持つメンバーを順位付けします。

  • レベルのメンバーの祖先: 階層内の特定の上位レベルに同じ祖先を持つメンバーを順位付けします。

ランクの例

次のテンプレートは、ランクを使用して計算済メジャーを定義します。

Rank members of the PRODUCT dimension and PRODUCT.PRIMARY hierarchy based on measure SALES. Calculate rank using RANK method with member's parent in order lowest to highest. Rank NA (null) values nulls last.

この計算済メジャーに対する問合せの結果は、次のように製品がRANKで順位付けされた形で表示されます。

PRODUCT                   SALES       RANK
-------------------- ---------- ----------
Monitors                4474150          1
Memory                  5430466          2
Modems/Fax              5844185          3
CD/DVD                 16559860          4
Portable PCs           19066575          5
Desktop PCs            78770152          6

平行期間

平行期間とは、現在の期間とレベルは同じであるが、前の期間における親が異なる期間のことです。たとえば、四半期レベルおよび月レベルで、現在の売上を前年の売上と比較する場合に使用します。

Oracle OLAPでは、平行期間の計算に使用する関数として次のものがあります。

  • 平行期間: 平行期間の値を計算します。

  • 平行期間との相違: 現在の期間の値と平行期間の値の差を計算します。

  • 平行期間との相違率: 現在の期間の値と平行期間の値の相違率を計算します。

平行期間を指定するときは、特定のレベルと、現在の期間からいくつ前の期間かを指定します。また、2つの期間が厳密に一致しない場合(たとえば、2月(28日間)と1月(31日間)の1日の売上を比較する場合など)の処理を決めることもできます。

その他に、メジャー、時間ディメンション、階層も選択します。

平行期間の例

次のテンプレートは、平行期間を使用して計算済メジャーを定義します。

Parallel period for SALES in the TIME dimension and TIME.CALENDAR hierarchy 1 TIME.CALENDAR.QUARTER ago based on position from beginning to ending of period.

この計算済メジャーに対する問合せの結果では、次のように2つの四半期の各月が表示されます。平行関係にある月は、前の四半期と位置が同じ月です。つまり、JUL-06の平行期間はAPR-06AUG-06の平行期間はMAY-06SEP-06の平行期間はJUN-06となります。

TIME     PARENT          SALES   LAST_QTR
-------- ---------- ---------- ----------
APR-06   CY2006.Q2    11356940   13119235
MAY-06   CY2006.Q2    13820218   11441738
JUN-06   CY2006.Q2    11638499   11593842
JUL-06   CY2006.Q3     9417316   11356940
AUG-06   CY2006.Q3    11596052   13820218
SEP-06   CY2006.Q3    11305567   11638499

移動計算

移動計算は、現在の期間の前後の期間に対して実行されます。Oracle OLAPでは、移動計算用に次の集計方法を使用できます。

  • 移動平均: 特定の数の期間におけるメジャーの平均値を計算します。

  • 移動最大: 特定の数の期間におけるメジャーの最大値を計算します。

  • 移動最小: 特定の数の期間におけるメジャーの最小値を計算します。

  • 移動合計: 特定の数の期間におけるメジャーの合計値を戻します。

メジャー、時間ディメンション、階層を選択します。また、範囲(「期間の範囲の選択」を参照)に加え、現在の期間の前後の期間をいくつ計算に含めるかを選択できます。

移動計算の例

次のテンプレートは、移動最小を使用して計算済メジャーを定義します。

Moving minimum of SALES in the TIME dimension and TIME.CALENDAR hierarchy. Include 1 preceding and 1 following members within level.

この計算済メジャーに対する問合せの結果には、暦年2004年の子孫の値が表示されます。それぞれの最小売上(MIN_SALES)の値は、現在の値とその直前および直後の値の中で最も小さい値です。この計算は、キューブ内のレベルのすべてのメンバーに対して実行されています。

TIME     TIME_LEVEL                SALES  MIN_SALES
-------- -------------------- ---------- ----------
Q1.04    CALENDAR_QUARTER       32977874   32977874
Q2.04    CALENDAR_QUARTER       35797921   32977874
Q3.04    CALENDAR_QUARTER       33526203   33526203
Q4.04    CALENDAR_QUARTER       41988687   31381338
JAN-04   MONTH                  11477898   10982016
FEB-04   MONTH                  10982016   10517960
MAR-04   MONTH                  10517960   10517960
APR-04   MONTH                  11032057   10517960
MAY-04   MONTH                  11432616   11032057
JUN-04   MONTH                  13333248   11432616
JUL-04   MONTH                  12070352   11108893
AUG-04   MONTH                  11108893   10346958
SEP-04   MONTH                  10346958   10346958
OCT-04   MONTH                  14358605   10346958
NOV-04   MONTH                  12757560   12757560
DEC-04   MONTH                  14872522   12093518

累積計算

累積計算では、1番目の期間から現在のメンバーまでを計算するか、または最後の期間から現在のメンバーにさかのぼって計算をします。Oracle OLAPでは、累積計算用に次の集計方法を使用できます。

  • 累積平均: 対象の期間の累積平均を計算します。

  • 累積最大: 対象の期間の最大値を計算します。

  • 累積最小: 対象の期間の最小値を計算します。

  • 累積合計: 対象の期間の累計を計算します。

メジャー、時間ディメンション、階層を選択します。また、範囲(「期間の範囲の選択」を参照)に加えて、1番目の期間から以降の期間に向かって計算するか、最後の期間からさかのぼって計算するかを選択できます。

累積計算の例

次のテンプレートは、累積最小を使用して計算済メジャーを定義します。

Cumulative minimum of SALES in the TIME dimension and TIME.CALENDAR hierarchy within ancestor at level TIME.CALENDAR_YEAR. Total from beginning to current member.

この計算済メジャーに対する問合せの結果には、暦年2004年の子孫の値が表示されます。Q1.04からQ4.04までの四半期の最小値、Jan-04からDec-04までの月の最小値が表示されます。

TIME     TIME_LEVEL                SALES  MIN_SALES
-------- -------------------- ---------- ----------
Q1.04    CALENDAR_QUARTER       32977874   32977874
Q2.04    CALENDAR_QUARTER       35797921   32977874
Q3.04    CALENDAR_QUARTER       33526203   32977874
Q4.04    CALENDAR_QUARTER       41988687   32977874
JAN-04   MONTH                  11477898   11477898
FEB-04   MONTH                  10982016   10982016
MAR-04   MONTH                  10517960   10517960
APR-04   MONTH                  11032057   10517960
MAY-04   MONTH                  11432616   10517960
JUN-04   MONTH                  13333248   10517960
JUL-04   MONTH                  12070352   10517960
AUG-04   MONTH                  11108893   10517960
SEP-04   MONTH                  10346958   10346958
OCT-04   MONTH                  14358605   10346958
NOV-04   MONTH                  12757560   10346958
DEC-04   MONTH                  14872522   10346958

ネストした計算

計算済メジャーを別の計算済メジャーのベースとして使用することにより、テンプレートで使用可能な各種関数を拡張できます。

たとえば、Analytic Workspace Managerの移動平均および前期間との相違のテンプレートを使用して、移動平均を求める計算済メジャーを作成してから、現在の移動平均と過去の移動平均の差を求めることができます。

ネストした計算の例

次のテンプレートは、UnitsについてUNITS_MOVING_AVGという名前の移動平均を作成します。

Moving average of UNITS in the TIME dimension and TIME.CALENDAR hierarchy. Include 1 preceding and 1 following members within level.

次のテンプレートは、UNITS_MOVING_AVGを基にして前期間との相違を作成します。

Difference from prior period for UNITS_MOVING_AVG in TIME dimension and TIME.CALENDAR hierarchy 1 period ago.

Unitsメジャーおよび2つの計算済メジャーに対する問合せの結果は次のとおりです。MOVING_AVG列に移動平均が表示され、DIFF列に現在の移動平均と前の期間の移動平均の差が表示されています。

TIME     TIME_LEVEL                UNITS MOVING_AVG       DIFF
-------- -------------------- ---------- ---------- ----------
JAN-06   MONTH                     47776      48520         66
FEB-06   MONTH                     47695      48940        419
MAR-06   MONTH                     51348      48683       -257
APR-06   MONTH                     47005      50387       1705
MAY-06   MONTH                     52809      48411      -1976
JUN-06   MONTH                     45419      48872        461
JUL-06   MONTH                     48388      47546      -1326
AUG-06   MONTH                     48830      47857        312
SEP-06   MONTH                     46354      47532       -326
OCT-06   MONTH                     47411      46869       -663
NOV-06   MONTH                     46842      49768       2899
DEC-06   MONTH                     55052      50947       1179
2006     CALENDAR_YEAR            584929     575324      -4032
Q1.06    CALENDAR_QUARTER         146819     145705       2093
Q2.06    CALENDAR_QUARTER         145233     145208       -497
Q3.06    CALENDAR_QUARTER         143572     146037        829
Q4.06    CALENDAR_QUARTER         149305     146439        402

ユーザー定義の式の作成

計算タイプの1つとして、ユーザー定義の式があります。通常は、OLAP式の構文(この章で説明した分析関数、算術演算子、単一行関数など)を使用して式を作成します。OLAP構文は、SQL構文を拡張したものです。SQLの分析関数や単一行関数を使用したことがある場合は、この構文の作成は難しくありません。


参照:

ユーザー定義のOLAP DML式については、「OLAP DMLを使用した計算済メジャーの作成」を参照してください。

OLAP式の構文の使用

OLAP式の構文で式を作成するときは、Analytic Workspace Managerを使用して行うのが最も簡単です。テンプレートを使用して同じような計算を作成し、その構文を切り取って貼り付け、新しい計算のベースにすることができます。

OLAP式の構文でのユーザー定義の式の作成手順: 

  1. 「計算済メジャーの作成」ダイアログ・ボックスを開きます。

  2. 定義しようとしている式と最も近い計算タイプを選択します。

  3. テンプレートを必要に応じて編集します。

  4. 「計算」ボックスから計算を切り取って、テキスト・エディタに貼り付けます。

  5. 定義する計算で2つ以上の関数を使用する場合は、前の手順を繰り返します。

  6. テキスト・エディタで必要に応じて計算を編集します。1つの計算内で算術演算子、分析関数、単一行関数を組み合せて使用できます。

  7. 「計算タイプ」リストから「OLAP式構文」を選択します。

  8. テキスト・エディタから計算を切り取って、「計算」ボックスに貼り付けます。

  9. 「作成」をクリックします。


参照:

OLAP式の構文の詳細は、Analytic Workspace Managerのヘルプを参照してください。

算術演算子を使用した式の構文例

次の乗算テンプレートは、販売単位と単位原価を使用して計算を生成します。

Multiply measure UNITS by measure UNIT_COST.

次のテンプレートは、乗算演算子(*)を使用して同じ計算を生成します。これは「計算」ボックスに表示されます。UNITSはUnitsキューブ内、UNIT_COSTはPriceキューブ内にあることに注意してください。

UNITS_CUBE.UNITS * PRICE_CUBE.UNIT_COST

この計算の構文は単純なため、テンプレートにはメジャーの修飾名を指定するだけです。

次の式は、販売数量に2%を加算する非定型の式です。

UNITS_CUBE.UNITS * 1.02

この計算済メジャーに対する問合せの結果は次のとおりです。

PRODUCT                   UNITS     TARGET
-------------------- ---------- ----------
Envoy Ambassador           2116       2158
Envoy Executive            2481       2531
Envoy Standard             3300       3366
Sentinel Financial        30513      31123
Sentinel Multimedia        7948       8107
Sentinel Standard          7302       7448

分析関数を使用した非定型の式の例

次の累積平均テンプレートは、販売数量の平均を求める計算を生成します。

Cumulative average of UNITS in the TIME dimension and TIME.CALENDAR hierarchy within level. Total from beginning to following member.

次のテンプレートは、AVG関数を使用して同じ計算を生成します。

AVG(UNITS_CUBE.UNITS) OVER HIERARCHY (TIME.CALENDAR BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING WITHIN LEVEL)

次の式は、現在の販売数量と累積平均との相違率を求める非定型の計算式です。AVG関数と、減算(-)、除算(/)、乗算(*)の各演算子が使用されています。

((UNITS_CUBE.UNITS - AVG(UNITS_CUBE.UNITS) OVER HIERARCHY (TIME.CALENDAR BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING WITHIN LEVEL)) / AVG(UNITS_CUBE.UNITS) OVER HIERARCHY (TIME.CALENDAR BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING WITHIN LEVEL)) * 100

この計算済メジャーに対する問合せの結果は次のとおりです。

TIME          UNITS    CUM_AVG   PCT_DIFF
-------- ---------- ---------- ----------
Q1.06        146819     107965         36
Q2.06        145233     109062         33
Q3.06        143572     110048         30
Q4.06        149305     111138         34

なお、この計算は次のテンプレートを使用して作成することもできます。

  1. 累積平均テンプレート: UNITSの累積平均を計算する。

  2. 相違率テンプレート: 現在のUNITSと累積平均との差をパーセントで求める。

式の構文の分析関数

表5-1は、OLAP式の構文によって非定型の計算を作成する際に使用できる分析関数の説明です。これらの関数の構文は、Analytic Workspace Managerのヘルプを参照してください。

表5-1 OLAP式の構文の分析関数

関数 説明

AVERAGE_RANK

式の値に基づいてディメンション・メンバーを順位付ける。この関数はディメンション・メンバーについて連続する数値を戻し、同一の値には同じ平均順位を割り当てる。

AVG

特定の期間に対して計算された、選択した値の平均を戻す。

COUNT

選択したディメンション・メンバーにより識別されるデータ値の数を計算する。

DENSE_RANK

式の値に基づいてディメンション・メンバーを順位付ける。この関数はディメンション・メンバーについて連続する数値を戻し、同一の値には同じ最小順位を割り当てる。

HIER_ANCESTOR

階層のすべてのメンバーまたは特定のメンバーに関して、階層の特定のレベルにある祖先を戻す。

HIER_CHILD_COUNT

階層のすべてのディメンション・メンバーの子、または特定のメンバーの子の数を戻す。

HIER_DEPTH

階層のすべてのメンバーまたは特定のメンバーのレベルの深さを表す数値を戻す(0が最上位レベル)。

HIER_LEVEL

階層のすべてのメンバーまたは特定のメンバーのレベルを戻す。

HIER_PARENT

階層のすべてのディメンション・メンバーまたは特定のメンバーの親を戻す。

HIER_TOP

階層のすべてのメンバーまたは特定のメンバーの最上位の祖先を戻す。

LAG

現在の期間より指定した数だけ前の期間における特定の式の値を戻す。

LAG_VARIANCE

現在の期間の値と前の期間の値の差を戻す。

LAG_VARIANCE_PERCENT

現在の期間の値と前の期間の値の相違率を戻す。

LEAD

現在の期間より指定した数だけ後の期間における特定の式の値を戻す。

LEAD_VARIANCE

現在の期間の値とそれより後の期間の値の差を戻す。

LEAD_VARIANCE_PERCENT

現在の期間の値と後の期間の値の相違率を戻す。

MAX

特定のディメンションに対して計算されたデータ値のある範囲における最大値を戻す。

MIN

特定のディメンションに対して計算されたデータ値のある範囲における最小値を戻す。

OLAP_DML_EXPRESSION

OLAP DML言語で式を実行する。

RANK

式の値に基づいてディメンション・メンバーを順位付ける。この関数はディメンション・メンバーについて連続する数値を戻し、同一の値には同じ順位を割り当てる。

ROW_NUMBER

式の値に基づいてディメンション・メンバーを順位付ける。この関数はディメンション・メンバーについて連続する数値を戻し、同一の値には一意の任意(常に一定とは限らない)の順位を割り当てる。

SHARE

現在のディメンション・メンバーのメジャーの値を、同じディメンションの関連するメンバーの値と比較した割合を計算する。

SUM

特定のディメンションに対して計算されたデータ値のある範囲の合計を戻す。


OLAP DMLを使用した計算済メジャーの作成

OLAP DMLでは、予測、モデル、割当てなどの高度なビジネス計算を利用できます。OLAP DMLは、アナリティック・ワークスペース用の内部データを定義したり操作するための言語です。主なデータ構造には、ディメンション、変数、計算式および値セットが含まれます。アナリティック・ワークスペース内の次元オブジェクトは、データベースの高レベルな次元オブジェクト(キューブ、キューブ・ディメンション、メジャー、属性、階層など)をサポートします。

データベースの次元オブジェクト(キューブ、レベル、階層など)は、OLAP DMLの一部のコマンドでサポートされています。OLAP DMLでは、これらのコマンドに加えて、その他のファンクションや演算子なども使用できます。


参照:

『Oracle OLAP DMLリファレンス』のキューブ対応のOLAP DML文に関する項目

OLAP DMLは、次元オブジェクトの作成と管理、および次元データの操作に特化して開発された成熟度の高い言語です。OLAP DMLでのプログラミングには高度なスキルを必要としますが、他の言語よりも優れた機能や柔軟性が提供されます。

OLAP DMLの計算タイプの選択

Analytic Workspace Managerは、OLAP DMLを使用したユーザー定義の式について、次の2つのタイプをサポートしています。

  • OLAP DML式: OLAP DML式を計算します。この計算タイプは、既存のプログラム、組込みファンクション、または単独の式を実行する際に選択します。OLAP DML式は、計算式のEQ文としてアナリティック・ワークスペース内に格納されます。

  • OLAP DMLファンクション: 「プログラム本体」フィールドに入力されたOLAP DMLプログラムを実行して値を戻します。この計算タイプは、OLAP DMLで新しいプログラムを開発する際に選択します。プログラムの名前は、アナリティック・ワークスペース内の計算式のEQ文に格納されます。

OLAP DML式の作成手順: 

  1. 「計算済メジャーの作成」ダイアログ・ボックスを開きます。

  2. 「計算タイプ」リストから「OLAP DML式」を選択します。

  3. 「データ型」に戻り値のデータ型を選択します。

  4. 「OLAP DML」フィールドに式を入力します。

  5. 「式のコンパイル」をクリックして、構文のエラーをチェックし、式のコンパイル済バージョンを保存します。

  6. 「作成」をクリックして計算済メジャーを作成します。

OLAP DMLファンクションの作成手順: 

  1. 「計算済メジャーの作成」ダイアログ・ボックスを開きます。

  2. 「計算タイプ」リストから「OLAP DMLファンクション」を選択します。

  3. 「データ型」に戻り値のデータ型を選択します。

  4. ファンクションの名前を入力します。

  5. 「プログラム本体」フィールドにプログラムを入力します。DEFINEPROGRAMおよびENDの各コマンドは自動的に生成されるため、これらのコマンドは省略します。

  6. 「式のコンパイル」をクリックして、構文のエラーをチェックし、プログラムのコンパイル済バージョンを保存します。

  7. 「作成」をクリックして計算済メジャーを作成します。

OLAP DML式の例

OLAP DMLには多数の組込みファンクションが用意されています。この例では、RANDOMファンクションを使用して計算済メジャーを作成します。図5-6に、単純な計算の定義を示します。この計算済メジャーは、デフォルトの範囲(0から1)で値を生成します。

図5-6 OLAP DML式の使用

図5-6の説明が続きます。
「図5-6 OLAP DML式の使用」の説明

次の例では、算術演算子を使用して販売数量に2%を加算した値を求めます。このOLAP DMLの例は、「算術演算子を使用した式の構文例」で示した例と非常に似ていますが、メジャーのネーミング規則が異なっている点に注意してください。

units_cube_units * 1.02

OLAP DML式として作成した2つの計算済メジャーに対する問合せの結果は次のとおりです。

PRODUCT                   UNITS     TARGET     RANDOM
-------------------- ---------- ---------- ----------
Envoy Ambassador           2116       2158      .6467
Envoy Executive            2481       2531      .0773
Envoy Standard             3300       3366      .2349
Sentinel Financial        30513      31123      .6027
Sentinel Multimedia        7948       8107      .6494
Sentinel Standard          7302       7448      .5912

OLAP DMLファンクションの例

値を戻すOLAP DMLプログラムはファンクションでもあります。次のプログラムは、現在の売上が前年より低い場合に値ALERTを戻します。実際の計算は、前年の売上からの変化率を求める別の計算済メジャー(UNITS_CUBE_SALES_PCT_CHG_PY)によって行われます。売上が前年より高い場合には、このプログラムはOKAYを戻します。

例5-1 OLAP DMLファンクション

VARIABLE _alert   TEXT
VARIABLE _product NUMBER
 
TRAP ON error
 
_product = product + 0
 
TEMPSTAT product
DO
  LIMIT product TO CHILDREN USING product_parentrel _product
  LIMIT product KEEP UNITS_CUBE_SALES_PCT_CHG_PY LT 0
 
  IF STATLEN(product) GT 0
    THEN _alert = 'ALERT'
    ELSE _alert = 'OKAY'
 
DOEND
 
RETURN _alert
 
error:
RETURN 'ERROR'

図5-7に、このプログラムの計算済メジャーとしての定義を示します。

図5-7 OLAP DMLファンクションの使用

図5-7の説明が続きます。
「図5-7 OLAP DMLファンクションの使用」の説明

この計算済メジャーに対する問合せの結果は次のとおりです。

CHANNEL         TIME         PCTCHG STATUS
--------------- -------- ---------- ------
Catalog         Q1.06            -1 ALERT
Catalog         Q2.06            -1 ALERT
Catalog         Q3.06            -3 ALERT
Catalog         Q4.06            -7 ALERT
Direct Sales    Q1.06            -3 ALERT
Direct Sales    Q2.06            -1 ALERT
Direct Sales    Q3.06            10 OKAY
Direct Sales    Q4.06            -4 ALERT
Internet        Q1.06            29 OKAY
Internet        Q2.06             3 ALERT
Internet        Q3.06             0 ALERT
Internet        Q4.06            16 OKAY