OLAP のセットアップおよび使用者の手引き

DB2 OLAP Server の視点

OLAP アプリケーションおよび多次元データベースを作成すると、DB2 OLAP Server は新規のアプリケーションおよびデータベースをカタログし、スター・スキーマとして知られる 1 組のリレーショナル表を作成します。 さらに、DB2 OLAP Server は数多くの視点を作成および管理して、SQL アプリケーションの多次元データへのアクセスを単純化します。 このような視点を利用すれば、独自のアプリケーションや標準的な照会ツールで多次元データにアクセスすることができます。 アプリケーションの中には、DB2 OLAP Server によって作成されたスター・スキーマで保管されているデータを十分に活用できるように設計されているものもあります。

次のリストは、DB2 OLAP Server によって管理される視点の完全セットです。

視点の命名方式

DB2 OLAP Server は、その基本表と視点をすべて username スキーマに保管します。 ここで、username は、DB2 OLAP Server に割り当てられるユーザー ID です。 この章の SQL の例では、スキーマ名として OLAPSERV を使用しています。

視点名はすべて英大文字です。 視点名は、引用符で囲まないでください。 DB2 OLAP Server は視点名を構成し、カタログ視点に保管します。 ユーザーの SQL アプリケーションで、カタログ視点から視点名を照会することができます。 図 9 では、DB2 OLAP Server の主な視点がまとめられています。

図 9. DB2 OLAP Server スキーマ


Figure views not displayed.

キューブ・カタログ視点の使用

DB2 OLAP Server が username スキーマで使用するキューブ・カタログ視点は 1 つです。 この視点には、各キューブごとに 1 つの行があります。 この視点を使用して、すべての OLAP アプリケーションとスキーマに保管されたキューブの詳細を知ることができます。 キューブ・カタログ視点は、DB2 OLAP Server で管理されるすべての OLAP アプリケーションおよびデータベースをカタログします。

キューブ・カタログ視点名

キューブ・カタログ視点名は CUBECATALOGVIEW です。 他のすべての視点と同様、これは DB2 OLAP Server に割り当てられたスキーマが所有します。

キューブ・カタログ視点の内容

表 14 は、キューブ・カタログ視点の列を示します。

表 14. キューブ・カタログ視点の内容
名前 タイプ 最大サイズ 内容
AppName VarChar 8 CubeName で識別されるリレーショナル・キューブの入った OLAP アプリケーション名
CubeName VarChar 8 多次元データベースの名前
CubeViewName VarChar 27 この多次元データベース用のキューブ視点の完全修飾名
FactViewName VarChar 27 この多次元データベース用のファクト視点の完全修飾名
StarViewName VarChar 27 この多次元データベース用のスター視点の完全修飾名
AliasIdViewName VarChar 27 この多次元データベース用の別名 ID の完全修飾名
LROViewName VarChar 27 この多次元データベース用の LRO 視点の完全修飾名

SQL ステートメントを使用したキューブ・カタログ視点の照会

OLAP アプリケーションのリストを入手するには、次の SQL ステートメントを使用します。

SELECT DISTINCT APPNAME FROM OLAPSERV.CUBECATALOGVIEW

アプリケーション Sample の多次元データベースのリストを入手するには、次の SQL ステートメントを使用します。

SELECT CUBENAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample'

アプリケーション Sample の多次元データベース Basic の視点名のリストを入手するには、次の SQL ステートメントを使用します。

SELECT CUBEVIEWNAME,FACTVIEWNAME,STARVIEWNAME,ALIASIDVIEWNAME,LROVIEWNAME
  FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'

次元情報およびメンバー情報の照会

キューブ視点および次元視点には、リレーショナル・キューブにある次元およびメンバーに関する情報が入っています。 各リレーショナル・キューブごとに 1 つのキューブ視点と、リレーショナル・キューブ内の各次元ごとに 1 つの次元視点があります。 これらの視点を使用して、OLAP アウトラインの次元およびメンバーに割り当てられる属性の多くを照会することができます。

キューブ視点の使用

