(57)【特許請求の範囲】
【請求項１】
報告仕様からＯＬＡＰ照会を生成する場合の不均衡な階層の補償のための方法であって、
キューブに対してオンライン分析処理（ＯＬＡＰ）照会を生成するための動作を実行するように、１つまたは複数のコンピュータ・プロセッサを構成するステップであって、前記キューブは複数の次元を有し、各次元はメンバの階層を含み、前記動作は、
前記キューブの階層に対して前記報告仕様を受信するステップと、
前記階層の前記複数のメンバの第１のセットを識別するステップであって、前記第１のセットは、前記階層の詳細レベルで下位を有する前記報告仕様によって展開されたメンバを備える、識別するステップと、
前記第１のセットとは異なる、前記複数のメンバの第２のセットを識別するステップであって、前記第２のセットは、前記階層の前記詳細レベルでいかなる下位も有さない前記報告仕様によって展開されたメンバを備える、識別するステップと、
前記報告仕様から前記ＯＬＡＰ照会を生成するステップであって、前記ＯＬＡＰ照会は、合併動作によって、前記階層のメンバの前記第１のセットと前記階層のメンバの前記第２のセットとを接合する、生成するステップと、
を含む、方法。
【請求項２】
前記動作が、前記報告仕様に応答して結果を生成するために前記ＯＬＡＰ照会を実行するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記報告仕様が、前記階層の前記詳細レベルは展開しないが、前記階層の前記詳細レベル以外の少なくとも１つのレベルを展開する、請求項１に記載の方法。
【請求項４】
前記報告仕様がフィルタを含み、前記ＯＬＡＰ照会が前記詳細レベルで前記第１のセットに前記フィルタを適用する、請求項１に記載の方法。
【請求項５】
前記報告仕様がフィルタを含み、前記ＯＬＡＰ照会が前記詳細レベル以外のレベルで前記第２のセットに前記フィルタを適用する、請求項１に記載の方法。
【請求項６】
前記階層が不均衡な階層である、請求項１に記載の方法。
【請求項７】
前記階層が、前記報告仕様によって展開された前記階層の最下位レベルに基づいて不均衡に見える、不揃いの均衡な階層である、請求項６に記載の方法。
【請求項８】
報告仕様からＯＬＡＰ照会を生成する場合の不均衡な階層の補償のためのシステムであって、
１つまたは複数のコンピュータ・プロセッサと、
前記１つまたは複数のコンピュータ・プロセッサによって実行された場合に、キューブに対してオンライン分析処理（ＯＬＡＰ）照会を生成するための動作を実行するように構成されたプログラムを含むメモリとを備え、前記動作は、
前記キューブの階層に対して前記報告仕様を受信するステップと、
前記階層の前記複数のメンバの第１のセットを識別するステップであって、前記第１のセットは、前記階層の詳細レベルで下位を有する前記報告仕様によって展開されたメンバを備える、識別するステップと、
前記第１のセットとは異なる、前記複数のメンバの第２のセットを識別するステップであって、前記第２のセットは、前記階層の前記詳細レベルでいかなる下位も有さない前記報告仕様によって展開されたメンバを備える、識別するステップと、
前記報告仕様から前記ＯＬＡＰ照会を生成するステップであって、前記ＯＬＡＰ照会は、合併動作によって、前記階層のメンバの前記第１のセットと前記階層のメンバの前記第２のセットとを接合する、生成するステップと、
を含む、システム。
【請求項９】
前記動作が、前記報告仕様に応答して結果を生成するために前記ＯＬＡＰ照会を実行するステップをさらに含む、請求項８に記載のシステム。
【請求項１０】
前記報告仕様が、前記階層の前記詳細レベルは展開しないが、前記階層の前記詳細レベル以外の少なくとも１つのレベルを展開する、請求項８に記載のシステム。
【請求項１１】
前記報告仕様がフィルタを含み、前記ＯＬＡＰ照会が前記詳細レベルで前記第１のセットに前記フィルタを適用する、請求項８に記載のシステム。
【請求項１２】
前記報告仕様がフィルタを含み、前記ＯＬＡＰ照会が前記詳細レベル以外のレベルで前記第２のセットに前記フィルタを適用する、請求項８に記載のシステム。
【請求項１３】
前記階層が不均衡な階層である、請求項８に記載のシステム。
【請求項１４】
前記階層が、前記報告仕様によって展開された前記階層の最下位レベルに基づいて不均衡に見える、不揃いの均衡な階層である、請求項１３に記載のシステム。
【請求項１５】
請求項１〜７のいずれか一項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の諸実施形態は、コンピュータベースの多次元データ・モデリングに関する。より具体的に言えば、本発明の諸実施形態は、オンライン分析処理（ＯＬＡＰ）システムのための照会の生成に関する。
【背景技術】
【０００２】
現在、多くの企業は、莫大な量のデータをオンライン・トランザクション処理（ＯＬＴＰ）システムおよび他のデータベースに格納している。たとえばデータは、売上げ、製品、および財務データなどの業務データを含むことができる。意思決定者は、業務上の決定を行う際に、しばしばこうしたデータに依拠する。
【０００３】
しかしながら、通常は業務に関するトランザクション・データを取り込むＯＬＴＰシステムとは異なり、オンライン分析処理（ＯＬＡＰ）システムは、さらに意思決定に通知するために、集約レベルでトランザクション・データを分析する。たとえばビジネス・アナリストは、ＯＬＡＰシステム内で様々な業務範囲全体にわたって集約されたデータを解釈することができる。ビジネス・アナリストは、様々なコンテキストで、ＯＬＡＰシステムからのデータをブラウズすることができる。たとえばビジネス・アナリストは、製品別、顧客別、時間別の売上げ、製造工場別、時間別の不良品などを、見ることが可能である。
【０００４】
一般に、ＯＬＡＰは、データの多次元分析を可能にする。すなわちＯＬＡＰは、データの多次元性を反映するように編成された、「ビュー」または「次元」の形で、データを提供する。ＯＬＡＰシステムは、通常、ビジネス・アナリストが、レベルとも呼ばれる複数の集約レベルで、複数の観点にわたって対話的にデータを検討できるようにする、データ・モデルを含む。ますます人気の高まりつつあるＯＬＡＰシステムのためのデータ・モデルが、データ・キューブ（または単にキューブ）である。ＯＬＡＰシステムは、いくつかのキューブを格納することができる。各キューブは、次元のセット（たとえば時間、地理、製品など）を含む。次元は通常、多くのレベルを備え、レベルは通常、階層型（たとえば、時間次元の場合の月、四半期、および年、地理次元の場合の市、州、および国など）である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って、発明が解決しようとする課題は、報告仕様からＯＬＡＰ照会を生成する場合の不均衡な階層の補償のための方法、システム、およびコンピュータ・プログラム（報告仕様からＯＬＡＰ照会を生成する場合の不均衡な階層の補償）を提供することである。
【課題を解決するための手段】
【０００６】
本発明の一実施形態は、方法を含む。この方法は、キューブに対してオンライン分析処理（ＯＬＡＰ）照会を生成するための動作を実行するように、１つまたは複数のコンピュータ・プロセッサを構成することを含むことができる。キューブは、複数の次元を有することが可能であり、各次元はメンバの階層を含むことが可能である。動作は、一般に、キューブの階層に対して報告仕様を受信すること、および、階層の複数のメンバの第１のセットを識別することを、含むことができる。第１のセットは、階層の詳細レベルで下位（descendant）を有する報告仕様によって展開（project）されたメンバを含むことができる。方法は、第１のセットとは異なる、複数のメンバの第２のセットを識別することも含むことができる。第２のセットは、階層の詳細レベルでいかなる下位も有さない報告仕様によって展開されたメンバを含むことが可能であり、報告仕様からＯＬＡＰ照会を生成することであって、ＯＬＡＰ照会は、合併（union）動作を実行することによって、階層のメンバの第１のセットと階層のメンバの第２のセットとを接合する。
好ましくは、本発明は、動作が報告仕様に応答して結果を生成するためにＯＬＡＰ照会を実行することをさらに含む、方法を提供する。
【０００７】
好ましくは、本発明は、報告仕様が階層の詳細レベルは展開しないが、階層の詳細レベル以外の少なくとも１つのレベルを展開する、方法を提供する。
【０００８】
好ましくは、本発明は、報告仕様がフィルタを含み、ＯＬＡＰ照会が詳細レベルで第１のセットにフィルタを適用する、方法を提供する。
【０００９】
好ましくは、本発明は、報告仕様がフィルタを含み、ＯＬＡＰ照会が詳細レベル以外のレベルで第２のセットにフィルタを適用する、方法を提供する。
【００１０】
好ましくは、本発明は、階層が不均衡な階層である、方法を提供する。
【００１１】
好ましくは、本発明は、階層が、報告仕様によって展開された階層の最下位レベルに基づいて不均衡に見える、不揃いの（ragged）均衡な階層である、方法を提供する。
【００１２】
本発明のさらに他の実施形態は、１つまたは複数のコンピュータ・プロセッサと、１つまたは複数のコンピュータ・プロセッサによって実行された場合に、キューブに対してオンライン分析処理（ＯＬＡＰ）照会を生成するための動作を実行するように構成されたプログラムを含むメモリとを有する、システムを含む。キューブは複数の次元を有することが可能であり、各次元はメンバの階層を含むことが可能である。動作は、一般に、キューブの階層に対して報告仕様を受信すること、階層の複数のメンバの第１のセットを識別することであって、第１のセットは、階層の詳細レベルで下位を有する報告仕様によって展開されたメンバを備える、識別すること、第１のセットとは異なる、複数のメンバの第２のセットを識別することであって、第２のセットは、階層の詳細レベルでいかなる下位も有さない報告仕様によって展開されたメンバを備える、識別すること、および、報告仕様からＯＬＡＰ照会を生成することであって、ＯＬＡＰ照会は、合併動作によって階層のメンバの第１のセットと階層のメンバの第２のセットとを接合する、生成することを、含むことができる。
【００１３】
好ましくは、本発明は、動作が報告仕様に応答して結果を生成するためにＯＬＡＰ照会を実行することをさらに含む、システムを提供する。
【００１４】
好ましくは、本発明は、報告仕様が階層の詳細レベルは展開しないが、階層の詳細レベル以外の少なくとも１つのレベルを展開する、システムを提供する。
【００１５】
好ましくは、本発明は、報告仕様がフィルタを備え、ＯＬＡＰ照会が詳細レベルで第１のセットにフィルタを適用する、システムを提供する。
【００１６】
好ましくは、本発明は、報告仕様がフィルタを備え、ＯＬＡＰ照会が詳細レベル以外のレベルで第２のセットにフィルタを適用する、システムを提供する。
【００１７】
好ましくは、本発明は、階層が不均衡な階層である、システムを提供する。
【００１８】
好ましくは、本発明は、階層が、報告仕様によって展開された階層の最下位レベルに基づいて不均衡に見える、不揃いの均衡な階層である、システムを提供する。
【００１９】
本発明の他の実施形態は、プロセッサ上で実行された場合に、キューブに対してオンライン分析処理（ＯＬＡＰ）照会を生成するための動作を実行するプログラムを含む、コンピュータ読み取り可能記憶媒体を含む。キューブは複数の次元を有することが可能であり、各次元はメンバの階層を含むことが可能である。動作は、一般に、キューブの階層に対して報告仕様を受信すること、階層の複数のメンバの第１のセットを識別することであって、第１のセットは、階層の詳細レベルで下位を有する報告仕様によって展開されたメンバを備える、識別すること、第１のセットとは異なる、複数のメンバの第２のセットを識別することであって、第２のセットは、階層の詳細レベルでいかなる下位も有さない報告仕様によって展開されたメンバを備える、識別すること、および、報告仕様からＯＬＡＰ照会を生成することであって、ＯＬＡＰ照会は、合併動作によって階層のメンバの第１のセットと階層のメンバの第２のセットとを接合する、生成することを、含むことができる。
【００２０】
好ましくは、本発明は、プロセッサ上で実行された場合に、キューブに対してオンライン分析処理（ＯＬＡＰ）照会を生成するための動作を実行するプログラムを含む、コンピュータ読み取り可能記憶媒体を提供し、キューブは複数の次元を有し、各次元はメンバの階層を含み、動作は、キューブの階層に対して報告仕様を受信すること、階層の複数のメンバの第１のセットを識別することであって、第１のセットは、階層の詳細レベルで下位を有する報告仕様によって展開されたメンバを備える、識別すること、第１のセットとは異なる、複数のメンバの第２のセットを識別することであって、第２のセットは、階層の詳細レベルでいかなる下位も有さない報告仕様によって展開されたメンバを備える、識別すること、および、報告仕様からＯＬＡＰ照会を生成することであって、ＯＬＡＰ照会は、合併動作によって階層のメンバの第１のセットと階層のメンバの第２のセットとを接合する、生成することを、含む。
【００２１】
好ましくは、本発明は、動作が報告仕様に応答して結果を生成するためにＯＬＡＰ照会を実行することをさらに含む、コンピュータ読み取り可能記憶媒体を提供する。
【００２２】
好ましくは、本発明は、報告仕様が階層の詳細レベルは展開しないが、階層の詳細レベル以外の少なくとも１つのレベルを展開する、コンピュータ読み取り可能記憶媒体を提供する。
【００２３】
好ましくは、本発明は、報告仕様がフィルタを含み、ＯＬＡＰ照会が詳細レベルで第１のセットにフィルタを適用する、コンピュータ読み取り可能記憶媒体を提供する。
【００２４】
好ましくは、本発明は、報告仕様がフィルタを含み、ＯＬＡＰ照会が詳細レベル以外のレベルで第２のセットにフィルタを適用する、コンピュータ読み取り可能記憶媒体を提供する。
【００２５】
好ましくは、本発明は、階層が不均衡な階層である、コンピュータ読み取り可能記憶媒体を提供する。
【００２６】
好ましくは、本発明は、階層が、報告仕様によって展開された階層の最下位レベルに基づいて不均衡に見える、不揃いの均衡な階層である、コンピュータ読み取り可能記憶媒体を提供する。
【００２７】
次に、添付の図面を参照しながら、単なる例によって、本発明の諸実施形態について説明する。
【００２８】
しかしながら、添付の図面は単に本発明の典型的な諸実施形態を示すものであり、したがって、本発明が他の等しく効果的な諸実施形態を認めることができる場合、その範囲を限定するものとみなされるべきでないことに留意されたい。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施形態に従った、報告仕様からＯＬＡＰ照会を生成するためのシステムを示すブロック図である。
【図２】本発明の一実施形態に従った、キューブの地理的次元に関する階層を示す図である。
【図３】本発明の一実施形態に従った、階層のメンバに関する数量値を示す表３００である。
【図４】本発明の一実施形態に従った、報告仕様を満たす国および県の数量値を示す表である。
【図５】本発明の一実施形態に従った、報告仕様からＯＬＡＰ照会を生成するための方法を示す流れ図である。
【図６】本発明の一実施形態に従った、報告仕様をＯＬＡＰ照会に変換する際に補償を実行すべきであるかどうかを決定するための方法を示す流れ図である。
【図７】本発明の一実施形態に従った、報告仕様から補償と共に変換されたＯＬＡＰ照会を示す図である。
【図８】本発明の一実施形態に従った、ＯＬＡＰ照会の例を示す図である。
【発明を実施するための形態】
【００３０】
本発明の諸実施形態は、一般に、報告仕様からＯＬＡＰ照会を生成するための技法を提供する。本発明の一実施形態は、ＯＬＡＰシステムと対話するアプリケーションを提供する。このアプリケーションは、報告仕様に関するより正確な結果を生成するために、ＯＬＡＰシステム内のデータがどのように編成されるかを補償することができる。
【００３１】
一実施形態では、アプリケーションは、ＯＬＡＰシステム内のキューブの次元階層に関する報告仕様を受信することができる。アプリケーションは、次元階層あるいは報告仕様またはその両方が、不完全あるいは不正確またはその両方の結果を生み出す可能性の高いある特徴を示すかどうかを判定することができる。特にアプリケーションは、報告仕様の基礎となる不均衡な次元階層を識別することができる。こうしたケースでは、アプリケーションは、報告仕様からＯＬＡＰ照会を生成する際に、（すなわち、不完全または不正確な結果を防ぐために、）これらの特徴を補償することができる。特に、アプリケーションは、ＯＬＡＰ照会の実行に先立って特徴を補償することができる。ＯＬＡＰ照会の実行（の後ではなく）に先立って補償することにより、アプリケーションは、（ｉ）報告仕様内のフィルタを満たすことができないことについて、正しく除外されたメンバと、（ｉｉ）階層の構造によって誤って除外されたメンバとを、より容易に区別することができる。さらにアプリケーションは、アプリケーションが（報告仕様あるいは階層またはその両方に基づいて）必要であると認める場合にのみ、補償を実行することが可能であるため、補償から生じる処理オーバヘッドを削減することができる。
【００３２】
ＯＬＡＰシステムは、通常、異なる集約レベルでデータの異なるビューを提供するために、様々なレベルで様々な次元にわたってデータを集約する。データは、ビジネスのタイプおよび組織に応じて、様々な期間にわたり、地理別、チーム別、および製品別に集約することができる。集約されたデータは、一般に集約と呼ばれる。たとえば集約は、指定された製品に関する７月の売上げデータとすることができる。スライスは通常、少なくとも次元のサブセットからのレベルを備え、集約は通常、スライスに関連付けられる。
【００３３】
さらに、キューブの各次元は、いくつかのメンバを含む。次元のメンバは、次元のレベルによって階層に編成することができる。たとえばキューブは、様々な地理的位置（たとえばカナダ、フランスなど）を表すメンバを有する地理的次元を含むことができる。オタワ（地理的次元の階層の市レベルに存在する）を表すメンバは、オンタリオ（階層の州レベルに存在する）を表すメンバの子メンバとして、階層内に配置構成することができる。同様に、次にオンタリオを表すメンバは、カナダ（階層の国レベルに存在する）を表すメンバの子メンバとして、階層内に配置構成することができる。
【００３４】
キューブは、尺度、すなわちキューブの次元階層に沿って集約される測定基準も含むことができる。たとえばキューブは、様々な期間にわたって様々な製品に関する総売上げ尺度を含むことができる。同様にキューブは、平均売上げ尺度を含むこともできる。ユーザは、各次元内のメンバおよび尺度を識別することによって、キューブの個々のセルを照会することができる。
【００３５】
通常、ビジネス・アナリストは、データを取り出すためにＯＬＡＰ照会を発行し、様々なレベルでの集約を要求することができる。集約が使用できない場合、ＯＬＡＰシステムはリアルタイムで集約を計算することができる。集約の計算は時間がかかるため、様々なＯＬＡＰシステムは、ＯＬＡＰ照会をより効率的に処理するために、事前に計算された集約を記憶する。
【００３６】
通常、ＯＬＡＰシステムによってサポートされる動作の例には、階層を通じた次元全体にわたって、またはメンバ全体にわたって適用される計算およびモデリング、連続する期間全体にわたる傾向分析、データのスクリーン表示のためのサブセットのスライス化、データの統合のより深いレベルへのドリルダウン、基礎となる詳細データへの到達、およびデータに関連付けられた表示領域内での新しい次元比較へのローテーションが含まれる。ＯＬＡＰシステムの一例が、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ（Ｒ））から入手可能な、InfoShpere（ＴＭ） Warehouse Cubing Servicesである。
【００３７】
ＯＬＡＰ照会を処理する際に、（ＯＬＡＰシステムの）ＯＬＡＰサーバは、ＯＬＡＰシステムのキューブの外側に常駐するデータから、キューブ内のセルの値を導出することができる。たとえばデータは、基礎となる（リレーショナル）データベース内に常駐可能である。セル値を生成するために、ＯＬＡＰサーバはセルを分析して、他の次元からのどの尺度およびどのメンバがセルに関連付けられているかを決定することができる。さらに、セル値が使用できない（すなわち事前に計算されていないか、または基礎となるデータに関連して古い）場合、ＯＬＡＰサーバはリレーショナル・データベース照会を生成し、データベースからセル値を決定することができる。リレーショナル・データベース照会は、次元基準に合致するデータベース行（たとえば、セルの期間および製品に関連付けられた行）を集約することができる。ＯＬＡＰシステムに関する照会言語の例は、ワシントン州レドモンドのMicrosoft（Ｒ）社からのMutidimensional Expressions（ＭＤＸ）である。リレーショナル・データベースに関する照会言語の例は、Structured Query Language（ＳＱＬ）である。たとえば、キューブに対するＭＤＸ照会の処理中に、ＯＬＡＰサーバは、キューブのセルに関連付けられた次元メンバおよび尺度から、ＳＱＬ照会を生成することができる。結果として、リレーショナル・データベースは、（たとえばＳＱＬステートメントのＷＨＥＲＥ節における制約に基づいて）そのセルに関連するデータのみを集約し、集約されたデータをＯＬＡＰサーバに戻す。一般に、ＯＬＡＰ照会は集約の複数レベルでデータをフェッチすることが可能であり、一実施形態では、ＯＬＡＰ照会によるかまたはそれに含まれる集約されたデータ参照のそれぞれ別個のレベルに対して、１つのＳＱＬ照会が生成される。
【００３８】
さらに、ＯＬＡＰシステムは、データを分析および報告するための追加の機能をユーザに提供するために、他のアプリケーションと対話することができる。こうしたアプリケーションの例に、ＩＢＭ（Ｒ）のCognos（Ｒ）およびSAP（Ｒ）BusinessObjects（ＴＭ）が含まれる。これらのアプリケーションは、データの分析および報告の構築のための多様なツールをユーザに提供することができる。たとえばこれらのアプリケーションは、ユーザから報告仕様を受け取ることができる。これらのアプリケーションは、この報告仕様を、基礎となるデータ・ソースへの１つまたは複数の照会に変換することができる。たとえばアプリケーションは、報告仕様を１つまたは複数のＯＬＡＰ照会に変換することができる。しかしながら、いくつかのケースでは、次元階層がどのように構造化されているかに応じて、次元階層上の報告仕様は、不完全あるいは不正確な、またはその両方の結果を生み出す可能性がある。
【００３９】
本明細書では、ＯＬＡＰシステムと対話するアプリケーションを参照しながら、諸実施形態について説明することができるが、他の諸実施形態は広義に企図される。たとえば一実施形態では、ＯＬＡＰシステム自体が、本明細書で説明された技法を使用して報告仕様からＯＬＡＰ照会を生成する。
【００４０】
以下では、本発明の諸実施形態を参照する。しかしながら、本発明が、特定の説明される諸実施形態に限定されるものでないことを理解されたい。それに代わって、異なる実施形態に関するか否かに関わらず、本発明の実装および実施のために、以下の特徴および要素の任意の組み合わせが企図される。さらに、本発明の諸実施形態は、他の可能なソリューションあるいは従来技術またはその両方を上回る利点を達成することができるが、所与の実施形態によって特定の利点が達成されるか否かは、本発明を制限するものではない。したがって、以下の態様、特徴、実施形態、および利点は単なる例示的なものであって、特許請求の範囲に明示的に示されている場合を除き、添付の特許請求の範囲の要素または制限とはみなされない。同様に、「本発明」への言及は、本明細書に開示されたいかなる発明の課題の一般化としても解釈されるものではなく、特許請求の範囲に明示的に示されている場合を除き、添付の特許請求の範囲の要素または制限とみなされるものではない。
【００４１】
本発明の一実施形態は、コンピュータ・システムと共に使用するためのプログラム製品として実装される。プログラム製品のプログラムは、諸実施形態の機能（本明細書で説明される方法を含む）を定義し、多様なコンピュータ読み取り可能記憶媒体上に含めることができる。例示的なコンピュータ読み取り可能記憶媒体は、（ｉ）情報が永続的に記憶される書き込み不可の記憶媒体（たとえば、ＣＤ−ＲＯＭドライブによって読み取り可能なＣＤ−ＲＯＭディスクなどのコンピュータ内の読み取り専用メモリ・デバイス）、（ｉｉ）変更可能な情報が記憶される書き込み可能の記憶媒体（たとえば、ディスケット・ドライブまたはハードディスク・ドライブ内のフレキシブル・ディスク）を含むが、これらに限定されるものではない。こうしたコンピュータ読み取り可能記憶媒体は、本発明の機能を対象とするコンピュータ読み取り可能命令を担持している場合、本発明の実施形態である。他の媒体は、無線通信ネットワークを含む、コンピュータまたは電話網を介するなど、コンピュータに情報を搬送する際に介する、通信媒体を含む。後者の実施形態は、具体的に、インターネットおよび他のネットワークとの間で情報を伝送することを含む。こうした通信媒体は、本発明の機能を対象とするコンピュータ読み取り可能命令を担持している場合、本発明の実施形態である。広義には、コンピュータ読み取り可能記憶媒体および通信媒体は、本明細書ではコンピュータ読み取り可能媒体と呼ぶことができる。
【００４２】
一般に、本発明の諸実施形態を実装するために実行されるルーチンは、オペレーティング・システム、あるいは特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクト、または命令のシーケンスの一部とすることができる。本発明のコンピュータ・プログラムは、典型的には、ネイティブ・コンピュータによって機械読み取り可能形式、したがって実行可能命令に変換されることになる、多数の命令からなる。またプログラムは、プログラムに対してローカルに常駐するか、またはメモリ内または記憶デバイス上に見つけられる、変数およびデータ構造からなる。加えて、以下で説明される様々なプログラムは、プログラムに関して本発明の特定の実施形態内に実装されるアプリケーションに基づいて識別することができる。しかしながら、それが従う任意の特定のプログラム名称（nomenclature）は、単なる便宜上のものであり、本発明は、こうした名称によって識別されるかあるいは示唆される、またはその両方の、任意の特定のアプリケーションでのみ使用されるように限定されるものでないことを理解されたい。
【００４３】
図１は、本発明の一実施形態に従った、報告仕様からＯＬＡＰ照会を生成するためのシステム１００を示すブロック図である。ネットワーク化されたシステム１００は、コンピュータ１０２を含む。コンピュータ１０２は、ネットワーク１３０を介して他のコンピュータに接続することができる。一般に、ネットワーク１３０は、通信ネットワークあるいはワイド・エリア・ネットワーク（ＷＡＮ）またはその両方とすることができる。特定の実施形態では、ネットワーク１３０はインターネットである。
【００４４】
コンピュータ１０２は、一般に、バス１１２を介してメモリ１０６、ネットワーク・インターフェース・デバイス１１０、ストレージ１０８、入力デバイス１１４、および出力デバイス１１６に接続された、プロセッサ１０４を含む。コンピュータ１０２は、一般にオペレーティング・システムの制御下にある。オペレーティング・システムの例には、ＵＮＩＸ、Microsoft Windows（Ｒ）オペレーティング・システムのバージョン、およびＬｉｎｕｘ（Ｒ）オペレーティング・システムの配信が含まれる。（注：Ｌｉｎｕｘは、米国および他の諸国におけるLinus Torvaldsの商標である。）より一般的には、本明細書で開示された機能をサポートする任意のオペレーティング・システムが使用可能である。プロセッサ１０４は、単一のＣＰＵ、複数のＣＰＵ、複数の処理コアを有する単一のＣＰＵなどを代表するように、含められている。同様に、メモリ１０６は、ランダム・アクセス・メモリとすることができる。メモリ１０６は単一のエンティティとして示されているが、メモリ１０６は複数のモジュールを備えることができること、ならびに、メモリ１０６は高速レジスタおよびキャッシュから低速であるがより大きなＤＲＡＭチップまでの複数レベルで存在可能であることを、理解されたい。ネットワーク・インターフェース・デバイス１１０は、コンピュータ１０２がネットワーク１３０を介して他のコンピュータと通信できるようにする、任意のタイプのネットワーク通信デバイスとすることができる。
【００４５】
ストレージ１０８は、ハードディスク・ドライブ記憶デバイスとすることができる。ストレージ１０８は単一のユニットとして示されているが、ストレージ１０８は、固定ディスク・ドライブ、フレキシブル・ディスク・ドライブ、テープ・ドライブ、取り外し可能メモリ・カード、または光ストレージなどの、固定あるは取り外し可能、またはその両方の、記憶デバイスの組み合わせとすることができる。メモリ１０６およびストレージ１０８は、複数の１次および２次記憶デバイスにまたがる、１つの仮想アドレス・スペースの一部とすることができる。
【００４６】
入力デバイス１１４は、コンピュータ１０２に入力を提供するための任意のデバイスとすることができる。たとえば、キーボード、キーパッド、ライトペン、タッチスクリーン、トラックボール、または音声認識ユニット、オーディオ／ビデオ・プレーヤなどが、使用可能である。出力デバイス１１６は、コンピュータ１０２のユーザに出力を提供するための任意のデバイスとすることができる。たとえば出力デバイス１１６は、それぞれのインターフェース・カード、すなわちビデオ・カードおよびサウンド・カードを備えた、任意の従来型ディスプレイ・スクリーンまたはスピーカ・セットとすることができる。入力デバイス１１４とは別に示されているが、出力デバイス１１６および入力デバイス１１４は組み合わせ可能である。たとえば、一体型タッチスクリーンを備えたディスプレイ・スクリーン、一体型キーボードを備えたディスプレイ、またはテキスト音声変換器と組み合わされた音声認識ユニットが、使用可能である。
【００４７】
図に示されるように、コンピュータ１０２のメモリ１０６は、ＯＬＡＰサーバ１４８、アプリケーション１５０、報告仕様１５２、ＯＬＡＰ照会１５４、および、ＯＬＡＰ照会１５４の実行結果１５６を含む。コンピュータ１０２のストレージ１０８は、キューブ１５８およびデータ１６０を含む。
【００４８】
一実施形態では、ＯＬＡＰサーバは、（キューブ１５８の形の）要約データへのアクセスを提供するために大量の詳細データを要約する、ソフトウェア・アプリケーションとすることができる。詳細データ、または単にデータ１６０は、リレーショナル・データベースに記憶することができる。ＯＬＡＰサーバ１４８は、データ１６０からキューブ１５８を生成し、キューブ１５８を次元データ・ストアに記憶することができる。さらにＯＬＡＰサーバ１４８は、リレーショナル・データベースを照会することによって、キューブ１５８の１つまたは複数のセルを事前に計算することができる。事前に計算されたセルは、キューブ１５８に記憶することができる。一実施形態では、データ１６０およびキューブ１５８の両方を、リレーショナル・データベースに記憶することができる。
【００４９】
一実施形態では、アプリケーション１５０は、データを分析および報告するための追加の機能をユーザに提供するために、ＯＬＡＰサーバ１４８と対話する。たとえばアプリケーション１５０は、報告仕様１５２に基づいてユーザに関する報告を作成することができる。報告仕様１５２は、ＯＬＡＰ照会１４８よりも単純に作成することができる。すなわち、ＯＬＡＰ照会１４８を構成するために必要な通常の技術的知識をそれほど備えていないユーザであっても、報告仕様１５２を作成することができる。ＯＬＡＰ照会言語（たとえばＭＤＸ）の複雑さをユーザに見せないような報告言語で、報告仕様１５２を作成することができる。
【００５０】
一実施形態では、アプリケーション１５０は報告仕様１５２をＯＬＡＰ照会１５４に変換する。キューブ１５８（あるいは報告仕様またはその両方）の次元階層の特定の特徴が存在する場合、ＯＬＡＰ照会１５４は、不正確あるいは不完全またはその両方の結果を取り出す可能性がある。たとえば（ｉ）ＯＬＡＰ照会１５４が次元階層の詳細レベルでフィルタを含む場合、および（ｉｉ）次元階層が、（Ａ）不均衡である、または（Ｂ）均衡であるが報告の目的で不均衡に見える（すなわち、報告仕様によって展開される最下位レベルが不均衡に見える）、のいずれかの場合、フィルタは、詳細レベルに下位を持たない次元階層のメンバを（照会１５４の結果から）誤って除外する可能性がある。したがってアプリケーション１５０は、報告仕様１５２をＯＬＡＰ照会１５４に変換する際に、特徴を検出および補償することができる。したがってアプリケーション１５０は、より正確あるいは完全またはその両方の結果を取り出す、ＯＬＡＰ照会１５４を生成することができる。
【００５１】
一般に、（ｉ）階層の最下位（すなわち一番下）レベルにない、および（ｉｉ）子を持たない、少なくとも１つのメンバが存在する場合、階層は「不均衡」であるとみなすことができる。言い換えれば、階層は、階層の最下位レベルではない少なくとも１つのリーフ（leaf）・メンバを含む場合、不均衡である。さらに階層は、レベルをスキップする少なくとも１つの親子関係を含む場合、「不揃い」である。言い換えれば、階層は、少なくとも１つのメンバがその直下のレベル以外に子を有する場合、不揃いである。さらに、不揃いの均衡の階層は、報告仕様１５２によって指定された階層の一部の最下位（すなわち一番下の）レベルにない少なくとも１つのメンバが存在する場合、報告の目的で不均衡とすることができる。
【００５２】
均衡な階層、不均衡な階層、および不揃いの階層の概念を示すために、図２は、本発明の一実施形態に従った、図１のキューブの次元に関する階層２００を示す。この例では、キューブはキューブ・データ・セットの地理的次元に関する階層を表す。こうしたキューブは、時間および製品に関する次元も有することができるものと想定する。また、キューブと呼んでいるが、ＯＬＡＰキューブの次元性は、Ｎ次元まで拡張可能であることにも留意されたい。図に示されるように、階層２００は１４のメンバを含む。１４のメンバは、例示的に、地理２０２、カナダ２１０、フランス２１２、ルクセンブルグ大公国２１４、バチカン２１６、オンタリオ２１８、ケベック２２０、ノルマンディ２２２、イルドフランス２２４、オタワ２２６、モントリオール２２８、ルーアン２３０、パリ２３０、およびルクセンブルグ２３４を含む。さらに地理２０２は、階層２００の第１のレベル（すべての地理的位置を表す）に常駐する。カナダ２１０、フランス２１２、ルクセンブルグ大公国２１４、およびバチカン２１６は、国２０４を表す第２のレベルに常駐する。オンタリオ２１８、ケベック２２０、ノルマンディ２２２、イルドフランス２２４は、州２０６を表す第３のレベルに常駐する。オタワ２２６、モントリオール２２８、ルーアン２３０、パリ２３０、およびルクセンブルグ２３４は、市２０８を表す第４のレベルに常駐する。
【００５３】
階層２００に示されるように、地理２０２の子メンバは、カナダ２１０、フランス２１２、ルクセンブルグ大公国２１４、およびバチカン２１６を含む。同様に、カナダ２１０の子メンバは、オンタリオ２１８およびケベック２２０を含む。フランス２１２の子メンバは、ノルマンディ２２２およびイルドフランス２２４を含む。ルクセンブルグ大公国２１４の子メンバは、ルクセンブルグ２３４である。オンタリオ２１８の子メンバはオタワ２２６である。ケベック２２０の子メンバはモントリオール２２８である。ノルマンディ２２２の子メンバはルーアン２３０である。イルドフランス２２４の子メンバはパリ２３０である。
【００５４】
前述のように、階層の最下位レベルでない少なくとも１つのリーフ・メンバが存在する場合、階層は不均衡である。たとえば、階層２００のバチカン２１６は、階層の最下位レベル（すなわち市２０８）でないリーフ・メンバである。したがって階層２００は不均衡である。しかしながら、バチカン２１６がなければ、階層２００は均衡となる。
【００５５】
前述のように、階層は、少なくとも１つのメンバが直下以外のレベルに子を有する場合、不揃いである。たとえば（国２０４レベルの）ルクセンブルグ大公国２１４は、市２０８を表すレベルに、子であるルクセンブルグを有する。言い換えれば、ルクセンブルグ大公国２１４とルクセンブルグ２３４との間の親子関係は、州２０６を表すレベルをスキップしている。したがって、階層２００は不揃いである。しかしながら、この親子関係がなければ、階層２００は不揃いではなくなる。さらに、不揃いの均衡な階層は、報告仕様１５２によって指定された階層の一部の最下位（すなわち一番下の）レベルでない少なくとも１つのメンバが存在する場合、報告の目的で不均衡とすることができる。たとえば報告仕様が示す場合、国２０４および州２０６のみが結果１５６に含まれることになる。国２０４の少なくとも１つのメンバがリーフ・メンバである（したがって州２０６レベルに子を有さない）場合、均衡な階層は、報告の目的で不均衡であると言及される。
【００５６】
一実施形態では、アプリケーション１５０は、階層２００に関する報告仕様１５２をＯＬＡＰ照会１５４に変換する。しかしながら、階層２００の特定の特徴が存在する場合、ＯＬＡＰ照会１５４は不正確あるいは不完全またはその両方の結果１５６を生み出す可能性がある。たとえば特定の特徴とは、（ｉ）ＯＬＡＰ照会１５４が次元階層の詳細レベルでフィルタを含むこと、および（ｉｉ）次元階層が、（Ａ）不均衡である、または（Ｂ）均衡であるが報告の目的で不均衡に見える（すなわち、報告仕様によって展開される最下位レベルが不均衡に見える）、のいずれかであること、とすることができる。たとえば、報告仕様１５２が、特定の条件を満たす数量値を有するすべての国および州のリストについて照会するものと想定する。図３は、本発明の一実施形態に従った、図２の階層２００のメンバに関する数量値を示す表３００である。図に示されるように、表３００は、国フィールド３０２、州フィールド３０４、市フィールド３０６、および数量フィールド３０８を含む。表３００は、オタワ２２６が１０，０２０の数量を有することを示す。さらに、モントリオール２２８は２４，３００の数量を有する。さらにルーアンは５，１００の数量を有する。さらにパリは３５，３００の数量を有する。さらにルクセンブルグは７００の数量を有する。さらにバチカンは２００の数量を有する。
【００５７】
報告仕様１５２が、１０，０００未満の数量値を有する国および州のリストを要求するものと想定する。図４は、本発明の一実施形態に従った、報告仕様１５２を満たす国および集の数量値を示す表４００である。図に示されるように、表４００は、国フィールド４０２、州フィールド４０４、および数量フィールド４０６を含む。表４００は、３つの国あるいは州またはその両方が報告仕様１５２を満たすことを示す。３つの国あるいは州またはその両方が、（フランスの）ノルマンディ、ルクセンブルグ大公国、およびバチカンを含む。図に示されるように、ノルマンディ、ルクセンブルグ大公国、およびバチカンは、それぞれ５，１００、７００、および２００の数量値を有し、そのそれぞれが、報告仕様１５２によって要求された１０，０００の数量値未満である。したがってこの例では、報告仕様１５２に応答する国および州のリストは、国フィールド４０２および州フィールド４０４を含む。
【００５８】
さらに、しばしばユーザは、報告内で同じ階層のメンバが相関されるものと予測する。こうしたケースでは、報告は、（国の第１のリストおよび州の第２のリストではなく）国および相関された州のリストを含む。図４と関連した前述の例では、表４００のフィールドは報告内で相関させることが可能である。たとえば、報告内の各行の州セルは、報告内のそれぞれの行の国セルと相関させることが可能である。次に各行の州セルは、報告内のそれぞれの行の国セルと相関させることが可能である。
【００５９】
他の例として、報告仕様１５２が地理的階層の地域および国を展開するものと想定する。報告仕様１５２は、条件（たとえば数量＞２０００００）も含むことができる。以下の地域、すなわち北アメリカ、中央アメリカ、および南アメリカが、報告仕様を満たすものと想定する。さらに、以下の国、すなわちカナダ、メキシコ、およびＵＳＡが、報告仕様１５２を満たすものと想定する。表Ｉは、報告内の階層の非相関メンバの例を示す。
【表１】
0005501473.tif 000002
【００６０】
この特定の例では、報告は報告仕様１５２を満たす地域および国を含むが、報告内の各行の国セルは、報告内のそれぞれの行の地域セルと必ずしも相関できるとは限らない。たとえばＵＳＡの国は、南アメリカの地域と相関されない。言い換えれば、報告は、報告仕様に対応する地域の第１のリストと国の第２のリストとを単に含む。結果として、こうした報告は、ユーザが読み取る、あるいは把握する、またはその両方に不都合な場合がある。
【００６１】
報告内で同じ階層のメンバが相関されるというユーザの予測を満たすために、アプリケーション１５０は表ＩＩに示されるような報告を生成することができる。
【表２】
0005501473.tif 000003
【００６２】
この特定の例では、報告は、報告仕様１５２を満たす地域および国を含む。さらに、報告内の各行の国セルは、報告内のそれぞれの行の地域セルと相関される。たとえば、国ＵＳＡは地域北アメリカと相関される。結果としてこうした報告は、ユーザが読み取る、あるいは理解する、またはその両方が、より簡単になる可能性がある。
【００６３】
再度、図４を参照し、ノルマンディ、ルクセンブルグ大公国、およびバチカンが、それぞれ５１００、７００、および２００の数量値を有し、そのそれぞれが、報告仕様１５２によって要求された１００００の数量値未満であることを想起してみる。しかしながら、図２の階層２００の構造により、結果４００は、ルクセンブルグ大公国あるいはバチカンまたはその両方を除外することができる。この意味で、結果４００は不完全な可能性がある。さらに、結果４００が要約（たとえば合計量）を含む場合、要約がルクセンブルグ大公国あるいはバチカンまたはその両方を考慮しなかった（除外した）限りにおいて、要約は不正確な可能性がある。
【００６４】
再度図２を参照すると、ルクセンブルグ大公国２１４は、州２０６を表すレベルに下位を有さない。その代わりに、ルクセンブルグ大公国２１４は、市２０８を表すレベルに下位を有する。しかしながら報告は、国および州を要求する（市は要求しない）。この状況では、ルクセンブルグ２３４に関連付けられた（したがって、間接的にルクセンブルグ大公国に関連付けられた）数量値７００は、結果１５６から誤って除外される可能性がある。
【００６５】
同様に、バチカン２１６は州２０６を表すレベルに下位を有さない。バチカンは、市２０８を表すレベルにも下位を有さない。この状況では、バチカン２１６に関連付けられた数量値２００も、結果１５６から誤って除外される可能性がある。
【００６６】
一実施形態では、報告仕様１５２が要約するか、あるいは不均衡な（または報告の目的で不均衡に見える）階層にフィルタを提供する場合、アプリケーション１５０は、メンバが結果から誤って除外されないように、こうした階層の不均衡性を補償することができる。図５は、本発明の一実施形態に従った、報告仕様１５２からＯＬＡＰ照会１５４を生成するための方法５００を示す流れ図である。図に示されるように、方法５００はステップ５１０から始まり、ここでアプリケーション１５０は報告仕様１５２を受信する。表ＩＩＩは、報告仕様１５２の例を示す。
【表３】
0005501473.tif 000004
【００６７】
図に示されるように、表ＩＩＩの報告仕様は、結果１５６内に国２０４および市２０８を含む。さらに、報告仕様はフィルタを適用する。フィルタは、関連付けられた結果１５６内の各市（または国）の数量値が１０，０００未満でなければならないものと指定する。
【００６８】
ステップ５２０で、アプリケーション１５０は、報告仕様１５２をＯＬＡＰ照会１５４へと変換する際に補償が実行されることになるものと決定することができる。ステップ５２０については、図６に関連して以下でさらに詳細に説明する。以下のステップでは、アプリケーション１５０は、階層のメンバを２つのセットに分類し、この２つのセットからＯＬＡＰ照会を生成する。ステップ５３０で、アプリケーション１５０は、階層の詳細レベルで下位を有する展開されたメンバに関する第１のセットを作成する、ＯＬＡＰ照会１５４の一部を生成することができる。本明細書で使用される場合、展開されたメンバとは、（たとえば報告仕様１５２を通じて）結果１５６の一部として出力されるレベルのメンバを言い表す。さらに、階層の詳細レベルとは、階層の最下位レベル（たとえば市２０８）を言い表す。
【００６９】
ステップ５４０で、アプリケーション１５０は、階層の詳細レベルでいかなる下位も有さない展開されたメンバ（たとえばバチカン２１６）に関する第２のセットを作成する、ＯＬＡＰ照会１５４の一部を生成することができる。
【００７０】
一実施形態では、不均衡な階層の補償とは別の動作において、アプリケーション１５０は２つのセットにフィルタを適用することができる。たとえば、一実施形態に従って、第１のセットを作成するＯＬＡＰ照会１５４の一部は、詳細レベルで第１のセットのフィルタリングも行う。すなわち、報告仕様の任意のフィルタが、第１のセットに関して詳細レベルで適用される。さらに、一実施形態に従って、第２のセットを作成するＯＬＡＰ照会１５４の一部も、（詳細レベルではなく）展開されたメンバのレベルで第２のセットのフィルタリングを行う。すなわち、報告仕様の任意のフィルタが、第２のセットに関して（たとえば展開されたメンバの）集約レベルで適用される。
【００７１】
ステップ５５０で、アプリケーション１５０は、第１のセットおよび第２のセットを合併によって接合する、ＯＬＡＰ照会１５４の一部を生成することができる。ステップ５６０で、アプリケーション１５０は、ＯＬＡＰ照会１５４を戻す、あるいは実行する、またはその両方が可能である。ＯＬＡＰ照会１５４の実行により、結果１５６が生成される。ステップ５６０の後、方法５００は終了する。
【００７２】
図６は、本発明の一実施形態に従った、報告仕様１５２をＯＬＡＰ照会１５４に変換する際に補償を実行すべきであるかどうかを決定するための方法６００を示す流れ図である。方法６００は、図５のステップ５２０に対応する。図に示されるように、方法６００はステップ６１０で開始され、ここでアプリケーション１５０は、報告仕様が、同じ階層の異なるレベルで他のセットに先行する展開されたセットを含むかどうかを決定する。すなわち、アプリケーション１５０は、報告仕様が階層の異なるレベルを展開するかどうかを決定する。展開しない場合、アプリケーション１５０は報告仕様１５２を補償なしで変換する（ステップ６７０）。
【００７３】
そうでない場合、アプリケーション１５０は、階層が均衡であるかどうかを決定する（ステップ６２０）。近郊でない場合、アプリケーション１５０は、階層に対してリーフ・メンバのセットを構築する必要があるかどうかを決定する（ステップ６５０）。たとえば、報告仕様が、階層の選択されたレベルに対していかなる要約も計算しなければならない旨を示さないものと想定する。さらに、報告仕様が、階層の選択されたレベルからメンバを除去するいかなるフィルタも指定しないものと想定する。こうしたケースでは、アプリケーション１５０は、階層に対するリーフ・メンバのセットの構築は不要であるものと決定することができる。したがって、アプリケーション１５０は、報告仕様１５２を補償なしで変換することができる（ステップ６７０）。そうでない場合、アプリケーション１５０は、報告仕様１５２を補償と共に変換する（ステップ６６０）。
【００７４】
しかしながら、アプリケーション１５０が、階層が均衡であるものと決定した場合（ステップ６２０）、方法６００はステップ６３０へ進み、ここでアプリケーション１５０は階層が不揃いであるかどうかを決定する。不揃いでない場合、アプリケーション１５０は報告仕様１５２を補償なしで変換する（ステップ６７０）。
【００７５】
他方で、アプリケーション１５０が、階層が不揃いであるものと決定した場合（ステップ６３０）、アプリケーション１５０は、報告仕様が階層の最下位レベルを選択するかどうかを決定する（ステップ６４０）。選択する場合、アプリケーション１５０は報告仕様１５２を補償なしで変換する（ステップ６７０）。選択しない場合、アプリケーション１５０は、階層に対してリーフ・メンバのセットを構築する必要があるかどうかを決定する（ステップ６５０）。必要がある場合、方法はステップ６６０に進み、報告仕様を補償と共に変換する。必要がない場合、方法６００はステップ６７０に進み、報告仕様を補償なしで変換する。ステップ６６０またはステップ６７０の後、方法６００は終了する。
【００７６】
図７は、本発明の一実施形態に従った、表ＩＩＩの報告仕様から補償と共に変換されたＯＬＡＰ照会７００を示す。ＯＬＡＰ照会７００は、（ｉ）結果１５６に関するメンバの第１のセットを作成する第１の部分７０２と、（ｉｉ）結果１５６に関するメンバの第２のセットを作成する第２の部分７０４（すなわち、ＯＬＡＰ照会７００の「補償」部分）とを含む。たとえば、メンバの第１のセットは、階層の市レベルで少なくとも１つの下位を有するすべてのメンバを含むことができる。メンバの第２のセットは、階層の市レベルでいかなる下位も有さない、階層内のメンバを含むことができる。たとえば、メンバの第２のセットは、バチカン２１６を含むことができる。
【００７７】
図に示されるように、ＯＬＡＰ照会７００はＭＤＸ関数への呼び出しを含む。呼び出されるＭＤＸ関数は、COUNT( )、HEAD( )、FILTER( )、DESCENDANTS( )、IIF( )、およびGENERATE( )を含む。もちろん、当業者であれば、本発明が他の関数、ＭＤＸ以外のＯＬＡＰ照会言語などに適合可能であることを理解されよう。
【００７８】
周知のように、COUNT()はセット内のいくつかのセルを戻すＭＤＸ関数である。さらにHEAD( )は、重複を保持しながら、セットから第１の指定された数の要素を戻すＭＤＸ関数である。さらにFILTER( )は、条件に基づいて指定されたセットのフィルタリングの結果として生じるセットを戻す、ＭＤＸ関数である。さらにDESCENDANTS( )は、指定されたレベルまたは距離のメンバの下位セットを戻す、ＭＤＸ関数である。さらにIIF( )は、論理テストによって決定された２つの値のうちの１つを戻す、ＭＤＸ関数である。さらにGENERATE( )は、他のセットの各メンバにセットを適用した後、結果として生じるセットを合併によって接合する。
【００７９】
一実施形態では、アプリケーション１５０は、報告仕様１５２をＯＬＡＰ照会１５４に変換する際に補償を実行するための、一連のＭＤＸ関数への呼び出しを含むことができる。たとえば、第１のセットの場合、アプリケーション１５０は、数量＜１００００の条件を満たす、詳細レベルに下位を有する国２０４のメンバを選択するための、HEAD( )関数（たとえば、第１の部分７０２）への呼び出しを含むことができる。第２のセット（補償セット）の場合、アプリケーション１５０は、市２０８を表すレベルに下位を有さない国２０４のメンバを選択するための、HEAD( )関数（たとえば、第２の部分７０４）への呼び出しを含むこともできる。たとえば、アプリケーション１５０は、こうしたメンバ（すなわち、市２０８を表すレベルに下位を有さないものと決定されたメンバ）を含めるために、IIF( )へのネストされた呼び出しを含むことができる。アプリケーション１５０は、第１のセットのメンバと第２のセットのメンバとを区別するために、属性を設定することもできる。アプリケーション１５０は、第１のセットと第２のセットとを組み合わせるためのGENERATE( )への呼び出しを含むことができる。このようにしてＯＬＡＰ照会７００は、メンバが誤って結果から除外されるのを防ぐ。
【００８０】
さらに、不均衡な階層に対する補償とは別に、ＯＬＡＰ照会７００は（たとえば、報告仕様がフィルタを含むことから）２つのセットをフィルタリングすることができる。たとえば、メンバの第１のセットは、階層の詳細レベルで（たとえばFILTER( )関数への呼び出し７０６を使用して）フィルタリングすることができる。さらにメンバの第２のセットは、報告仕様１５２に従って、階層の展開されたレベルで（たとえば、たとえばFILTER( )関数への呼び出し７０８を使用して）フィルタリングすることができる。
【００８１】
前述のように、報告仕様１５２が要約するか、あるいは不均衡な（または報告の目的で不均衡に見える）階層にフィルタを適用する場合、アプリケーション１５０は、メンバが誤って結果から除外されるのを防ぐために、こうした階層の不均衡性を補償することができる。階層にフィルタを適用する報告仕様の例について、表ＩＩＩの報告仕様に関して説明してきた。表ＩＶは、階層のメンバを要約する報告仕様の例を示す。
【表４】
0005501473.tif 000005
【００８２】
図に示されるように、表ＩＶの報告仕様は、結果１５６内の地理階層からの大陸および国を含む。さらに報告仕様は、地理階層のメンバに対する要約動作を要求する。具体的に言えば、報告仕様は各大陸の国のカウントを要求する。
【００８３】
一実施形態では、アプリケーション１５０は、表ＩＶの報告仕様からＯＬＡＰ照会を生成することができる。図８は、本発明の一実施形態に従った、ＯＬＡＰ照会の例を示す。図７のＯＬＡＰ照会７００と同様に、ＯＬＡＰ照会８００は、
（ｉ）結果１５６に関するメンバの第１のセットを作成する第１の部分８０２と、（ｉｉ）結果１５６に関するメンバの第２のセットを作成する第２の部分８０４とを含む。たとえば、メンバの第１のセットは、階層の国レベルで少なくとも１つの下位を有するすべての大陸を含むことができる。メンバの第２のセットは、階層の国レベルでいかなる下位も有さない、階層内の大陸を含むことができる。アプリケーション１５０は、第１のセットと第２のセットを組み合わせるためのGENERATE( )への呼び出しを含むことができる。このようにしてＯＬＡＰ照会８００は、メンバが誤って結果から除外されるのを防ぐ。
【００８４】
むろん、本明細書に記載された実施形態は、本発明を例示することを意図するものであり、これを限定するものではなく、広義には他の実施形態が企図される。さらに当業者であれば、本発明の諸実施形態が、他のＯＬＡＰ照会、他のリレーショナル・データベース照会、キューブ以外のデータ・ウェアハウジング用のデータ・モデル、およびリレーショナル・データベース以外のデータベースに記憶された基礎となるデータを、サポートするように適合可能であることを理解されよう。さらに、たとえば、多次元ＯＬＡＰ（ＭＯＬＡＰ）、リレーショナルＯＬＡＰ（ＲＯＬＡＰ）、ハイブリッドＯＬＡＰ（ＨＯＬＡＰ）、ならびに、データ・ウェアハウジングおよびＯＬＡＰ（ＤＯＬＡＰ）などの、様々なＯＬＡＰシステムがサポート可能である。
【００８５】
有利なことに、本発明の諸実施形態は、次元階層に関する報告仕様からＯＬＡＰ照会を生成するための技法を提供する。一実施形態では、アプリケーションは、次元階層あるいは報告仕様またはその両方が、不正確あるいは不完全、またはその両方の結果を生成する可能性が高いかどうかを決定する。たとえばアプリケーションは、次元階層が報告の目的で不均衡であるかどうかを決定することができる。不均衡である場合、アプリケーションは、（すなわち、メンバが誤って結果から除外されるのを防ぐために）不均衡な次元階層を補償する。補償は、いずれのＯＬＡＰ照会が実行されるのにも先立って実行可能である。たとえばアプリケーションは、報告仕様を、詳細レベルでいかなる下位も有さないメンバを含むＯＬＡＰ照会に変換する。したがってアプリケーションは、実行された場合に、（すなわち、報告仕様に応じて）より正確あるいは完全な、またはその両方の結果を生成する、ＯＬＡＰ照会を生成する。さらにアプリケーションは、アプリケーションが（報告仕様あるいは階層またはその両方に基づいて）必要であると認める場合にのみ、補償を実行することが可能であるため、補償から生じる処理オーバヘッドを削減することができる。
【００８６】
前述の内容は本発明の諸実施形態を対象としているが、本発明の他の実施形態も、その基本範囲を逸脱することなく考案可能であり、その範囲は以下の特許請求の範囲によって決定される。
【図１】
0005501473.tif 000006
【図２】
0005501473.tif 000007
【図３】
0005501473.tif 000008
【図４】
0005501473.tif 000009
【図５】
0005501473.tif 000010
【図６】
0005501473.tif 000011
【図７】
0005501473.tif 000012
【図８】
0005501473.tif 000013