(57)【特許請求の範囲】
【請求項１】
多次元データベースにおけるオンライン分析処理において、複数のキー次元及び各キー次元に対応する複数のデータ・レコードを含むｍ次元データベースの少なくとも一部分のｎ次元マトリクス提示を生成する方法であって、各データ・レコードはその中にリアル・データを有し、
前記方法は、コンピュータに下記ステップを実行させることを含み、当該ステップは、
各キー次元中の各データ・レコードの前記リアル・データを、当該リアル・データに対応するインデクス値に変換するステップと、
前記複数のキー次元のうちの１つのキー次元に対応する複数のデータ・レコードについて、前記変換されたインデクス値に従い、ファクト値のソート配列を用意するステップであって、前記ファクト値のそれぞれは前記１つのキー次元に対応する各データ・レコードを識別する、前記用意するステップと、
前記インデクス値を使用し且つ前記リアル・データを使用しないで、前記ｎ次元マトリクス提示の次元ごとにエントリポイントを用意するステップであって、当該用意された各エントリポイントは前記ソート配列の対応するファクト値とリンクされるように用意され、前記ソート配列の各ファクト値は、前記ｎ次元マトリクス提示に関連付けられた列内のファクト値に対応する用意されたエントリポイント内に配置される、前記用意するステップと、
前記用意されたソート配列および前記用意された対応するエントリポイントに基づいて、前記複数のキー次元のうちの第１のキー次元のインデクスの数に少なくとも対応しうる列の数、及び前記複数のキー次元のうちの第２のキー次元のインデクスの数に少なくとも対応しうる行の数を求め、前記ｎ次元マトリクス提示のための列及び行の数を用意するステップと、
前記ｎ次元マトリックス提示を生成するために前記インデクス値を前記リアル・データに再変換し、前記用意された列及び行の数並びに前記用意されたエントリポイントに基づいて前記ｎ次元マトリクス提示を生成するステップと
を含む、前記方法。
【請求項２】
前記複数のキー次元のうちの１つのキー次元の前記インデクス値が、整数値であるベクトルによって表され、前記エントリポイントを用意するステップが、前記ソート配列上で及び前記インデクス値上で、配列の線形ベクトル演算を実行するステップを含む、請求項１に記載の方法。
【請求項３】
ファクト値の前記ソート配列を含む列を含む参照テーブルと、各キー次元の前記インデクス値を含む行とを生成するステップと、
前記参照テーブルに基づいて、前記第１のキー次元の前記インデクス値を有する前記ソート配列に関連するソートされた配列テーブルを生成するステップであって、前記ソートされた配列テーブルは、その中でソートされた前記第１のキー次元の前記インデクス値を有する、前記生成するステップと、
前記参照テーブルに基づいて、前記ソート配列を有する前記複数のキー次元の第２のキー次元の前記インデクス値に関連するマッピング・テーブルを生成するステップと、
前記参照テーブルに基づいて、カウント・ベクトルを含むソート位置ポインタ・テーブルを生成するステップであって、当該ソート位置ポインタ・テーブルの要素は、前記エントリポイントの選択されたエントリポイントへポイントするポインタであり、前記選択されたエントリポイントは、前記第２のキー次元の唯一の各インデクス値についての前記データベースの個々のデータ・レコードの総数のカウントの機能である、前記生成するステップと
を含む、請求項２に記載の方法。
【請求項４】
前記線形ベクトル演算を実行するステップが、前記ソートされた配列テーブル中の前記ソート配列の各ファクト値についての第１、第２、及び第３のベクトル演算を逐次に実行するステップを含み、前記各ファクト値が所与のファクト値として示されており、
前記第１の線形ベクトル演算が、前記所与のファクト値を前記マッピング・テーブル中の前記第２のキー次元の対応するインデクス値にリンクし、
前記第２の線形ベクトル演算が、前記第１の線形ベクトル演算の実行から生じる前記第２のキー次元の前記対応するインデクス値を、前記ソート位置ポインタ・テーブルの前記カウント・ベクトルの対応するポインタへリンクし、前記第２の線形ベクトル演算に引き続き、前記カウント・ベクトル中の前記対応するポインタが前記エントリポイントの次のエントリポイントへポイントするように増分され、
前記第３の線形ベクトル演算が、増分される前に前記第２の線形ベクトル演算の実行から生じる前記対応するポインタを使用して、前記所与のファクト値に対応する前記エントリポイントへポイントする、請求項３に記載の方法。
【請求項５】
前記生成するステップが、前記ｎ次元マトリクス提示に関連するピボット提示を生成するステップを含む、請求項１に記載の方法。
【請求項６】
前記生成するステップが、前記ｎ次元マトリクス提示に関連する仮想のｎ次元マトリクスを生成するステップを含む、請求項１に記載の方法。
【請求項７】
ｎがｍに等しい、請求項１に記載の方法。
【請求項８】
ｎがｍに等しくない、請求項１に記載の方法。
【請求項９】
コンピュータに、請求項１〜８のいずれか一項に記載の各ステップを実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータによって実行されるデータベース管理システムに関し、具体的には、対応するＯＬＡＰ（オンライン分析処理：OnLine Analytical Processing）およびデータ・ウエアハウス（Data Warehouse）・アプリケーションに関する。更に具体的には、本発明は、かかるデータベース管理システムに含まれるデータ・レコードのユーザ定義された提示またはビューを生成するための方法およびシステムに関する。さらに具体的には、本発明は、極めて多数のデータ・レコードを有するデータベース管理システムに関する。
【背景技術】
【０００２】
データ・ウエアハウスおよびオンライン分析処理（ＯＬＡＰ）アプリケーションは、多次元データの保存および検索を行う迅速な方法の必要性を強調している。データ・ウエアハウスは、企業の様々なビジネス・システムが収集するデータの全てまたは大部分のための中央レポジトリである。時に、「情報ウエアハウス」という言葉がその代わりに用いられる。通常、データ・ウエアハウスは、企業のメインフレーム・サーバ上に収容されている。様々なオンライン・トランザクション処理（ＯＬＴＰ：online transaction processing）アプリケーションおよび他のソースからのデータは、選択的に抽出されてデータ・ウエアハウス・データベース上で組織化され、分析アプリケーションおよびユーザ・クエリによって用いられる。データ・ウエアハウス処理は、有用な分析およびアクセスのために多様なソースからデータを捕捉することを重視するが、一般に、特殊化した、時にローカルなデータベースにアクセスする必要があり得るエンド・ユーザまたは知識労働者の観点から出発しているわけではない。後者の技術は、一般にデータ・マート（data mart）として既知であり、データ・マイニング（data mining）、ウエブ・マイニング（Web mining）、および意思決定支援システム（ＤＳＳ：decision support system）が、データ・ウエアハウスを利用可能な３種類のアプリケーションである。
【０００３】
ＯＬＡＰは、ユーザが異なる観点から容易かつ選択的にデータを抽出し見ることを可能とするコンピュータ処理である。例えば、ユーザは、データを分析して、１年のある特定の月にある国で販売されたある電気通信会社の携帯電話製品の全てを示すスプレッドシートを表示し、収入の数値を前月の同じ製品のものと比較し、次いで、同じ時間期間のその国での他の製品売上との比較を見るように要求することができる。
【０００４】
この種の分析を容易にするため、ＯＬＡＰデータは、多次元データベースに保存される。リレーショナル・データベースは２次元として考えることができるが、多次元データベースでは、製品、地理上の販売区域、および時間期間等、「データ・キー」と呼ばれることが多い各データ属性を、個々の「次元（dimension）」として考慮する。ＯＬＡＰソフトウエアは、例えば、「ある期間中にヨーロッパ地域である価格を超えて販売された全製品」というように、次元の交差点の位置を指定し、それらを表示することができる。期間等の属性は、サブ属性に分解することができる。
【０００５】
データ・ウエアハウスと同様、ＯＬＡＰを用いて、データ・マイニング、またはデータ・アイテム間で以前は認識されていなかった関係の発見を行うことができる。ＯＬＡＰデータベースは、データ・ウエアハウスほどの大きさは必要でない。なぜなら、傾向分析のために全てのトランザクション・データが必要なわけではないからである。オープン・データベース・コネクティビティ（ＯＤＢＣ：Open Database Connectivity）を用いて、既存のリレーショナル・データベースからデータをインポートして、ＯＬＡＰのための多次元データベースを作成することができる。
【０００６】
上述のように、ＯＬＡＰの機能性を決定するのは、主に、エンド・ユーザの分析およびナビゲーション活動をサポートする、統合されたデータの動的多次元分析である。その活動には、以下のものが含まれる。
−次元間、階層間、あるいはメンバ間、またはそれら全てを通した、計算およびモデリング。
−連続期間に渡る傾向分析。
−画面上で見るためのサブセットのスライシング
−より深い統合レベルへのドリル・ダウン
−基礎にある詳細データへのリーチスルー（Reach-through）
−ビュー・エリアにおける新しい次元の比較のためのローテーション
【０００７】
多くの場合、ＯＬＡＰは、マルチ・ユーザ・クライアント／サーバ環境において実装され、データベースのサイズおよび複雑さに関わらず、データベース・アクセスに対して常に迅速な応答を提供しようと試みる。かかるデータベース・アクセスによって配信されるデータは、一般に、提示されたデータ・レコードのセルの配列によって主に規定される基礎データベースの一部もしくは全内容のクロス集計表またはピボット提示（pivot presentation）またはビューによって、エンド・ユーザに対して提示される。この配列は、平坦なコンピュータ・モニタを用いる通常の場合、２次元でなければならない。ピボット提示についての別の例は、コンピュータ・メモリ、データベース等で用意される２次元データ・アレイである。
【０００８】
図１および２に示すように、基礎にあるデータベースの各データ・レコードは、多数のデータ属性すなわちデータ・キーから成る。データ・レコードの次元、そして従って全データベースの次元は、データ・キーの数によって決定される。
【０００９】
ある具体的なピボット提示は、通常、データ・レコード（例えば、カスタマ情報、それらのカスタマに販売された対応する物品、および各物品ごとの販売時刻）の内容の特定のキー配列についての予め指定されたユーザの好みに依存する。これによって、多くの場合、異なるデータ・レコードの内容または所与のデータ・レコードのデータ・キー要素を、ピボット提示のセルに統合することが必要となる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
多次元データベースにおいてデータ・レコードのピボット提示を生成させるための、多数の手法が存在する。第１の手法は、データベース・クエリによって既存のデータベースのユーザ規定ピボット・ビューを得るために、周知のＳＱＬ（Simple Query Language）を用いることである。しかしながら、大きいデータベースにおけるピボット・ビューの計算は、著しい処理リソースを必要とする。なぜなら、データベースに保存されたデータ・レコードが、基礎にあるクエリ条件に合致するか否かを調べるために、それらデータ・レコードの全てにアクセスしなければならないからである。
【００１１】
第２の手法として、既知のＯＬＡＰソフトウエア・ツールがある。この場合、ハイパーキューブ・データ構造を用いてデータ・レコードを内部で処理するので、中間で生成したＯＬＡＰ情報を保存するために、大きな保存ボリュームを必要とする。
【００１２】
第３の手法によれば、対応するハイブリッド概念を提供するために、上述の第１および第２の手法を組み合わせる。しかしながら、第３の手法も、その性能が著しく変動し、実際のピボット提示に大きく依存する限り、不利である。
【課題を解決するための手段】
【００１３】
従って、本発明の目的は、対応する従来技術の手法よりも効率的で、従って高速に実行し、上述の従来技術の手法の上述の欠点を回避する、データベース管理システムに含まれたデータ・レコードのユーザ定義されたｎ次元マトリクス提示またはビューを生成させるためのコンピュータによって実施される方法およびシステムを提供することである。
【００１４】
別の目的は、適切な応答時間を有する、オンライン分析処理（ＯＬＡＰ）環境において使用可能な方法およびシステムを提供することである。
【００１５】
更に別の目的は、それらのマトリクス提示またはビューを生成させるために最小限の処理リソースしか必要としない方法およびシステムを提供することである。
【００１６】
上述の目的は、独立クレームの特徴によって達成される。有利な実施形態は、サブクレームの主題である。
【００１７】
本発明の基礎にある考えは、例えば、連続データ配列の形態で、ｍ次元ファクト・テーブルに配列するように、多次元データベースの基礎データ・レコードを順番に並べることである。このため、この配列は、好ましくは整数であるプレースホルダー値から成り、これらのプレースホルダー値の各々は、参照テーブルまたはベクトルによって、基礎にある不変のｍ次元ファクト・テーブルにリンクされている。しかしながら、マトリクス提示の次元ｎは、前記次元ｍに等しくすることができる。
【００１８】
基礎にある機構は、具体的には、インデクス値としてのレコード数を除いて、確定的なデータ・キーに属する全てのデータ値フィールドの内容をインデクス値に変換するステップと、前記インデクス値に基づいて最終マトリクス提示を生成させるために全てのソート・ステップを実行するステップとを有する。すなわち、全ソート機構または全ソート・エンジンは、これらのインデクス値のみを用いる。
【００１９】
前記ｎ次元マトリクス提示の「濃度（cardinality）」は、例示した２次元の場合、その２次元マトリクスの列および行の数を意味することに留意しなければならない。もっと次元数が多い場合、すなわちｎが２以上である場合、濃度は、必要な提示リソースを規定する。
【００２０】
好適な実施形態では、例えば２次元提示マトリクスの１行のような、基礎にあるマトリクス提示の単一のセルに提示すべきであるデータ・レコードは、前記プレースホルダー値の各々を含むサブ配列に連続的に配列されている。このため、前記ピボット提示のこれらの単一セルは、前記サブ配列に応じて生成する。この結果、セルのピボット・ビューのため、データ・レコードの全配列のデータ・サブ配列を用いることができる。ユーザが指定するピボット提示に必要なこれらのセルの各々は、特に、配列において開始点として定義され、これによって、提示するファクト・テーブルの必要なデータにアクセスする。
【００２１】
最終マトリクス提示はデータ配列を用いて生成し、それによって、前述のプレースホルダー値のみを用いてｎ次元ファクト・テーブルを参照する。換言すると、当該マトリクス提示は、仮想の２次元マトリクスを用いて得られる。
【００２２】
本実施形態では、前述のデータ配列は、好ましくは整数から成る前述の配列を有する線形ベクトルによって実現される。これによって、例えばファクト・テーブルに含まれる各次元（グループ）のデータ・レコードを、配列ベクトルによって各ユーザ定義ピボット構成のため新たに整列させる。その配列ベクトルを用いたリアル・データ・レコードに対するアクセスは、データ・レコード・インデクス数を用いて達成される。特定のピボット提示に用いるセル、すなわち特定のピボット・ビューに提示する列および行の計算は、リアルタイムで、すなわちオンラインで、すなわち、全く遅延なく、または、極めて短い遅延もしくはユーザに対する応答時間で、実行することができる。
【００２３】
別の実施形態によれば、まず、基礎にあるファクト・テーブルを参照テーブルに変換し、このテーブルに基づいて配列を生成させる。データ・レコードの前記次元の２つの変化を決定するため、別の実施形態では、カウント・ベクトルを利用する。
【００２４】
従って、本発明による機構は、可能なピボット提示を計算する目的のために、例えば全てのデータ・レコードの前集合のような大きなデータ処理およびデータ保存リソースを必要とするデータベースのデータ・レコードの前処理を必要としない。
【００２５】
更に、中間の整列ステップのため、可能なピボット提示（ビュー）に影響を与えることなく、データ・レコード量、従ってデータベースのサイズを拡張することができ、必要な処理時間は基礎にあるデータベースのサイズと共に線形に変化する。これによって、第１の次元は、データ・レコードの前記少なくとも２つの次元の少なくとも第２の次元にマッピングされる。このため、データベースのデータ・レコードの任意の次元を、互いにマッピングすることができ、これによって、データ・レコードの更に別の次元またはその完全な階層を挿入することによって、既存のデータベースの拡張を可能とする。
【００２６】
上述の従来技術の手法とは異なり、本発明による機構は、ピボット提示を求めるために、大きなデータ・セット間の比較のような動作を必要としない。
【００２７】
更に、ピボット提示の異なる集合段階において、実行時間の問題を生じることなく、データベースの特定のデータ・レコード次元をもっと用いることができる。所与のデータベースの以降の異なるピボット・ビューのためにベクトル演算しか用いないので、ユーザ定義のピボット・ビューを与えるためのデータ・レコードの以前生成した配列は、後のピボット・ビューのため有効に維持され、このため、以降のピボット・ビューは常に、既存のピボット・ビューから推論され、既存のピボット・ビューを破壊しない。
【００２８】
本発明の更に別の態様では、選択された２次元ピボット提示は、一般に、列および行の数によって決定する仮想２次元マトリクスに基づいている。このため、提案したピボット処理機構は、所与のピボット提示について、列および行の量、および、前述のサブ配列の配列において、列および行の交差点を提供する。このため、仮想マトリクスのセルの提示は、単に、セルの列および行インデクスによって達成することができる。
【００２９】
このため、任意のユーザ定義ピボット提示を、データベース・レコードから極めて高速に生成することができる。なぜなら、純粋な参照およびカウント技法ならびに整数値で実行される単純な線形（１次元）ベクトル演算のみを用いて、ピボット提示を生成または計算するからである。
【００３０】
本発明によるピボット提示機構は、２次元に限定されず、ｎ次元ピボット提示にも適用することができることを強調しておく。しかしながら、ｎ次元の場合、上述の配列ベクトルは（ｎ−１）次元である。
【００３１】
以下で、添付図面を参照して、本発明について更に詳細に例示する。添付図面から、本発明の更に別の特徴および利点が明らかになる。
【発明を実施するための最良の形態】
【００３２】
以下に、ほとんどの場合は２次元リアル・ファクト・テーブル（real facts table）によって表される所与のリアル・ファクト量について、本発明に従ってどのように任意のピボット・テーブル（クロス集計表）・ビューを生成させるかを示す。また、基礎にあるピボット・テーブル生成機構を、ｎ次元データ・セットのためのｍ次元マトリクス提示を生成させるために使用可能であることを強調する。更に、この機構は、最小限のコストおよび時間労力で実施することができ、最小限のコンピューティング・リソースしか必要とせず、そのため、高性能の生成が可能となる。
【００３３】
ここで、リアル・ファクト量は、各々がキー次元を規定するデータ・キー、および、各キー次元に含まれるデータ値を含むと想定する。以下に更に詳細に示すように、そのファクト量のピボット・ビューは、キー次元のユーザが選択した規則正しい配列、ピボット・ビューの提示された次元でのキー次元の配置、および可能な集合レベルによって与えられる。
【００３４】
図１および２に、本例ではリアル・ファクト・テーブルによって表す、かかる例示的なファクト量、および、そのリアル・ファクト・テーブルのための例示的なピボット・ビューを示す。この例では、リアル・ファクト・テーブルは、キー次元すなわち「カスタマ」１００、「物品」１１０、および「月」１２０において配列された売上１３０を含む。図２に示す対応する例示的ピボット・ビューは、図１に示すリアル・ファクト・テーブルの（ファクト）データ値１４０を、販売合計（右の列）１４０として、「カスタマ」／「物品」／「月」１５０〜１７０の順序で提示する（左の３つの列に示す）。これによって、キー次元「カスタマ」１５０および「物品」１６０は、垂直方向に提示され、キー次元「月」は、四半期の値「Ｑ１」〜「Ｑ４」１７０に統合され、ピボット・ビューの水平方向に提示される。
【００３５】
かかるピボット・ビューを生成させるための基礎にある機構は、ユーザによって選ばれた各任意のピボット提示を、基礎ファクト量のデータ値（例えば配列ベクトル）の連続的に順序付けた配列に変形するための概念に基づいている。この機構の好適な実施形態を、図３〜５によって例示する。
【００３６】
図３に示すように、本実施形態では、最初に、基礎リアル・ファクト・テーブルを、本例においてファクトに「１」から「２０」までの連続番号を与える連続インデクス値２００（左の列）によって拡張する。図４に示す、この結果として得られるピボット・ビューでは、各セル２１０において、それらのファクトのインデクスを提示し、対応するセルにおいてどの売上値を合計しなければならないかを示す。
【００３７】
前述のように、図４に示すピボット・ビューは、配列ベクトルに基づいて生成する。図４のピボット・ビューのための基礎配列ベクトルを図５に示す。これは、２つの列２６０、２７０から成り、左の列２６０は、本例において再び「１」から「２０」までの連続番号を含み、右の列２７０は、図３に示す前述のインデクス値２００を、図４のピボット・ビューを順次構築することができる順序付けた配列で含む。
【００３８】
この配列ベクトルをもっと理解するため、配列ベクトルの内容を逆の方向で、すなわち図４に示すピボット・ビューから開始して示す。このため、矢印２５０によってピボット・ビューの最初の２行に示すように、ピボット提示のセル２１０において行ごとに左から右にインデクスをまとめると、図５に示す配列ベクトルが得られる。
【００３９】
上述のように、ピボット・ビューはベクトル演算のみによって生成され、基礎にあるベクトルは整数値のみを含む。従って、以下に述べる処理ステップがどれも、リテラル・キー値、テキスト、または他のいずれかのリアル・ファクト値のような実際のデータ・キー値を用いない限り、大きな性能の利点が達成される。これらの全ての処理ステップにおいて、上述の整数（基準）値のみを用いる。これらの整数処理ステップを終了した場合にのみ、結果として得られる配列ベクトルに含まれる基準値が、後に説明する割り当てまたは基準（ルックアップ）テーブルによって、対応するリアル・ファクト値に変換し直される。
【００４０】
最初のステップでは、図６に示すリアル・ファクト・テーブルによって例示するように、カスタマ名「ミラー」および「ブラウン」等の、ファクト・テーブルに含まれた異なるキー次元の全てのデータを、そのキー次元における一意の基準値３００によって置換する。これらの一意の基準値が、プレースホルダー値として用いられる。図３に示す例示的なリアル・ファクト・テーブルのファクト量を上述の基準数に変換したものを、図６に示す。
【００４１】
図７に、基準値に変換するための基本機構を示す。これは、既知のルックアップ・テーブル機構の方法で上述の基準値に異なるキー次元のリアル・ファクト値を割り当てるために用いる多数の割り当て（または基準）テーブル３５０〜３７０に基づいている。これを、キー次元「カスタマ」３５０、「物品」３６０、および「月」３７０について、図７に示す。図８に示すような、更に別のキー次元「四半期」３８０を集合階層として用いて、キー次元「月」３９０のための更に別の集合を可能とする。
【００４２】
図３に示すリアル・ファクト・テーブルの全てのキー次元について、第１の整数ベクトル４１０は、各キー次元およびキー次元内での要素（基準値）の生成に関連付けて、基礎にあるファクト列のファクト値のソート配列を用意する。第２の整数ベクトル４００は、キー次元要素（例えば「ブラウン」）の生成ごとに、ソート配列４１０内のその対応するブロックの第１の要素を示す第１ブロック要素（ＦＢＥ：First Block Element）を提供する。これは、図面のうち次に参照する図９〜１１に示されている。これによって、図９〜１１の左側に示すテーブルは、キー次元ごとに、右側に提示した順序付けベクトルにおける第１のエントリの基準インデクスを提供する。このため、図９に示すキー次元「カスタマ」について例示すると、キー「ブラウン」の全ファクト値４２０は１〜７行目に配置され、キー「ジョーンズ」の全ファクト値４３０は８〜１４行目に、キー「ミラー」の全ファクト値４４０は１５行目からテーブルの最後まで配置されている。
【００４３】
ソート・順序を含む第１の整数ベクトル４１０および第１ブロック要素インデクスを含む第２の整数ベクトル４００を得るための必要なステップは、この説明の最後に、より詳細に記述する。
【００４４】
キー次元「四半期」の対応する提示は、「月」のベクトルから容易に導出することができるので、ここでは説明しないことを注記しておく。
【００４５】
ここで図１２および１３〜１９を参照し、以下に、所望のピボット・ビューを得るために、前述の整数ベクトル計算技法を用いて、どのようにリアル・ファクト・データをソートするのかを説明する。最終ソートに用いるファクトの第１のブロックに基づいたソートを行う前ソート・ステップから開始して、ソートはステップごとに計算する。すなわち、最終ソート配列を示すため、これらのブロック内で、ピボット提示のキー次元ごとに計算する。これらの処理ステップによって、ソートするキー次元ごとに新しい群を生成させる。これが、以下のソート・ステップのため、および、計算の最後にピボット提示のセルの内容を与えるための基礎として機能する。
【００４６】
本例では、キー次元「カスタマ」のソートによって、前ソート・ブロックを示す。関連ベクトルに基づいて、「マッピング」および「ソート位置ポインタ」と称するこれらの図に示すテーブルを、図１２に示すように初期化する。図１２に示すテーブルは、全ソート・プロセス「カスタマ」対「物品」対「四半期」の特定のソート・ステップ「カスタマ」対「物品」を示すスナップショットに過ぎないことを強調しておく。これらの全テーブルは繰り返し処理され、各ソート・ステップの最後に、「Fact# NewGrp」フィールドにおいて「結果並べ替え」テーブルに含まれるファクトは、それぞれの次のソート・ステップの間に、「マッピング」テーブルおよび「ソート位置ポインタ」テーブルにおいて再使用されることに言及しておく。しかしながら、第１のソート・ステップの前にこれらのテーブルを初期化するために、「マッピング」テーブルおよび「ソート位置ポインタ」テーブルの列を以下のように初期化する。
【００４７】
「マッピング」テーブルの「TmpGrp」列の各フィールドには、本例「カスタマ」において、ソート配列の第１の次元が記入されている。すなわち、「リアル・ファクト」テーブルの前述の一意の基準値３００が用いられている。更に、「ソート位置ポインタ」テーブルの「NextPos」列の各フィールドは、対応する次元の前述のＦＢＥテーブル４００の「Ｐｏｓ」列を用いて初期化される。
【００４８】
全てのソート・ステップの間、「ソートされた配列」テーブルの「Fact#」列には、対応する次元４１０（すなわち、対応するソート配列・ステップにおける右側の次元）の、「ソートされた配列」テーブルの「ファクト」列が記入されている。この結果、２つの前述の初期化ステップ後に、「結果並べ替え」の内容は消去されるので、これらのフィールドには、次のソート・ステップの間に新たに記入することができる。そのテーブル内の行数は、リアル・ファクト・テーブルに含まれるファクト値の数に等しい。以下で実行される処理ステップは、図面で「ソート配列」と示されているキー次元「物品」に関連するソート配列によって決定する。
【００４９】
図１３〜１９に示すピクチャ配列に、ソート機構自体を更に詳細に示す。これらのピクチャの各々が単一のソート・ステップを示し、このため、その配列に示すソート・ステップの全配列は、全ソート手順の一部のみを示す。全手順は、図示する４つのテーブルの連結に基づく。
【００５０】
最初に、キー次元「カスタマ」について以前のソート・ステップの結果として得られた「ソートされた配列」と示されているキー次元「物品」のテーブルを、「１」から「２０」までパラメータ「Pseq」の順序で処理する。特に、「Fact#」列に含まれたファクト値の各々について、マッピング・テーブルにおいて、「TmpGrp」と示される対応するインデクスを決定する。
【００５１】
図１３に示すソート・ステップにおいて、結果として得られたインデクス、特に、得られた整数値「３」を、「ソート位置ポインタ」テーブルにおいて用いて、次の位置「NextPos」のための値を決定する。これはすなわち、結果として得られる並べ替えテーブルにおけるターゲット・インデクスであり、これによって現在のファクト値を識別することができる。更に、マッピング・テーブルの「LDGrp」列に含まれる対応する値を、「ソートされた配列」テーブルに含まれる対応する値「DGrp」と比較する。双方の値が異なる場合、「結果並べ替え」テーブルの「開始」列で、このインデクスに「真」と示し、これによって新たなグループの開始を規定する。図１３において、図示した手順のステータスにおけるパラメータ「NextPos」は、まだ増分されていないことに留意すべきである。
【００５２】
図１４〜１８は、更に別の５つのステップを示し、ステップ７〜１９を省略して、図１９は、「結果並べ替え」と示す最終的に得られる並べ替えテーブル（ベクトル）を示す。これによって、「カスタマ」対「物品」のソート・ステップの結果は、図１９に示す「結果並べ替え」テーブルの「Fact#」列に保存される。
【００５３】
図２０において、図１９に示した最終的な結果並べ替えテーブルを再び示す。これは、ターゲットのピボット配列を関連するソート配列で示す。「NewGrop」列では、第１行から始めて、グループ・インデクスを１ずつ増分することによって、各行に値を割り当てる。この増分を行うのは、「開始」列で各行にブール値「真」が示される場合、すなわち新たなグループのための開始点が示される場合である。これらのグループは、リアル・ファクトによって与えられるキー次元「カスタマ」および「物品」のための可能な異なる組み合わせに関する。リアル・ファクトの最終的な提示のために必要な各基本キー・テキストに対するアクセスを提供するキー次元内のこれらのグループに対応する基準数は、上述の手順の実行中に容易に決定し管理することができる。
【００５４】
更に図２１を参照すると、以前のソート・ステップ「カスタマ」対「物品」の結果から開始する次のソート・ステップ「カスタマ」対「物品」対「四半期」の初期化を示す。追加の統合ステップを含み、次元「月」を「四半期」に統合することに言及しておく。「ソート位置ポインタ」テーブルの「NextPos」列は、指示値の生成の対応する「PSeq」数によって初期化される。これは、本実施形態では、「結果並べ替え」テーブルの「開始」列におけるブール「真」値である。
【００５５】
「結果並べ替え」テーブルの「Fact#」列から開始して、その列の各フィールドは、図２１に示す「マッピング」テーブルの「TmpGrp」列内に、「結果並べ替え」テーブルの「NewGrp」フィールドにおける対応する値を記入するためのエントリポイントとして用いる。
【００５６】
図２１〜２８に、以前の図面に従って本実施形態の最終的なソート・ステップを示し、これによって最終的なピボット提示を表す。このため、「Fact#」列に与えられるファクト値および「NewGrp」列に与えられるグループ・インデクスに基づいて、以前に記載したように、別の対応する「マッピング」テーブルおよび「ソート位置ポインタ」を再び初期化し、キー次元「四半期」のための次のソート配列を可能とする。この初期化のために結果として得られるテーブルを図２１に示す。図２２〜２７に、最終ソート配列の最初の５つのステップおよび最後のソート・ステップを示す。これらのピクチャは、図１４〜１９にするので、ここではこれ以上詳細に説明しない。
【００５７】
図２８に示す「ピボット配列」テーブルの計算によって、全ソート手順を完了させる。全手順により、このように、順序付けたキー次元「カスタマ」対「物品」対「四半期」についての本ピボット提示の順序配列ベクトルが表される。この順序配列ベクトルは、「結果並べ替え」テーブルの「Fact#」列に保存される。「NewGrp」列に与えられる基礎にあるグループ・インデクスは、基礎にあるピボット提示またはビューの対応するセルに関連する。更に別の対応するファクト基準は、「Fact#」列における各エントリに基づいて容易に決定することができる。
【００５８】
上に与えた例は、ピボット・ビューの水平特定のため用いられる１つのみのキー次元から成る。ソート手順は、ピボット特定に用いられるキー次元の量に限定されないことに留意すべきである。
【００５９】
全体の手順は、各ピボット次元についての個々のソート配列を決定することである。全体的な配列は、個々に生成させられた配列にソート手順を適用し、最初の結果で開始し、そして上述のような「マッピング」テーブルおよび「ソート位置ポインタ」のための入力として次に進むことによって生成される。
【００６０】
また、全体のソート・プロセスは、図６に示す「リアル・ファクト」テーブルのサブセットのために機能する。図１２に示す「マッピング」テーブルの行数は、「ソートされた配列」テーブルの「Fact#」列の可能な最大値、すなわち、「リアル・ファクト」テーブルのファクト行数に対応することに留意すべきである。例えばフィルタ基準のため、ファクトのサブセットのみをソート・プロセスに用いる場合、「マッピング」テーブルのサイズは、選択したファクトのサイズに減ずることができる。これを実行することができるのは、「ソートされた配列」テーブルの「Fact#」列の上述の各初期化が、対応するサブ配列内のリアル・ファクト・インデクスの関連インデクスを用いる場合である。ソート・プロセスの結果は、「結果並べ替え」テーブルの「Fact#」列に保存し、これはリアル・ファクト・インデクスに戻す必要がある。
【００６１】
上述のように、「第１ブロック要素」（ＦＢＥ）整数ベクトル４００および「ソート順序」整数ベクトル４１０を、各ソート・ステップの初期化のために用いる。ＬＢＥインデクス・ベクトルは、図６に示す「リアル・ファクト」テーブルのキー次元列３１０上で計算する。第１のステップとして、前記カウント・ベクトルを求め、カウント・ベクトルの各フィールドは、「Real Fact#」テーブルにおける対応するキー次元の対応する基準数の生成数を含む。カウント・ベクトルにおける各値は、対応する基準数のためのブロック長を反映する。第１のフィールドから最後のフィールドまで値を合算してカウント・ベクトルを処理すると、ステップごとに、対応するグループの開始が与えられる。この結果は、ＦＢＥインデクス・ベクトル４００に保存される。
【００６２】
「ソート順序」整数ベクトル４１０は、ソート手順を用いて計算される。この場合、「ソートされた配列」の「DGrp」列には、各フィールドに、例えば「１」のような同じ値を記入する。「Fact#」列の各フィールドには、「Pseq」列の対応する値を記入する。「マッピング」テーブルの「TmpGrp」列の各フィールドには、図６に示す対応する次元キーの値を記入する。「ソート位置ポインタ」テーブルの「NextPos」列には、対応する次元キーの「ＦＢＥ」整数ベクトル４００を記入する。この初期化においてソート手順を実行すると、「結果並べ替え」テーブルの「Fact#」列に「ソート順序」整数ベクトル４１０が与えられる。
【００６３】
現在のピボット特定内で、例えば「四半期」のような階層レベルを用いる場合、同じ手順を用いることに留意すべきである。例えば「月」のような、対応する次元キーのリアル・ファクト列を階層レベルの基準数に変換する場合、「ＦＢＥ」および「ソート順序」整数ベクトルを計算することができる。
【００６４】
最後に図４および２０を参照すると、本発明に従ってどのように前記エントリポイントが用意されるのかが更に詳細に示されている。最終ピボット提示の濃度（cardinality）（例えば２次元ピボット提示における列および行の数）は、ソート手順の別の結果である。ピボット・ビューの前記次元ごとに、対応するピボット・ビュー次元の濃度は、ピボット特定およびピボット・ビューの入力であるファクトに依存する。与えられた例では、垂直次元の濃度は、「カスタマ」対「物品」のソート・ステップ後に導出されうる。「結果並べ替え」テーブル（図１９を参照のこと）の「NewGrp」列の最後のフィールドは、結果として得られるグループ数を含む。この数は、結果として得られるピボット・ビューの垂直次元の濃度と等しい。このため、各ピボット次元を処理することは、対応するピボット次元の必要とされる濃度を独立して用意する。
【図面の簡単な説明】
【００６５】
【図１】従来技術において既知の例示的なリアル・ファクト・テーブルおよび対応するピボット・ビューを示す。
【図２】従来技術において既知の例示的なリアル・ファクト・テーブルおよび対応するピボット・ビューを示す。
【図３】本発明に従ってピボット・ビューを生成させるための機構の基本的な原理をテーブルによって示す。
【図４】本発明に従ってピボット・ビューを生成させるための機構の基本的な原理をテーブルによって示す。
【図５】本発明に従ってピボット・ビューを生成させるための機構の基本的な原理をテーブルによって示す。
【図６】本発明に従ってピボット・ビューを生成させるための機構の詳細を更に示す。
【図７】本発明に従ってピボット・ビューを生成させるための機構の詳細を更に示す。
【図８】本発明に従ってピボット・ビューを生成させるための機構の詳細を更に示す。
【図９】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１０】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１１】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１２】本発明に従って所望のピボット・ビューを得るためにどのようにリアル・ファクト・データをソートするかを示す概略テーブル図を示す。
【図１３】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１４】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１５】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１６】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１７】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１８】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１９】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図２０】本発明に従った最終結果並べ替えテーブルを示す。
【図２１】本発明に従った最終ソート・ステップを示す。
【図２２】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図２３】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図２４】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図２５】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図２６】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図２７】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図２８】本発明に従って配列ベクトルを生成させるための典型的なベクトル演算を示す。
【図１】
0004609995.tif 000002
【図２】
0004609995.tif 000003
【図３】
0004609995.tif 000004
【図４】
0004609995.tif 000005
【図５】
0004609995.tif 000006
【図６】
0004609995.tif 000007
【図７】
0004609995.tif 000008
【図８】
0004609995.tif 000009
【図９】
0004609995.tif 000010
【図１０】
0004609995.tif 000011
【図１１】
0004609995.tif 000012
【図１２】
0004609995.tif 000013
【図１３】
0004609995.tif 000014
【図１４】
0004609995.tif 000015
【図１５】
0004609995.tif 000016
【図１６】
0004609995.tif 000017
【図１７】
0004609995.tif 000018
【図１８】
0004609995.tif 000019
【図１９】
0004609995.tif 000020
【図２０】
0004609995.tif 000021
【図２１】
0004609995.tif 000022
【図２２】
0004609995.tif 000023
【図２３】
0004609995.tif 000024
【図２４】
0004609995.tif 000025
【図２５】
0004609995.tif 000026
【図２６】
0004609995.tif 000027
【図２７】
0004609995.tif 000028
【図２８】
0004609995.tif 000029