DB2 OLAP Server が管理する各リレーショナル・キューブごとに 1 つのキューブ視点があります。 キューブ視点には、リレーショナル・キューブの各次元ごとに 1 行ずつあります。 この視点を使用して、キューブの次元に関する情報を入手します。

キューブ視点名

視点名は CubeViewName 列のキューブ・カタログ視点から得られます。

キューブ視点の内容

表 15 はキューブ視点の列を示します。

表 15. キューブ視点の内容
名前 タイプ サイズ 内容
DimensionName VarChar 80 OLAP 次元名
RelDimensionName VarChar 18 DB2 OLAP Server の次元名。 この列には、この次元に対応するスター視点またはファクト視点の列名が入る。 このリレーショナル・キューブのアンカー次元にあるその他すべての次元名およびメンバー名に比べた場合、RelDimensionName は固有名になる。 RelDimensionName は DimensionName の変更バージョン。 DimensionName に加える必要のある変更内容は次のとおり。
  • 名前の長さの制限
  • 多次元の名前では使用できたがリレーショナル名では使用できなかった特殊文字を除去または置換する。
  • 他のすべての変更を行った後で文字を更新して、リレーショナル・キューブの名前空間に固有名を作成する。
DimensionType 短精度整数
この値は次のとおり。
  • 0 = 高密度次元
  • 1 = 疎密度次元
  • 2 = アンカー次元
DimensionTag 短精度整数
この値は次のとおり。
  • 0x00 タグなし
  • 0x01 アカウント
  • 0x02 時間
  • 0x04 国
  • 0x08 通貨区分
DimensionId 整数
OLAP アウトラインにある次元 ID
DimensionViewName VarChar 27 この次元の次元視点の完全修飾名
UDAViewName VarChar 27 この次元のユーザー定義属性 (UDA) 視点の完全修飾名
RATViewName VarChar 27 この次元のリレーショナル属性視点の完全修飾名

SQL ステートメントを使用したキューブ視点の照会

キューブ視点内のデータにアクセスするには、まず、アプリケーションがキューブ・カタログ視点からキューブ視点名を判別しなければなりません。

たとえば、Sample アプリケーションにある Basic データベースのキューブ視点名を検索するには、次の SQL ステートメントでそのデータベースを照会します。

SELECT CUBEVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW
  WHERE APPNAME='Sample' AND CUBENAME='Basic'

この照会の結果は次のようなものになります。

OLAPSERV.SAMPBASI_CUBEVIEW

次元名および対応する Basic データベースの次元視点名をリストするには、以下のようにします。

SELECT DIMENSIONNAME.DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW

Basic データベースの高密度次元の次元名をリストするには、以下のようにします。

SELECT DIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE = 0

スター視点の列を命名するための非アンカー次元名を判別するには、以下のようにします。

SELECT RELDIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE <> 2

Product 次元のリレーショナル属性視点名を戻します。

SELECT RATVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Product'

次元視点名

次元視点名は、キューブ視点の DimensionViewName 列から得られます。

次元視点の内容

表 16 には、次元視点の列を示しています。

表 16. 次元視点の内容
名前 タイプ サイズ 内容
MemberName VarChar 80 メンバーの名前
RelMemberName VarChar 18 アンカー次元のみ。 DB2 OLAP Server のメンバー名。 この名前は、アンカー次元のメンバーに対応するファクト視点およびスター視点内の列を命名するのに使用する。 このリレーショナル・キューブのその他すべてのアンカー次元メンバー名および非アンカー次元名に比べた場合、これは固有名になる。 これは MemberName の変更バージョン。 MemberName に加える必要のある変更内容は次のとおり。
  • 名前の長さの制限
  • 多次元では使用できたがリレーショナル名では使用できなかった特殊文字を除去または置換する。
  • 直前の変更を行った後で文字を更新して、リレーショナル・キューブの名前空間に固有名を作成する。
RelMemberID 整数 なし このメンバー用の DB2 OLAP Server ID。 この ID は次元表をファクト表に結合するのに使用する。
ParentRelId 整数 なし OLAP アウトラインにおけるメンバーの親のリレーショナル ID。 最上位メンバーの値はヌル。
LeftSiblingRelId 整数 なし OLAP アウトラインにおけるメンバーの左の兄弟のリレーショナル ID。 左の兄弟がないメンバーの値はヌル。
Status 整数 なし このメンバーの状況には次の組み合わせが入る。
  • 0x0000= 予約済み
  • 0x0001= 'Never share' に設定されたメンバー
  • 0x0002= 'Label only' に設定されたメンバー
  • 0x0004 = 'Shared member' に設定されたメンバー
  • 0x0008 = 予約済み
  • 0x0010 = 単一の子がある親メンバーまたは集約演算子のある単一の子がある親メンバー (その他すべての子には 'no-op' 演算子が付く)
  • 0x0020 = 'Dynamic Calc And Store' に設定されたメンバー
  • 0x0040= 'Dynamic Calc' に設定されたメンバー
  • 0x0080= 予約済み
  • 0x0100= 予約済み
  • 0x02000= いくつかある子の 1 つが共有されている親メンバー
  • 0x04000= レギュラー・メンバー
CalcEquation Long VarChar (ワークステーション); VarChar (OS/390) 32700 (ワークステーション); 250 (OS/390) 計算済みメンバーのデフォルトの計算等式。 リレーショナル・キューブを計算するために別の計算が計算スクリプトに指定されている場合、デフォルトの計算等式は、メンバー値を計算するための等式として使用されない場合があることに注意。
UnarySymbol 短精度整数 なし 単項計算記号は次のとおり。
  • 0 = 追加
  • 1 = 減算
  • 2 = 乗算
  • 3 = 除算
  • 4 = パーセント
  • 5 = 演算なし
AccountsType 整数 なし この属性はアカウント次元のみに使用。 ここには次の値の組み合わせが入る。
  • 0x0000 = ゼロまたは脱落値をマスクしない
  • 0x4000 = 脱落値をマスクする
  • 0x8000 = ゼロ値をマスクする
  • 0x0001 = 最初をバランス
  • 0x0002 = 最後をバランス
  • 0x0004 = パーセント
  • 0x0008 = 平均
  • 0x0010 = 単位
  • 0x0020 = 詳細のみ
  • 0x0040 = 費用
NoCurrencyConv 短精度整数 なし 通貨換算設定値
  • 0x0000 = 通貨換算する
  • 0x0001 = 通貨換算しない
CurrencyMemberName VarChar 80 このメンバーに関連した通貨キューブからのメンバー名
GenerationNumber 整数 なし このメンバーの世代番号
GenerationName VarChar 80 このメンバーの世代名
LevelNumber 整数
このメンバーのレベル番号
LevelName VarChar 80 このメンバーのレベル名
別名表名。 アウトラインの中で使用される OLAP 別名表には、それぞれに 1 つの別名がある。 VarChar 80 関連した OLAP 別名表中のこのメンバーの別名。 別名がメンバーが与えられていないと、この値はヌルになる。 別名 ID 視点の使用を参照のこと。
リレーショナル属性列名 RatCol ユーザー定義属性には、それぞれに 1 つのリレーショナル属性列がある。 リレーショナル属性列が作成されたときに指定されるデータ・タイプ。 リレーショナル属性列が作成されたときに指定されるサイズ。 このメンバーのリレーショナル属性の値。

SQL ステートメントを使用した次元名の照会

次元視点内のデータにアクセスするには、まず、アプリケーションがキューブ視点から次元視点名を判別しなければなりません。

たとえば、Basic データベースにある時間次元の次元視点名を検索するには、次の SQL ステートメントでそのデータベースを照会します。

SELECT DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Time'

この照会の結果は、OLAPSERV.SAMPBASID_TIME のようになります。

SQL を使用したメンバー名のリスト

時間次元のメンバー名をリストするには、以下のようにします。

SELECT MEMBERNAME FROM OLAPSERV.SAMPBASID_TIME

ファクト視点およびスター視点

DB2 OLAP Server は、スター・スキーマのファクト表の次の 2 つの視点を作成して保守します。

ファクト視点
DB2 OLAP Server が管理する各キューブごとに 1 つのキューブ視点があります。 ファクト視点はファクト表の単純視点です。 ファクト表には多次元データが入ります。 この視点を使用して、次元視点への結合を管理する SQL アプリケーションから直接多次元データにアクセスできます。

スター視点
DB2 OLAP Server が管理する各キューブごとに 1 つのスター視点があります。 スター視点は、スター・スキーマのそれぞれの次元視点にファクト表を結合します。 この視点は、多次元データへの単純 SQL アクセスを提供し、随時照会のほか、次元視点への結合を管理しない汎用照会ツールでの使用に理想的です。

ファクト表にはレベルの異なる集約が含まれているので、集約を行うために SQL アプリケーションを作成する場合は、各次元で選択されているメンバー・セットのレベルが必ず同じになるようにする必要があります。 そうしないと、集約が誤りになります。 この必要を満たす 1 つの方法は、次元表の世代番号フィールドまたはレベル番号フィールドに制約を組み込むことです。

DB2 OLAP Server が作成するファクト表には、非アンカー次元ごとに、また、データを保管するアンカー次元のメンバーごとにそれぞれの 1 つの列があります。 図 9 で使用されているアウトラインに対応するファクト表には、次のような列があります。

次元列に保管されているメンバー ID は、各非アンカー次元のメンバーを参照します。 メンバー ID は、次元視点を使用してメンバー名にマップ可能です。 アンカー・メンバー列には実際のデータ値が保管されます。 アンカー次元メンバーは、アンカー次元の次元視点を使用してファクト視点の列にマップすることができます。

DB2 OLAP Server は、ファクト表の列の内部名およびメンバーの内部 ID を使用します。 ファクト視点は、内部列名を次元名およびメンバー名に置換しますが、次元列メンバー ID をメンバー名にマップすることはありません。 スター次元は、内部列名を次元名およびメンバー名に置換し、ファクト表を次元表に結合することにより、次元列メンバー ID をメンバー名にマップします。

任意の高密度次元をアンカー次元に指定可能ですが、 SQL アプリケーションからファクト視点またはスター視点にアクセスし、随時照会を実行する場合は、アカウント次元をアンカー次元として指定すれば、最も自然なマッピングになります。

ファクト視点名

ファクト視点名は、キューブ・カタログ視点の FactViewName 列から得られます。

ファクト視点の内容

ファクト視点には、列の 2 種類の変数番号があります。

次元例
非アンカー次元ごとに1列

アンカー・メンバー列
データを保管しているアンカー次元メンバーごとに 1 列

表 17 は、ファクト視点内の 2 種類の列について詳しく示しています。

表 17. ファクト視点の内容
名前 タイプ 内容
次元列の場合

次元のショート名はキューブ視点の RelDimensionName 列から取られる。

整数 この次元のメンバーの RelMemberID
アンカー・メンバー列の場合

メンバーのショート・メンバー名は、アンカー次元の次元視点の RelMemberName 列から取られる。

倍精度 このセルのデータ値

SQL ステートメントを使用した UNIX および Windows NT 上のファクト視点の照会

ファクト視点内のデータにアクセスするには、まず、アプリケーションがキューブ・カタログ視点からファクト視点名を判別しなければなりません。

たとえば、Sample アプリケーションの Basic データベースのファクト視点名を検索するには、次の SQL ステートメントを使用します。

SELECT FACTVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW
  WHERE APPNAME='Sample' AND CUBENAME='Basic'

照会の結果は次のようなものになります。

OLAPSERV.SAMPBASI_FACTVIEW

アプリケーションがメンバーの RelMemberID 値を追跡している場合は、ファクト視点を直接照会することができます。 たとえば、製品 RelMemberId 3 (100-20) で、市場 RelMemberId 2 (East)、時間 RelMemberID 4 (Q3) に対してデータ値を選択するには、次のようになります。

SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_FACTVIEW
  WHERE PRODUCT=3 AND MARKET=2 AND TIME=4

普通、ファクト視点に対する照会には、次元視点との結合が組み込まれています。 直前の照会と等しい結合を使用した照会は、次のようになります。

SELECT PROFIT,SALES,COGS
    FROM OLAPSERV.SAMPBASI_FACTVIEW,
         OLAPSERV.SAMPBASID_TIME,
         OLAPSERV.SAMPBASID_MARKET,
         OLAPSERV.SAMPBASID_PRODUCT,
   WHERE OLAPSERV.SAMPBASID_TIME.MEMBERNAME='Q3'
     AND OLAPSERV.SAMPBASID_PRODUCT.MEMBERNAME='100-20'
     AND OLAPSERV.SAMPBASID_MARKET.MEMBERNAME='East'
     AND OLAPSERV.SAMPBASI_FACTVIEW.TIME=OLAPSERV.SAMPBASID_TIME.RELMEMBERID
     AND OLAPSERV.SAMPBASI_FACTVIEW.PRODUCT=OLAPSERV.SAMPBASID_PRODUCT.RELMEMBERID
     AND OLAPSERV.SAMPBASI_FACTVIEW.MARKET=OLAPSERV.SAMPBASID_MARKET.RELMEMBERID

スター視点名

スター視点名は、キューブ・カタログ視点の StarViewName 列から得られます。

スター視点の内容

スター視点には、列の 2 種類の変数番号があります。

次元例
非アンカー次元ごとに1列

アンカー・メンバー列
アンカー次元メンバーごとに 1 列

表 18 は、スター視点内の 2 種類の列について詳しく示しています。


表 18. スター視点の内容
名前 タイプ 内容
次元列の場合

次元のショート名はキューブ視点の RelDimensionName 列から取られる。

VarChar(80) メンバー名
アンカー・メンバー列の場合

メンバーのショート・メンバー名は、アンカー次元の次元視点の RelMemberName 列から取られる。

倍精度 このセルのデータ値

SQL ステートメントを使用した UNIX および Windows NT 上のスター視点の照会

スター視点内のデータにアクセスするには、まず、アプリケーションがキューブ・カタログ視点からスター視点名を判別しなければなりません。

たとえば、Sample アプリケーションの Basic データベースのスター視点名を検索するには、次の SQL ステートメントを使用します。

SELECT STARVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW
  WHERE APPNAME='SAMPLE' and CUBENAME='BASIC'

この照会の結果は、OLAPSERV.SAMPBASI_STARVIEW のようになります。

第 1 四半期における中央市場の製品 100-10 に対するデータ値を選択するには、以下のようにします。

SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW
  WHERE PRODUCT='100-10' AND MARKET='Central' AND TIME='Q1'

第 2 四半期における中央地区の利益の出なかった製品をすべて選択するには、以下のようにします。

SELECT PRODUCT,PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW
  WHERE MARKET='Central' AND TIME='Q2' AND PROFIT < 0

スター視点のすべてのメンバーが同じ階層レベルにあるわけではないので、SQL を使用して集約操作を行う場合、慎重に照会を構成するようにしてください。 集約の重複を避けるため、ある次元で選択したメンバーは同じレベルにします。

たとえば、次の SQL ステートメントは、スター視点の異なるレベルで選択されたメンバーを示しています。 (一部の SALES は、2 つのレベルの合計が集まったものであるため、2 回カウントされることになります。)

SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW
  WHERE MARKET IN ('Central','Illinois') AND
      PRODUCT='100' AND
      TIME IN ('Q1','1996')

イリノイ州が中央地区の一部で、Q1 が 1996 年の一部とすると、この照会の結果は、州と地区の両方で、また、四半期と年度の両方で PROFIT の数字が合計されることになります。 中央地区にはすでにイリノイ州のデータが含まれているので、イリノイ州および Q1 データは、合計のところで 2 度カウントされることになります。 SQL を訂正して、別々の四半期における中央地区の 2 つの州の売上を合計するには、次の例のようにできます。

SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW
  WHERE MARKET IN ('Indiana','Illinois') AND
      PRODUCT='100' AND
      TIME IN ('Q1','Q2')


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]