(57)【特許請求の範囲】
【請求項１】
計算システムであって、
プロセッサーと、
前記プロセッサーによって実行されるビジネス・インテリジェンス（ＢＩ）アプリケーションを含むメモリーと、
を含み、前記ビジネス・インテリジェンス（ＢＩ）アプリケーションが、
クエリーを、当該クエリーの以前のバージョンに対する増分変更に基づいて構築し、前記クエリーがクエリー・ステップのシーケンスとして表され、前記クエリー・ステップのシーケンスにおける各ステップが、前記増分変更におけるそれぞれの増分変更に対応し、
前記クエリーに基づいて、データー・キューブからテーブル形式データーを引き出す、
ように構成される、計算システムにおいて、
前記ビジネス・インテリジェンス（ＢＩ）アプリケーションが、前記クエリーに対する増分変更を受けるクエリー構築コンポーネントを含み、前記クエリーに対する前記増分変更が、前記キューブにおけるディメンションを拡張する要求または前記キューブにおける前記ディメンションを圧縮する要求の内１つであり、前記クエリー構築コンポーネントが、前記増分変更に基づいて前記クエリーを構築し、
前記クエリーが第２増分変更を含み、前記第２増分変更が、ディメンションに対するメジャーを計算する要求であり、前記クエリー構築コンポーネントが、前記ディメンションの属性が選択された後に前記メジャーが計算されるように、前記クエリーを構築し、
前記ディメンションに対するメジャーを計算する要求は、前記クエリー構築コンポーネントによって、前記キューブにおけるディメンションを拡張する要求または前記キューブにおける前記ディメンションを圧縮する要求より前に受信されている、
ことを特徴とする計算システム。
【請求項２】
請求項１記載の計算システムにおいて、前記ビジネス・インテリジェンス（ＢＩ）アプリケーションが、クエリー構築コンポーネントを含み、前記クエリー構築コンポーネントが、増分変更を受け、前記増分変更および以前に受けた増分変更のシーケンスに基づいて前記クエリーを構築し、前記クエリー構築コンポーネントが、前記クエリーを複数の関係演算子として表現する、計算システム。
【請求項３】
請求項１記載の計算システムであって、更に、前記データー・キューブから引き出されたテーブル形式データーをディスプレイ上に提示する提示コンポーネントを含み、前記提示コンポーネントが更に前記クエリーを前記ディスプレイ上に提示する、計算システム。
【請求項４】
請求項３記載の計算システムにおいて、前記提示コンポーネントが、前記クエリー・ステップのシーケンスを前記ディスプレイ上に提示する、計算システム。
【請求項５】
請求項４記載の計算システムにおいて、前記ビジネス・インテリジェンス（ＢＩ）アプリケーションが、前記クエリー・ステップにおける以前のクエリー・ステップの選択を受ける入力受入コンポーネントを含み、前記入力受入コンポーネントが前記選択を受けたことに応答して、前記提示コンポーネントが、前記データー・キューブからの第２テーブル形式データーを前記ディスプレイ上に提示し、前記第２テーブル形式データーが、前記クエリー・ステップにおける前記以前のステップにおいて前記クエリーに基づいて引き出される、計算システム。
【請求項６】
請求項５記載の計算システムにおいて、前記入力受入コンポーネントが、前記入力受入コンポーネントが前記以前のクエリー・ステップの選択を受けた後に、中間増分変更を受け、前記クエリー構築コンポーネントが、前記以前のクエリー・ステップの後でありかつ前記クエリー・ステップのシーケンスにおける最後のクエリー・ステップの前に、他のクエリー・ステップを追加するように前記クエリーを構築する、計算システム。
【請求項７】
コンピューター・プロセッサーによって実行される方法であって、
テーブル形式データーをディスプレイ上に提示するステップであって、前記テーブル形式データーが、以前に発行されたクエリー・ステップに基づいてデーター・キューブから引き出される、ステップと、
後続のクエリー・ステップを受けるステップと、
前記以前に発行されたクエリー・ステップおよび前記後続のクエリー・ステップに基づいてクエリーを構築するステップと、
前記クエリーに基づいて前記データー・キューブから更新テーブル形式データーを引き出すステップと、
前記更新テーブル形式データーを引き出したことに応答して、前記更新テーブル形式データーを前記ディスプレイ上に提示するステップと、
を含む、方法において、
前記以前に発行されたクエリー・ステップが、ディメンションの第１属性に対してメジャーを計算させ、
更に、
前記後続のクエリー・ステップを受けたことに応答して、前記ディメンションの第２属性が前記クエリー内において指定された後に、前記ディメンションの第２属性に対して前記メジャーが計算されるように、前記クエリーを構築するステップを、
含むことを特徴とする方法。
【請求項８】
請求項７記載の方法において、前記後続のクエリー・ステップが、少なくとも１つのディメンションを圧縮または拡張する要求であり、前記方法が、前記少なくとも１つのディメンションを圧縮または拡張する前記要求に基づいて、前記クエリーを改訂するステップを含む、方法。
【請求項９】
請求項７記載の方法において、前記クエリーを構築するステップが、
前記以前のクエリー・ステップおよび前記後続のクエリー・ステップを複数の関係演算子に変換するステップと、
既定のパターンに基づいて、前記複数の関係演算子を正規化するステップと、
を含む、方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  コンピューター実装ビジネス・インテリジェンス（ＢＩ）アプリケーションは、ビジネスの目標に到達する際にビジネスを補助することができる知識の発見（例えば、ビジネスの事実）を容易にするために開発された。更に特定すると、ビジネス・インテリジェンス・アプリケーションのユーザーは、特定のビジネスに関連するデーターに対して実行しようとするクエリーを定式化することができる。従来では、ビジネスに関連するデーターは、少なくとも１つの二ディメンション・テーブルを含む少なくとも１つのリレーショナル・データーベースとして構造化されていた。
【０００２】
[0002]  従来のビジネス・インテリジェンス（ＢＩ）アプリケーションはビジネスに関連するデーターがリレーショナル・データーベースとして構造化されるとき、ビジネス知識を取得する際にユーザーを補助するのに適したインターフェースを提供するが、従来のビジネス・インテリジェンス・アプリケーションは、多ディメンション・データー構造（例えば、データー・キューブ、「ハイパーキューブ」と呼ばれることもある）からビジネス知識を発見するには余り適していない。一例では、ビジネスに関連するデーターがデーター・キューブとして構造化されるとき、データー・キューブに問い合わせることによってビジネス知識を得ることを望むユーザーは、キューブの内容について先験的知識を有していなければならない。更に、ユーザーは、データー・キューブに対してクエリーを実行するために使用することができるクエリー言語について精通していなければならない。更に、ユーザーは、クエリーを定式化するときに対象となるデーター・キューブのスライスおよび／またはダイスの知識も有していなければならない。つまり、ユーザーは最終的なクエリーを定式化しなければならないが、所望のビジネス知識が提示される結果にならないこともあり得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
[0003]  以下に、本明細書において更に詳細に説明する主題についての端的な摘要を示す。この摘要は、請求項の範囲に関して限定することは意図していない。
[0004]  本明細書では計算システムについて記載する。この計算システムは、プロセッサーおよびメモリーを含む。メモリーは、プロセッサーによって実行されるビジネス・インテリジェンス（ＢＩ）アプリケーションを含む。ビジネス・インテリジェンス（ＢＩ）アプリケーションは、クエリーの以前のバージョンに対する増分変更(incremental modification)に基づいて、クエリーを構築するように構成される。クエリーは、クエリー・ステップのシーケンスとして表現され、クエリー・ステップのシーケンスにおける各ステップは、前述の増分変更におけるそれぞれの増分変更に対応する。ビジネス・インテリジェンス（ＢＩ）アプリケーションは、更に、クエリーに基づいてデーター・キューブからテーブル形式データーを引き出すように構成される。
【図面の簡単な説明】
【０００４】
【図１】図１は、多ディメンション・データー構造に対する実行のためのクエリーを構築し易くするシステム例の機能ブロック図である。
【図２】図２は、多ディメンション・データー構造に対する実行のためのクエリーを構築する方法例を示す流れ図である。
【図３】図３は、多ディメンション・データー構造の少なくとも１つのディメンションの属性を圧縮(collapse)または拡張(expand)する要求に基づいて、クエリーを改訂する(refine)方法例を示す流れ図である。
【図４】図４は、融合データー構造を作成するために少なくとも２つの多ディメンション・データー構造を融合する方法例を示す流れ図である。
【図５】図５は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図６】図６は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図７】図７は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図８】図８は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図９】図９は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図１０】図１０は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図１１】図１１は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図１２】図１２は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図１３】図１３は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図１４】図１４は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図１５】図１５は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図１６】図１６は、多ディメンション・データー構造に対して実行することができるクエリーを構築し易くするグラフィカル・ユーザー・インターフェースの例である。
【図１７】図１７は、計算システム例である。
【発明を実施するための形態】
【０００５】
[0011]  一連の段階にわたってクエリーを構築することに関連する種々の技術において、クエリーは多ディメンション・データー構造に対して実行するように構成される。これより、図面を参照しながら、これらの技術について説明する。図面では、同様の参照番号が全体を通じて同様のエレメントを指すために使用される。以下の説明では、説明の目的に限って、１つ以上の態様の完全な理解を得るために、多数の具体的な詳細を明記する。しかしながら、このような態様（１つまたは複数）は、これらの具体的な詳細がなくても実施できることは明白であろう。他の場合では、周知の構造およびデバイスは、１つ以上の態様を説明し易くするために、ブロック図で示される。更に、１つのシステム・コンポーネントによって実行されると説明される機能は、多数のコンポーネントによって実行されてもよいことは理解されよう。同様に、例えば、多数のコンポーネントによって実行されると説明される機能を実行するために１つのコンポーネントが構成されてもよい。
【０００６】
[0012]  更に、「または」(or)という用語は、排他的な「または」ではなく、包含的な「または」を意味することを意図している。即ち、別段指定されない限り、または文脈から明らかでない限り、「ＸはＡまたはＢを採用する」という句は、自然な包含的置換(natural inclusive permutation)のいずれかを意味することを意図している。即ち、「ＸはＡまたはＢを採用する」という句は、以下の実例、ＸはＡを採用する、ＸはＢを採用する、またはＸはＡおよびＢ双方を採用する、のいずれによっても満たされる。加えて、冠詞「ａ」および「ａｎ」は、本願および添付する特許請求の範囲において使用する場合、一般に、別段指定されない限り、または文脈から単数形に向けられることが明らかでない限り、「１つ以上」を意味するように解釈されてしかるべきである。
【０００７】
[0013]  更に、本明細書において使用する場合、「コンポーネント」および「システム」という用語は、プロセッサーによって実行されるとある種の機能を実行させるコンピューター実行可能命令が構成されたコンピューター読み取り可能データー・ストレージを含むことを意図している。コンピューター実行可能命令は、ルーチン、関数等を含むことができる。また、コンポーネントまたはシステムは１つのデバイス上に配置されても、または様々なデバイスにわたって分散されてもよいことも理解されよう。更に、本明細書において使用する場合、「例示的」(exemplary)という用語は、あるものの実証例または一例として役割を果たすことを意味することを意図しており、好み(preference)を示すことを意図するのではない。
【０００８】
[0014]  本明細書において記載するのは、多ディメンション・データー構造（例えば、キューブであり、ハイパーキューブ、データー・キューブ等と呼ばれることもある）に対して実行されるように構成されたクエリーの構築に関連する種々の技術である。キューブは、１組の関係するテーブルにわたって定義され、例えば、少なくとも１つのファクト・テーブル(fact table)およびこのファクト・テーブルに関係する一連のディメンション・テーブル（「ディメンション」とも呼ぶ）を含む、スターまたはスノーフレーク・スキーマを使用する。ファクト行(fact row)（ファクト・テーブルにおける行）は、ディメンション「属性」（例えば、ディメンション・テーブルの列）によって分類することができる。「メジャー」(measures)は、１組のファクト行の列に対して適用される集計関数（例えば、１組のファクト行における値に対する加算関数）である。
【０００９】
[0015]  更に特定すると、キューブのファクト・テーブルは、ビジネス・プロセスのメジャー、メトリック(metric)、またはファクトを含み、スターまたはスノーフレーク・スキーマの中心に位置し、ディメンションによって包囲される。ディメンションは、他の順序付けられない数値メジャー(numeric measure)に対して、構造型ラベリング情報(structured labeling information)を提供する。したがって、ディメンションはそれぞれの個々の重複しないデーター・エレメントを含む。ディメンションは、通例、フィルタリング、分類、およびラベリング・データーと共に使用される。「スライシング」(slicing)という用語は、キューブからのデーターをフィルタリングすることを意味し、一方「ダイシング」(dicing)という用語はキューブにおけるデーターを分類することを意味する。多くの場合、ディメンションは、階層的に編成される、ディメンション属性を有する。例えば、ディメンションは、様々な可能な階層属性と共に、時間を表すことができる。例えば、ディメンションは、ディメンション属性「日」、「週」、「月」、および「年」を含むことができる。属性「日」は、「月」に分類（圧縮）することができ、「月」は「年」に圧縮することができる。同様に、日は「週」に圧縮することができ、「週」は「年」に圧縮することができる等である。最後に、キューブのメジャーとは、計算を行うことができるプロパティであり、このような計算は、加算、計数、平均、最小、および最大を含む。
【００１０】
[0016]  キューブ・データーは、属性およびメジャー適用を含む１つのフラット・テーブル(flat table)において表すことができる。このフラット・テーブルは「ファクト・テーブル」と呼ぶことができる。キューブ演算(cube operation)は、関係演算子に関して表された(express)表現(representation)に下げられる(lower)。「ディメンション・テーブル」とは、ディメンションの属性毎に列を含むテーブルを指す。各ディメンション属性のメンバーを列挙し、ディメンションの属性のメンバーのクロス積を求めることができる。キューブに関する種々の例について、本明細書において説明する。
【００１１】
[0017]  これより図１を参照すると、多ディメンション・データー構造（ここではキューブと呼ぶ）に対して実行することができるクエリーを構築し易くするシステム例１００が例示されている。更に、システム１００は、段階的手法(staged approach)でクエリーを構築し易くすることもでき、ユーザー（または計算デバイス）にデーターが提示されるに連れて、クエリーを改訂する(refine)ことができ、提示されたデーターのユーザー分析または提示されたデーターのコンピューター分析によって、クエリーを改訂する。システム１００は、キューブ１０４を含むデーター・ストア１０２を含む。キューブ１０４は、データー・ストア１０２に含まれることが示されているが、キューブ１０４は、多数のデーター・ストアにわたって分散されてもよいことは理解されよう。更に、キューブ１０４は、潜在的に異なるそれぞれの構造を有する可能性がある様々なキューブの組み合わせを表すこともできる。
【００１２】
[0018]  加えて、システム１００はサーバー計算デバイス１０６も含むことができる。サーバー計算デバイス１０６にはコンピューター実行可能命令が構成され(configured with)、コンピューター実行可能命令は、サーバー計算デバイス１０６がキューブ１０４に対してクエリーを実行し、キューブに対してクエリーを実行したことに応答してデーターを出力することを可能にする。
【００１３】
[0019]  更に、システム１００はクライアント計算デバイス１０８も含むことができる。クライアント計算デバイス１０８は、ユーザー１１０またはコンピューター・プログラムからの入力に基づいて、キューブ１０４に対する実行のためのクエリーを受け取るおよび／または構築するように構成することができる。クライアント計算デバイス１０８は、サーバー計算デバイス１０６と通信することができ、クエリーをサーバー計算デバイス１０６に送信することができる。クライアント計算デバイス１０８は、任意の適した計算デバイスとすることができ、デスクトップ計算デバイス、ラップトップ計算デバイス、タブレット（スレート）計算デバイス、移動体電話機、変換可能計算デバイス、ウェアラブル計算デバイス（例えば、腕時計、ヘアバンド等）、ファブレット(phablet)、ビデオ・ゲーム・コンソール等を含むがこれらに限定されるのではない。
【００１４】
[0020]  クライアント計算デバイス１０８は、プロセッサー１１１およびメモリー１１２を含み、プロセッサー１１はメモリー１１２内にある命令を実行することができる。図示のように、メモリー１１２は、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４を含み、これはプロセッサー１１１によって実行される。ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４は、キューブ１０４からビジネス知識を抽出し、このビジネス知識をユーザー１１０に提示する（例えば、ビジネス知識を可視化する）ように構成されている。実施形態例では、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４は、スプレッドシート・アプリケーションである、またはスプレッドシート・アプリケーションに含まれることが可能である。ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４はクライアント計算デバイス１０８上で実行されることが示されているが、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４は、ネットワーク接続を介してクライアント計算デバイス１０８にアクセス可能な計算デバイスにおいて実行してもよいことは理解されよう。例えば、クライアント計算デバイス１０８は、そこで実行するブラウザーまたは他の適したアプリケーションを有することもでき、例えば、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４を実行する、離れて位置する計算デバイスにブラウザーを導くことができる。即ち、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４はウェブ・ベース・アプリケーションとすることができ、またはウェブ・サービスとして提供することができる。更に、データー・ストア１０２、サーバー計算デバイス１０６、および／またはクライアント計算デバイス１０８は、１つの計算デバイス上に位置するのでもよく、つまり、システム１００のアーキテクチャは性質上例示であり、限定することは意図していないことは理解されよう。
【００１５】
[0021]  ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４は、データー・キューブ１０４に関してユーザー１１０（またはコンピューター実行可能プログラム）からの入力を受ける入力受入コンポーネント１１５を含む。例えば、入力受入コンポーネント１１５は、キューブ１０４のコンテンツ（キューブ１０４の少なくとも一部）をビジネス・インテリジェンス（ＢＩ）アプリケーション１１４に割り当てられたクライアント計算デバイス１０８のメモリー１１２の一部にロードする要望(desire)を示す入力を受けることができる。加えてまたは代わりに、性能を高めるために、入力受入コンポーネント１１５が、キューブ１０４にアクセスすることが望ましいという指示を受けたことに応答して、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４はキューブ１０４の全体をクライアント計算デバイス１０８のメモリー１１２にロードする必要がないように、サーバー計算デバイス１０６の通信チャネルを開くように構成することができる。
【００１６】
[0022]  ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４は、更に、クエリー構築コンポーネント１１６も含む。クエリー構築コンポーネント１１６は、入力受入コンポーネント１１５が受けた入力に基づいてクエリーを構築する。例えば、入力受入コンポーネント１１５がキューブ１０４をメモリー１１２にロードする要求を受けたことに応答して、クエリー構築コンポーネント１１６はクエリーを生成することができる。このクエリーがサーバー計算デバイス１０６によってキューブ１０４に対して実行されると、キューブ１０４の全体をデーター・ストア１０２から引き出させ、クライアント計算デバイス１０８のメモリー１１２にロードさせる（例えば、データー１１７として表されている）。既に示したように、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４は多ディメンション構造の多数の異なるタイプに対して実行することができるクエリーを生成するように構成することもできる。したがって、本明細書において更に詳しく説明するように、クエリー構築コンポーネント１１６は、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４がサポートするように構成された全てのタイプのキューブにわたって共通である、比較的高いレベルの言語で最初にクエリーを生成することができる。このようなクエリーは、「上位」クエリーと呼ぶことができる。クエリー構築コンポーネント１１６は、クエリー変換コンポーネント１１８を含むことができる。クエリー変換コンポーネント１１８は、上位クエリーを、サーバー計算デバイス１０６によってサポートされるクエリーに変換することができる。したがって、一例では、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４が３つの異なるキューブの問い合わせをサポートするように構成されるとき、ユーザー１１０はこれら３つの異なるタイプのキューブに問い合わせるために３つの異なるクエリー言語を学習する必要はない。代わりに、クエリー構築コンポーネント１１６およびクエリー変換コンポーネント１１８は、アクセスされたキューブに対応するクエリー言語でのクエリー構築を扱うように構成されている。
【００１７】
[0023]  加えて、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４は提示コンポーネント１２０も含む。提示コンポーネント１２０は、例えば、クライアント計算デバイス１０８のディスプレイ上に、メモリー１１２内のデーター１１７を提示するように構成されている。一例によれば、クエリー構築コンポーネント１１６は、入力受入コンポーネント１１５が受けた入力に基づいてクエリーを構築するとき、クエリー構築コンポーネント１１６はこのクエリーをサーバー計算デバイス１０６に送信するように構成することができる。
【００１８】
[0024]  サーバー計算デバイス１０６は、サーバー・プロセッサー１２２およびサーバー・メモリー１２４を含み、サーバー・メモリー１２４は、サーバー・プロセッサー１２２によって実行することができるコンポーネントを含む。サーバー・メモリー１２４は、クエリー実行コンポーネント１２６を含み、クエリー実行コンポーネント１２６はクライアント計算デバイス１０８からクエリーを受け、データー・ストア１０２内にあるキューブ１０４に対してこのクエリーを実行する。更に、サーバー・メモリー１２４は、データー提供コンポーネント１２８も含む。データー提供コンポーネント１２８は、クエリー実行コンポーネント１２２によって実行されたクエリーに基づいてキューブ１０４からデーターを受け、そしてデーター提供コンポーネント１２４は、このようなデーター１１７をクライアント計算デバイス１０８に提供する。データー１１７は、ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４によってアクセス可能なメモリー１１２の一部に置かれている。提示コンポーネント１２０は、データー１１７をメモリー１１５から引き出し、このようなデーターをユーザー１１０に（例えば、テーブル形式フォーマットで）提示する。
【００１９】
[0025]  一旦データーが提示されると、ユーザー１１０は、提示されたデーターに関して追加の入力を供給することができる。例えば、ユーザー１１０は、特定のディメンション属性（例えば、時間を表すディメンションに対するディメンション属性「日」）に対応するメジャーが提示されることを望むかもしれない。他の例では、ユーザー１１０が、特定のディメンション属性に基づいて、メジャーをフィルタリングすることを望むかもしれない（例えば、ユーザー１１０がデーター１１７において表されるある日を除外することを望むかもしれない）。他の例では、ユーザーは、表示画面上に更に粒度が高い属性が示されるように、ディメンション属性を拡張することを望むかもしれない（これによって、ユーザー１１０に提示されるデーターの行数を増やす）。更にまた、ユーザー１１０は、表示画面上にもっと粗い属性が示されるように、ディメンション属性を圧縮することを望むかもしれない（これによって、ユーザー１１０に提示されるデーターの行数を減らす）。入力受入コンポーネント１１４は、このような入力を受け、クエリー構築コンポーネント１１６は、この入力に基づいて、前述のクエリーを改訂することができる。クエリーは、クライアント計算デバイス１０８によってサーバー計算デバイス１０６に送信され、サーバー計算デバイス１０６のクエリー実行コンポーネント１２６がキューブ１０４に対して、改訂されたクエリーを実行する。データー提供コンポーネント１２８は、キューブ１０４に対するクエリーの実行に基づいて、戻されたデーターをクライアント計算デバイス１０８に提供し、データー１１７としてメモリー１１２内に置かれる。提示コンポーネント１２０は、データー１１７をテーブル形式でユーザー１１０に提示する。次いで、ユーザー１１０は、更にクエリーを改訂するために、提示されたデーターに関して、またはクエリーの以前の段階に関して追加の入力を任意に供給することができる。
【００２０】
[0026]  したがって、ユーザー１１０が複数の段階（またはステップ）に対してクエリーを構築させることができ、ユーザー１１０には、キューブに問い合わせたことによって引き出されたテーブル状データーを提示することができ、次いでクエリーを改訂するためにこのテーブル状データーに対して実行するとよい追加の動作をユーザーが選択できることを確認することができる。このように、ユーザー１１０は、データーを検討し次いでデーターに対して実行する追加の動作を指定することによって、クエリーを構築するまたは改訂することができる。これは、ユーザー１１０が、クエリー実行コンポーネント１２６によってサポートされるクエリー言語の知識を有していなければならず、ユーザー１１０に関心があるキューブの一部の知識を有していなければならず、更に関心があるキューブの一部を引き出すためにクエリーを構築しなければならない従来の手法とは対照的である。尚、クエリーは先に参照したクエリー言語で作られる。従来の手法では、構築されたクエリーがユーザー１１０に所望のデーターを提示しない場合、ユーザー１１０は、本明細書において明記する「クエリー例証」(query by example)手法によるのではなく、新たなクエリーを（例えば、最初から）構築しなければならない。つまり、本明細書において説明する態様を利用すると、ユーザー１１０は、ビジネス知識を獲得するために、キューブ１０４のコンテンツを容易に探索することができる。
【００２１】
[0027]  これより、システム１００の動作に関連する種々の例について説明する。既に示したように、キューブ１０４は、ディメンション属性およびメジャー適用を含むフラット・テーブルとして表すことができ、このフラット・テーブルを「ファクト」テーブルと呼ぶことができる。キューブ１０４に対して実行されるクエリーは、関係演算子に関して表された表現に下げることができ、ユーザー１１０は、具体的なクエリー言語を学習することを強いられることなく、キューブ１０４と対話処理することが可能になる。一般に、関係演算子とは、２つのエンティティ間の関係を検査するまたは定義するしくみ(construct)である。関係演算子の例には、とりわけ、行フィルター、列選択、ソートが含まれるが、これらに限定されるのではない。
【００２２】
[0028]  ディメンション・テーブルとは、ディメンションの属性毎に列を含むテーブルである。つまり、例えば、「時間」ディメンション・テーブルは、年、月、週、日等に別個の列を含むことができる。ディメンション・テーブルでは、各ディメンション属性のメンバーが列挙され、ディメンションの属性のメンバーのクロス積を求める。例えば、「顧客地理」(Customer Geography)ディメンションの顧客テーブルを以下のテーブル１に明記する。
【００２３】
【表１】
0006652490.tif 000002
【００２４】
[0029]  概念的に、ファクト・テーブルは、ジョイント（「拡張」されたディメンション）またはネスト・ジョイント（「圧縮」されたディメンション）によって、それに関係付けられたディメンション・テーブルを有する。例えば、「顧客地理」および「製品」を圧縮ディメンションとして有するファクト・テーブルをテーブル２に示す。
【００２５】
【表２】
0006652490.tif 000003
【００２６】
このテーブルから、ファクト・テーブルのこれらのディメンション・テーブルの各々とのネスト・ジョイントが得られる。たとえば、
【００２７】
【数１】
0006652490.tif 000004
【００２８】
ここで、引数を順に追っていくと、"factTable"はファクト・テーブルであり、"{ }"は左側のサイド・キー(side keys)であり、 "#'Customer Geography'"はディメンション・テーブルであり、"{ }"は右側のサイド・キーであり、"Customer Geography"はネスト・テーブルを置くために作られる列の名称である。このファクト・テーブルにおける各行は、キューブにおけるデーターのある部分集合を選択する座標を表す。この場合、１組のディメンションはフィルタリングも拡張もされておらず、キューブ１０４におけるデーターの全てが、ファクト・テーブルにおけるこの１つの（唯一の）行のために選択される。ビジネス・インテリジェンス（ＢＩ）アプリケーション１１４は、表示のためにコンテンツをフィルタリングするように機能し、こうして表示レイヤーを出力することができる。この表示レイヤーは、圧縮ディメンションを隠すことができる（たとえば、より良く混乱が少ないユーザー体験を提供するため）。尚、あらゆるディメンションを１つ１つこのように提示する必要はなく、代わりに、ユーザー１１０によって「タッチ」されたディメンションを、ユーザー１１０がキューブ１０４で作業をしているときに提示できることは理解されよう。
【００２９】
[0030]  既に示したように、ディメンション・テーブルは、更に粒度を細かくした座標を生成するために拡張することができ、クエリー構築コンポーネント１１６は、このような拡張を行わせるクエリーを構築することができる。たとえば、「顧客地理」ディメンションを拡張し、国、県、および都市属性を選択すると、テーブル３に示すような、これらの拡張された属性およびファクト・テーブルの行のクロス積が得られる。
【００３０】
【表３】
0006652490.tif 000005
【００３１】
この例では、これは、先に表されたネスト・ジョイントから得られた「顧客地理」列を拡張したものとしてモデル化することができる。例えば、
【００３２】
【数２】
0006652490.tif 000006
【００３３】
ここで、"Customer Geography"引数は、拡張する列を特定し、テーブルから除外する列のリストも与えられる。また、これは、ファクト・テーブルとディメンション・テーブルとの間の（フラット）ジョイントと等価であり、例えば、
【００３４】
【数３】
0006652490.tif 000007
【００３５】
ここで、"factTable"はファクト・テーブルを特定し、"{ }"は左側のサイド・キーであり、 "#’Customer Geography'"はディメンション・テーブルであり、"{ }"は右側のサイド・キーである。尚、"Product"ディメンションは圧縮されたまま残っており、視野から隠せることを注記することができる。各行は、注記された座標に対応する、キューブ１０４におけるデーターの部分集合を選択することができる。例えば、行３は、全ての製品に対して、オーストラリア、ニュー・サウス・ウェールズにおけるダーリングハーストから全てのデーターを選択することができる。
【００３６】
[0031]  既に示したように、メジャーは、行のディメンション座標に対する集計列としてモデル化することができる。テーブルにおける各行に同じ関数を適用した結果が列である。例えば、"Internet Sales Amt."メジャーを適用すると、表４に示すように、集計列が追加される結果となる。
【００３７】
【表４】
0006652490.tif 000008
【００３８】
入力受入コンポーネント１１５が前述のメジャーを計算する要求を受けたことに応答して、クエリー構築コンポーネント１１６は、このメジャーを計算させる以下のようなクエリーを構築することができる。
【００３９】
【数４】
0006652490.tif 000009
【００４０】
この例では、メジャー"#'Internet Sales Amount"が、入手可能なディメンション座標から構築されたレコードに対して適用される。以上で説明した例では、「顧客地理」ディメンションの属性の個々のメンバー（行による）を、メジャーの各呼び出しに対して渡すことができ、一方「製品」メンバーの圧縮された１組全体を、メジャーの各呼び出しに対して渡すことができる。このように、メジャーは、その行によって記述されたキューブ１０４の部分集合に適用される。例えば、上のテーブル４における行３は、全ての製品に対して、そしてダーリングハースト、ニュー・サウス・ウェールズ、オーストラリア地理的領域においてキューブ１０４の部分集合に、インターネット販売量メジャーを適用する。
【００４１】
[0032]  キューブ１０４のテーブルの上に、最終的なプロジェクション・レイヤー(projection layer)を置くことができ、圧縮されたディメンション列がユーザー１１０を妨害しないように、またはユーザー１１０を混乱させないように、これらを隠すことができる。プロジェクションは、テーブルから列を除去するように構成された演算子（例えば、Table.RemoveColumns）を使用して実行することができる。
【００４２】
[0033]  更に、クエリー構築コンポーネント１１６は、ディメンションの拡張または圧縮を要求する指示があったときに、メジャーを「浮動させる」クエリーを構築することができる。例えば、ユーザーが、選択したメジャーを現在の１組のディメンション座標に適用すること、およびディメンション座標を変更したときにこのメジャーを更新することを期待する場合がある。例えば、「インターネット販売量」メジャーを、最大限圧縮したキューブに適用する場合、以下のテーブル例を提示することができる。
【００４３】
【表５】
0006652490.tif 000010
【００４４】
入力受入コンポーネント１１５は、「顧客地理」ディメンションの「国」属性を拡張する要求を受けることができ、クエリー構築コンポーネント１１６は、ユーザー１１０が見ることを期待するテーブルを提示させるクエリーを構築することができる。
【００４５】
【表６】
0006652490.tif 000011
【００４６】
これを「浮動」(floating)メジャーと呼ぶ。既に示したように、クエリー構築コンポーネント１１６は、メジャーを計算する要求を識別することができ、その計算を、構築するクエリーにおいて、関連するディメンション属性が選択された後の地点に位置付けることができる。
【００４７】
[0034]  他の例では、列が集計列であることができ、集計列は、その列を構築するために使用された関数を持ち込む(carry)。例えば、ユーザーがテーブル６を見て、「インターネット販売量」列を計算するために使用された関数を求めることができる。
【００４８】
【数５】
0006652490.tif 000012
【００４９】
この関数を使用して新たな列が作られようとする場合、元の列の正確なコピーが与えられる。
[0035]  集計列は、メジャーを浮動させるために使用することができる。キューブのディメンショナリティ(dimensionality)を変化させるキューブ演算が適用されるときはいつでも（例えば、ディメンションが追加される、ディメンションが拡張される、またはディメンションが圧縮される）、正しい１組のディメンション座標に対してメジャーが再計算されるように、全てのメジャーを浮動させることができる。システム１００は、メジャーをしかるべく浮動させるためにマルチステップ・プロセスを実行することができる。更に具体的には、第一に、クエリー構築コンポーネント１１６は、メジャー適用(measure application)を表すテーブルの集計列についての式を収集することができる。その後、クエリー構築コンポーネント１１６は、メジャー適用に対する集計列をテーブルから除去することができる。次いで、例えば、メジャーを追加する、メジャーを拡張する、またはメジャーを圧縮することによって、テーブルのディメンショナリティを更新することができる。メジャー適用式は、新たなディメンショナリティを組み込むために調節され、新たなメジャー適用式はテーブルに適用される。このように、メジャー適用は、キューブのディメンショナリティが調節された後に発生したかのように見えるように並び替えられる(reorder)。
【００５０】
[0036]  例えば、ユーザー１１９が、「国」ディメンション属性だけに適用される「インターネット販売量」メジャーから開始し、「都市」属性を含ませるために「顧客地理」ディメンションを拡張させる場合、以下のプロセスを実行することができる（テーブル６参照）。最初に、クエリー構築コンポーネント１１６は、集計列についての式を抽出することができる。
【００５１】
【数６】
0006652490.tif 000013
【００５２】
その後、クエリー構築コンポーネント１１６は、集計列が除去されるように、クエリーを構築することができる。
【００５３】
【数７】
0006652490.tif 000014
【００５４】
テーブル７は、結果的に得られたテーブルを示す（テーブル６における集計列は除去されている）。
【００５５】
【表７】
0006652490.tif 000015
【００５６】
[0037]  続いて、ディメンション変化(dimensionality change)を適用することができる。例えば、
【００５７】
【数８】
0006652490.tif 000016
【００５８】
この拡張をテーブル１に示す。
[0038]  クエリー構築コンポーネント１１６は、新たなディメンショナリティを含ませるために、メジャーについての式を調節する。
【００５９】
【数９】
0006652490.tif 000017
【００６０】
ここでは、次に、メジャーについての式は、「顧客地理」ディメンションの「都市」属性を考える(contemplate)。
[0039]  最後に、クエリー構築コンポーネント１１６は、新たなメジャーを適用し直すことができる。
【００６１】
【数１０】
0006652490.tif 000018
【００６２】
例えば、この結果、テーブル８をクエリー実行コンポーネント１２６によって生成することができる。
【００６３】
【表８】
0006652490.tif 000019
【００６４】
[0040]  メジャー列のこの「浮動」は、機能的および反復組成の下で永続性がある(sound)。言い換えると、クエリーにおいてキューブ・テーブル（したがって浮動メジャー）のディメンショナリティ(dimensionality)を変更する他のステップがあっても、チェインにおける以前のステップのいずれにも戻ることも調節することもなく、蓄積され(accumulate)続けることができる。
【００６５】
[0041]  更に、システム１００は、キューブ・データーを操作するために使用することができるキューブ演算子もサポートする。このような演算子は、既存のリレーショナル・プリミティブを取り巻くラッパー(wrapper)とすることができるが、これらの演算子は中核の関係演算の回りにメジャーを浮動させるために他の演算を追加する。完全を期するために、全てのディメンションのクロス積から、基礎のキューブ１０４におけるデーターから実際にあるファクト行を選択する座標の組み合わせのみを選択するFactRowsExist関数について以下で紹介する。同様なフィルターは、関係空間に下げられるときにキューブ演算の正しいセマンティクスを保存するために使用することができる。
【００６６】
[0042]  最初に、ディメンションをテーブルに追加する"AddDimension"演算子について説明する。この演算子は、ファクト・テーブルの識別情報(identity)、ディメンション・テーブルの列名称の識別情報、およびディメンション・テーブルの識別情報を入力として受ける。例えば、AddDimension(factTable, dimensionColumnName, dimensionTable)は、（恐らくはフィルタリングされた）ディメンション・テーブルをファクト・テーブルに、ネスト・ジョイントを使用して組み込むことができる。この演算子は、ディメンション・テーブルがフィルタリングされた場合、キューブのディメンショナリティ(dimensionality)を変化させることができる。尚、ディメンション・テーブルのフィルタリングは、テーブルにおける行を選択する演算子（例えば、Table.SelectRows）によって遂行できることを注記することができる。以下に、演算子例の低位関係形式(lowered relational form)を明記する。
【００６７】
【数１１】
0006652490.tif 000020
【００６８】
[0043]  "ExpandDimension"演算子は、既に添付された（例えば、AddDimension演算子によって）ディメンション・テーブルの属性を拡張し、キューブのディメンショナリティを変化させる。この演算子例は、ファクト・テーブル、ディメンション列名称の識別情報、および少なくとも１つの属性名称の識別情報を入力として取り込む。例えば、ExpandDimension(factTable, dimensionColumnName, {dimensionAttributeName1, ... })。この演算子の低位関係形式例を以下に明記する。
【００６９】
【数１２】
0006652490.tif 000021
【００７０】
[0044]  "CollapseDimension"演算子は、以前に拡張されたディメンションの属性を圧縮し、キューブのディメンショナリティ(dimensionality)を変化させる。CollapseDimension演算子例は、ファクト・テーブル、および少なくとも１つの属性名称の識別情報を入力として取り込む。例えば、CollapseDimension(factTable, {dimensionAttributeName1, ... })。尚、ディメンションを圧縮する前に行を選択する演算子によって、ディメンション・メンバー（およびメジャー）に対してフィルターを追加できることを注記することができる。例えば、これは、ディメンションに対してスライスを作成することができ、ディメンションおよびメジャーのクロス・フィルタリング(cross-filtering)を実施するために使用することができる（例えば、「オア」(or)クローズにおいて一度に多数のディメンションを参照するフィルター）。CollapseDimension演算子の低位関係形式の一例を以下に示す。
【００７１】
【数１３】
0006652490.tif 000022
【００７２】
[0045]  "AddMeasure"演算子は、メジャーをファクト・テーブルに適用し、ディメンション座標レコードは、先の例において示した形態をなすことができる。AddMeasure演算子は、入力として、factTable、列名称の識別情報、および適用されようとするメジャー関数の識別情報、例えば、AddMeasure(factTable, columnName, measureFunction)を取り込む。AddMeasure演算子の低位関係形式の一例を以下に示す。
【００７３】
【数１４】
0006652490.tif 000023
【００７４】
[0046]  以上で記した形態で表現されたクエリーは、目標キューブ１０４に対して実行することができるクエリーに、任意の順序で変換して供給することができる（例えば、クエリー構築コンポーネント１１６および／またはクエリー実行コンポーネント１２６によって）。以下に明記する説明は、抽象シンタックス・ツリー（ＡＳＴ：abstract syntax tree）および／または式ツリーに精通していることを想定しており、更に、このようなツリーの標準的形態への正規化にも精通していることも想定している。概念的に、クエリー変換のプロセスについて以下に説明する。最初に、ユーザー１１０（またはプログラム）は、演算をキューブおよび関係演算子に関して表現する。その後、キューブ演算は関係演算子および浮動メジャーに「下げられる」。その後、式は正規化され、演算子を並び替え、正規化式ツリー・パターンに落ち着く(settle)。次いで、正規化式ツリー・パターンは、キューブ・サーバーの予測に一致するように、例えば、クエリー実行コンポーネント１２６がクエリーを実行することができるように、「キューブ式」(cube expression)に「上げる」(raise)ことができる。次いで、キューブ式をサーバー特定シンタックスに変換することができる。
【００７５】
[0047]  クエリー構築コンポーネント１１６によって適用することができるクエリー正規化規則の例について、これより説明する。例えば、列選択および行フィルターを、できるだけ深くまで式ツリー内にプッシュすることができる。拡張されたネスト・ジョイントをフラット・ジョイント、例えば、ExpandTableColumn(NestedJoin(x,y),{all cols of y}) -> Join(x,y)に変換することができる。追加された列の除去は、その列が決して追加されなかったかのように行われる。例えば、RemoveColumn(AddColumn(x),x) -> no-op。フラット・ジョイントの上における分類は、ある種の場合にはネスト・ジョイントに変換することができる。例えば、Group(Join(x,y), {all cols of x}, {table of y}) -> NestedJoin(x,y)。
【００７６】
[0048]  クエリー構築コンポーネント１１６によって実行することができる「キューブ式」への変換に関連するアクション例について、これより説明する。低位クエリー式内(lowered query expression)において、特定の正規化パターンを検出し、「キューブ式」に変換することができる。これは、多ディメンション・クエリー言語の文法に密接に一致する式ツリーである。一例では、ディメンション・テーブルとのフラット・ジョイントが、ディメンションの属性をキューブ式に追加する。例えば、Join(factTable, {}, dimensionTable, {})は、以下のように変換する。
【００７７】
【数１５】
0006652490.tif 000024
【００７８】
[0049]  他の例では、フィルタリングされたディメンション・テーブルとのネスト・ジョイントが、ディメンション（例えば、スライサー）の属性に対抗してフィルターをキューブ式のサブクエリーにプッシュする。例えば、NestedJoin(factTable, {}, SelectRows(dimensionTable, (r) => r[City] = "Seattle"))は次のように変換する。
【００７９】
【数１６】
0006652490.tif 000025
【００８０】
[0050]  更に他の例では、メジャー適用がメジャー参照をキューブ式に追加する。例えば、
【００８１】
【数１７】
0006652490.tif 000026
【００８２】
は、
【００８３】
【数１８】
0006652490.tif 000027
【００８４】
に変換する。
[0051]  更に他の例では、行フィルター（例えば、SelectRows)を、メジャーおよびディメンションに対するフィルター式に変換することができる。つまり、例えば、Table.SelectRows(factTable, each [Internet Sales Amount] > 500)は、次のように変換する。
【００８５】
【数１９】
0006652490.tif 000028
【００８６】
[0052]  更にまた別の例では、全ての他のディメンションのグループが、残りのディメンションの「圧縮」動作に変換される。圧縮されたディメンションは、キューブ式においてサブクエリーにプッシュすることができ、他のディメンションは外部キューブ式内に残る。したがって、例えば、Table. Group(factTable, {"dim2", "dim3"}, {"collapsed diml", (rows) => rows[diml]}) は、次のように変換する。
【００８７】
【数２０】
0006652490.tif 000029
【００８８】
[0053]  クエリー構築コンポーネント１１６は、キューブ式を、目標キューブ・サーバーの期待言語およびシンタックスに変換することができる。以上で説明したアクションを明確にするために、以下に多数の例について説明する。
例１−ディメンションの追加：
[0054]  以下のクエリーは、ユーザーまたはプログラムによって提示することができる。
【００８９】
【数２１】
0006652490.tif 000030
【００９０】
クエリー構築コンポーネント１１６は、このクエリーを以下のように下げることができる。
【００９１】
【数２２】
0006652490.tif 000031
【００９２】
このクエリー例では、正規化は実行されず、上のクエリーは空キューブ式に変換される（実行するキューブ演算がないため）。更に、キューブ１０４に対して実行されるクエリーがないので、クエリーをキューブ・サーバーの言語に変換する必要はない。その結果、空テーブルが戻される。
例２−ディメンションの拡張
[0055]  以下の例では、キューブ式のフォーマットは次の通りである。
【００９３】
「から」(From)は入力キューブを指す。「ディメンション」(Dimensions)は拡張するディメンションを指す。「メジャー」(Measures)は、適用するメジャーであり、例において参照されるフィルターは、その述部(predicate)に基づいて、結果的に得られた行をフィルタリングする。以下のクエリーは、ユーザーまたはプログラムによって提示することができる。
【００９４】
【数２３】
0006652490.tif 000032
【００９５】
クエリー構築コンポーネント１１６は、このクエリーを以下のように下げることができる。
【００９６】
【数２４】
0006652490.tif 000033
【００９７】
次いで、クエリー構築コンポーネント１１６は、以下のように、ExpandTableColumnをSelectRowsによってプッシュし、次いでExpandTableColumn(NestedJoin)パターンをフラット・ジョイントに変換することによって、低位式(lowered expression)を正規化することができる。
【００９８】
【数２５】
0006652490.tif 000034
【００９９】
[0056]  次いで、クエリー構築コンポーネント１１６は、正規化された式をキューブ式に変換することができる。
【０１００】
【数２６】
0006652490.tif 000035
【０１０１】
クエリー構築コンポーネント１１６および／またはクエリー実行コンポーネント１２６は、キューブ式を、キューブ１０４に問い合わせることをサポートされた言語に変換することができる。次いで、データー提供コンポーネント１２８はテーブル１をクライアント計算デバイス１０８に表示のために供給することができる。
例３：メジャーの追加
[0057]  以下のクエリーは、ユーザーまたはプログラムによって提示することができる。
【０１０２】
【数２７】
0006652490.tif 000036
【０１０３】
クエリー構築コンポーネント１１６は、このようなクエリーを以下のように下げることができる。
【０１０４】
【数２８】
0006652490.tif 000037
【０１０５】
次いで、クエリー構築コンポーネント１１６はこの式を、直前の例におけるように、フラット・ジョイントを有するように変換することができる。
【０１０６】
【数２９】
0006652490.tif 000038
【０１０７】
[0058]  次いで、クエリー構築コンポーネント１１６は、正規化された式をキューブ式に変換することができる。
【０１０８】
【数３０】
0006652490.tif 000039
【０１０９】
クエリー構築コンポーネント１１６および／またはクエリー実行コンポーネント１２６は、キューブ式を、キューブ１０４に対応する言語および／またはシンタックスに変換することができる。このようなクエリーの実行によって得られたテーブルをテーブル４に示す。
例４：フィルター
[0059]  以下のクエリーは、ユーザーまたはプログラムによって提示することができる。
【０１１０】
【数３１】
0006652490.tif 000040
【０１１１】
クエリー構築コンポーネント１１６は、このようなクエリーを以下のように下げることができる。
【０１１２】
【数３２】
0006652490.tif 000041
【０１１３】
次いで、クエリー構築コンポーネント１１６は以上の式を、フラット・ジョイントを有するように正規化することができる。また、クエリー構築コンポーネント１１６は、「顧客地理」ディメンション・テーブルとのジョイントの下にある都市ディメンション属性に対する「行」フィルターを、ここに示すように、プッシュすることができる。
【０１１４】
【数３３】
0006652490.tif 000042
【０１１５】
次いで、クエリー構築コンポーネント１１６は、正規化された式をキューブ式に変換することができる。
【０１１６】
【数３４】
0006652490.tif 000043
【０１１７】
クエリー構築コンポーネント１１６および／またはクエリー実行コンポーネント１２６は、以上の式を、キューブ１０４に問い合わせるために使用することができる言語および／またはシンタックスに変換することができる。このクエリーを実行すると、その結果以下のテーブルを得ることができる。
【０１１８】
【表９】
0006652490.tif 000044
【０１１９】
例５：圧縮
[0060]  以下のクエリーは、ユーザーまたはプログラムによって提示することができる。
【０１２０】
【数３５】
0006652490.tif 000045
【０１２１】
尚、本明細書における以前の例にあるメジャー・フィルタは、簡潔にするために省略されていることを注記しておく。クエリー構築コンポーネント１１６は、このクエリーを以下のように下げることができる。
【０１２２】
【数３６】
0006652490.tif 000046
【０１２３】
[0061]  メジャーを「浮動」させる動作の追加について注記すべきであろう。何故なら、テーブルのディメンショナリティが変化するからである。更に、新たな１組のディメンション（国）を拠り所にするために、メジャー適用が調節されたことも注記することができる。更に、圧縮されていない残りのディメンション属性によって分類するグループ動作が採用されることも注記することができる。最初に、以前の例におけるように、ExpandTableColumn(NestedJoin)をフラット・ジョイントと置き換える。
【０１２４】
【数３７】
0006652490.tif 000047
【０１２５】
都市ディメンションに対するフィルターは、ディメンション・テーブルにプッシュ(push down)される。
【０１２６】
【数３８】
0006652490.tif 000048
【０１２７】
また、除去された列はもはや必要でないので、RemoveColumns(AddColumn)対も消去される。尚、これはメジャーの「浮動」の主要部分であり、クエリーに正規化後に効率的に評価させることを注記することができる。
【０１２８】
【数３９】
0006652490.tif 000049
【０１２９】
[0062]  最後に、クエリー構築コンポーネント１１６は、Group(Join)コンビネーションをNestedJoinに正規化することができる。
【０１３０】
【数４０】
0006652490.tif 000050
【０１３１】
次いで、クエリー構築コンポーネント１１６はこの式をキューブ式に変換することができる。
【０１３２】
【数４１】
0006652490.tif 000051
【０１３３】
クエリー構築コンポーネント１１６および／またはクエリー実行コンポーネント１２６は、このクエリーを、キューブ１０４に対してクエリーを実行するために使用することができる言語および／またはシンタックスに変換することができる。以下のテーブルは、このクエリーに基づいて引き出すことができる。
【０１３４】
【表１０】
0006652490.tif 000052
【０１３５】
[0063]  図２〜図４は、キューブに対する実行のためのクエリーの構築に関係する方法例を示す。これらの方法は、シーケンスで実行される一連のアクトであることが示され説明されるが、これらの方法はそのシーケンスの順序には限定されないことは理解され認められよう。例えば、あるアクトは、本明細書において説明する以外の異なる順序で行うことができる。加えて、あるアクトが他のアクトと同時に実行することもできる。更に、ある場合には、本明細書において説明する方法を実施するためには、全てのアクトが必要とされない場合もある。
【０１３６】
[0064]  更に、本明細書において説明するアクトは、１つ以上のプロセッサーによって実施すること、および／または１つまたは複数のコンピューター読み取り可能媒体上に格納することができるコンピューター実行可能命令であることも可能である。コンピューター実行可能命令は、ルーチン、サブルーチン、プログラム、実行のスレッドおよび／またはその他を含むことができる。更にまた、方法のアクトの結果は、コンピューター読み取り可能媒体に格納すること、ディスプレイ・デバイス上に表示すること、および／またはその他が可能である。
【０１３７】
[0065]  これより図２を参照すると、キューブに対して実行することができるクエリーを構築する方法例２００を示す流れ図が示されている。方法２００は２０２において開始し、２０４においてキューブを受ける。２０６において、キューブにおける少なくとも１つのディメンション属性、および少なくとも１つのメジャーの選択を受ける。例では、キューブは、場所および時間によって販売を特定するデーターを含むことができる。このような例では、販売がメジャーであり、位置および時間がディメンションとなる。位置ディメンションの属性は、都市、州、および国とすることができ、一方時間ディメンションの属性は、週、月、および年とすることができる。
【０１３８】
[0066]  ２０８において、少なくとも１つのディメンション属性および少なくとも１つのメジャーの選択に基づいて、クエリーを構築する。例では、選択が位置ディメンション属性「都市」についてであり、選択されたメジャーが「販売」である場合、構築されるクエリーは、キューブから都市毎に販売を引き出すように構成することができる。
【０１３９】
[0067]  ２１０において、クエリーに基づいてデーターを受ける。具体的には、クエリーをキューブに対して実行し、このキューブに対するクエリーの実行に基づいて生成されたデーターを受ける。このデーターは、テーブル形態で計算デバイスのディスプレイ上においてユーザーに提示することができる。２１２において、提示されたデーターに関する入力を受ける。このような入力は、特定の属性値に基づいて提示されたデーターをフィルタリングする要求、ディメンション属性の圧縮、ディメンション属性の拡張、ディメンション属性の追加、メジャーの追加等であってもよい。このタイプのユーザー入力の例をここで明示する。ユーザーがディメンション属性「都市」によって販売数を取得した例を続けると、ユーザーは、文字「Ａ」で始まる都市から販売数を提供されることを望むかもしれない。つまり、入力は、入力文字「Ａ」に基づいて都市をフィルタリングする要求である可能性がある。他の例では、ディメンション属性「位置」を圧縮するために、ユーザーは、都市による販売数ではなく、州による販売数が提供されることを望むかもしれない。つまり、２１２において受ける入力は、「都市」から「州」にディメンション属性「位置」を圧縮する要求であってもよい。更に他の例では、ディメンション属性「位置」を拡張するために、ユーザーが、都市毎の販売数ではなく、選挙区(voting ward)毎の販売数が提供されることを望むかもしれない。したがって、２１２においてうける入力は、ディメンション属性「位置」を「都市」から「選挙区」に拡張する要求であってもよい。更にまた他の例では、ユーザーは、販売データーと共に利益情報を提供されることを望むかもしれない。ユーザーは、ユーザーが都市毎の販売および年毎の利益の双方が提供されるように、利益を戻すことを要求することもできる。これは、メジャーを追加する例である。加えてまたは代わりに、ユーザーはメジャーを削除することを望むのでもよい。
【０１４０】
[0068]  ２１４において、２１２において受けた入力に基づいてクエリーを更新する。２１６において、２１４において更新したクエリーに基づいて、更に他のデーターを受ける。即ち、キューブに対して更新クエリーを実行し、このような実行の結果を受けて表示画面上においてユーザーに提示する。したがって、ユーザーは、データーを見て、そのデーターに対して実行すべき少なくとも１つの動作を識別することによって、クエリーを構築する。このプロセスは、ユーザーが望むデーターが得られるまで継続することができる。２１８において、ユーザーが追加入力を供給しているか否かについて判定を行う。ユーザーが追加の入力を供給する場合、本方法は２１２に戻り、それ以外の場合本方法は２２０において終了する。
【０１４１】
[0069]  これより図３を参照すると、キューブに対する実行のためのクエリー構築を容易にする方法例３００が示されている。方法３００は、３０２において開始し、３０４においてキューブを受ける。３０６において、少なくとも１つのディメンション属性（例えば、ディメンション「時間」に対する属性「日」）および少なくとも１つのメジャーの選択を受ける。３０８において、少なくとも１つのディメンション属性および少なくとも１つのメジャーの選択に基づいて、クエリーを構築する。３１０において、クエリーに基づいてデーターを受ける。前述のように、３０８において構築されたクエリーは、キューブに対して実行することができ、その結果、ディスプレイ上にテーブル形態で提示することができるデーターが供給される。３１２において、テーブル形態データーで表された少なくとも１つのディメンションを圧縮または拡張する要求を受ける。ディメンションを圧縮するとは、更に粗い属性に対して粒度が更に粗い座標を生成することを意味し、一方ディメンションを拡張するとは、粒度が更に高い属性に対して粒度が更に細かい座標を生成することを意味する。３１４において、少なくとも１つのディメンションを圧縮または拡張する要求に基づいて、クエリーを改訂する。
【０１４２】
[0070]  加えて、少なくとも１つのメジャーの計算は、例えば、しかるべきディメンション属性に対して属性値が引き出される後までメジャーが計算されないように、このクエリーでは「浮動」になっている。これは、ユーザーが、クエリー構築の以前のステップにおいて、メジャーを計算することを要求したという事実にも拘わらず（例えば、ディメンション属性の拡張または圧縮を要求する前）、自動的に行われる。メジャー計算の浮動は、メジャー計算の要求を識別し、メジャー計算がディメンション属性を識別した後に行われるように、クエリーにおけるメジャー計算コマンドをある位置に移動させることによって、引き継ぐことができる。
【０１４３】
[0071]  尚、このアクトは、例えば、コマンドをクエリーの終端に追加することとは異なることを注記しておく。例えば、初期のクエリー例が以下の形態を有するとしてもよい。
【０１４４】
ディメンション＝時間、属性＝日、メジャー＝販売
このようなクエリーに基づいて引き出されるデーターは、日毎の販売であるとすることができる。このクエリーが定式化し直されると、クエリーは次の形態を有することができる。
【０１４５】
ディメンション＝時間、属性＝日、属性＝週、メジャー＝販売。
このように、属性の選択は、メジャー計算コマンドよりも前に置かれ、メジャー計算は「浮動」となる。この場合も、これは、次のように、属性選択をクエリーの終端に添付するのとは対照的である。ディメンション＝時間、属性＝日、メジャー＝販売、属性＝週。方法３００は３１６において完了する。
【０１４６】
[0072]  これより図４を参照すると、キューブの融合を容易にする方法例４００が示されている。方法４００は４０２において開始し、４０４において、第１ソース（任意に、第１フォーマットの）からの第１キューブをを第２ソースからの（そして任意に第２フォーマットの）第２キューブと融合する要求を受ける。４０６において、第１キューブを第２キューブと融合して融合キューブを生成する。４０８において、この融合キューブに対してクエリーを実行する。このように、異なるデーター・ソースからのキューブを融合し、１つのクエリーをこの融合キューブに対して実行することができる。方法４００は、４１０において完了する。
【０１４７】
[0073]  これより図５を参照すると、キューブに対して実行するクエリーの構築を容易にするグラフィカル・ユーザー・インターフェース例５００が示されている。グラフィカル・ユーザー・インターフェース５００は、キューブ（例えば、キューブ１０４）を表すグラフィカル・アイコン５０２を含む。グラフィカル・アイコン５０２が選択されたことに応答して、複数のアイコン５０４〜５１２を提示することができる。アイコン５０４〜５１２は、アイコン５０２によって表されたキューブにおけるオブジェクトを表す。例では、グラフィカル・アイコン５０６は、ビジネスの顧客に関係するオブジェクトを表すことができる。グラフィカル・アイコン５０６を選択すると、グラフィカル・アイコン５１４および５１６を提示させることができ、グラフィカル・アイコン５１４および５１６はキューブ１０４におけるディメンションを表す。グラフィカル・アイコン５１６を選択すると、複数のグラフィカル・アイコン５１８〜５２４を提示させることができ、このようなグラフィカル・アイコン５１８〜５２４は、アイコン５１６によって表されたディメンションのそれぞれの属性を表す。グラフィカル・ユーザー・インターフェース５００においてアイコンと対応付けて示される数値は、アイコンの下にあるオブジェクトの数をユーザーに示すことができる。例えば、アイコン５１６によって表されたディメンションは４つの属性を有し、数値（４）がアイコン５１６に図式的に関係付けて示されている。ユーザー１１０は、オブジェクト全体をナビゲートし、ユーザー１１０に関心があるキューブ１０４のディメンション属性およびメジャーを選択することができる。
【０１４８】
[0074]  これより図６を参照すると、他のグラフィカル・ユーザー・インターフェース例６００が示されており、グラフィカル・ユーザー・インターフェース６００は、ユーザー１１０によるある種のディメンション属性およびメジャーの選択を図示する。アイコン５１２の選択を受けたことに応答して、複数のアイコン６０２および６０４が示される。これらは、メジャーの２つの分類を識別する（それぞれ、購入に関するメジャーおよび製品に関するメジャー）。アイコン６０２が選択されたことに応答して、複数の選択可能なアイコン６０６〜６１０が提示され、アイコン６０６〜６１０はそれぞれメジャーを表す。図６において「購入」分類の下に示されているメジャー例は、「注文個数」、「受領個数」、および「コスト」を含む。更に、アイコン５０８が選択されたことに応答して、アイコン６１２および６１４が提示され、アイコン６１４が選択されたことに応答して、アイコン６１６が示される。アイコン６１２および６１４は、製品に関するディメンション（例えば、「製品ＩＤ」および「カテゴリー名」）を表し、アイコン６１６は、アイコン６１４によって表されるディメンション「カテゴリー名」に対する属性「カテゴリー名」を表す。
【０１４９】
[0075]  グラフィカル・ユーザー・インターフェース例６００において示すように、アイコン６０６が選択されており、したがって商品の注文個数（例えば、「注文個数」）を識別するメジャーが選択される。加えて、ディメンション「顧客名」の属性「都市」および「国」、ならびにディメンション「カテゴリー名」の属性「カテゴリー名」も選択されている。一旦ユーザー１１０が所望のディメンション属性およびメジャーを選択したなら、ユーザー１１０は「ロード」ボタン６１８を選択することができる。入力受入コンポーネント１１５（図１）は、ディメンション属性およびメジャーの選択を受けることができ（例えば、「ロード」ボタン６１８が選択されたことに応答して）、クエリー構築コンポーネント１１６は、入力受入コンポーネント１１５が受けた入力に基づいて、クエリーを構築する。サーバー計算デバイス１０６はこのクエリーを受信し、クエリー実行コンポーネント１２６はキューブ１０４に対してこのクエリーを実行する。データー提供コンポーネント１２８は、キューブ１０４に対するクエリーの実行に基づいて、戻されたデーターを受信し、このデーターをクライアント計算デバイス１０８に送信し、クライアント計算デバイス１０８において、データー１１７としてメモリー１１２に入れられる。
【０１５０】
[0076]  これより図７を参照すると、ワークシートを含むグラフィカル・ユーザー・インターフェース例７００が示されており、提示コンポーネント１２０が、構築されたクエリーに基づいて引き出されたデーター１１７を、テーブル形態で提示する。グラフィカル・ユーザー・インターフェース７００は、選択されたそれぞれのディメンション属性に対する列、およびディメンション属性の値のメジャーに対する行を含むテーブル形式データー７０２を含む。つまり、グラフィカル・ユーザー・インターフェース６００を参照して先に説明したユーザー選択例を続けると、テーブル形式データー７０２は、ディメンション「顧客名」に対する属性「都市」を表す第１列７０４、ディメンション「顧客名」に対する属性「国」を表す第２列７０６、およびディメンション「カテゴリー名」に対する属性「カテゴリー名」を表す第３列７０８を含む。第４列７１０は、メジャー「注文個数」を表し、第４列７１０内の値は、列７０４、７０６、および７０８に示すそれぞれの属性を有する製品の注文個数を表す。
【０１５１】
[0077]  これより図８を参照すると、クエリーの構築および編集を容易にするクエリー・エディター・ツールのグラフィカル・ユーザー・インターフェース例８００が示されている。例えば、図７に示したワークシートにおいてデーターを提示されたことに応答して、ユーザー１１０は、異なるデーターをユーザー１１０に提示させるクエリーを構築することを望むのでもよい。グラフィカル・ユーザー・インターフェース８００は、グラフィカル・ユーザー・インターフェース７００に示したデーターを得るために実行されたステップのリストを明示するフィールド８０２を含む。フィールド８０４は、フィールド８０２に示すステップに基づいて、キューブ１０４から引き出されたデーターを示す。例えば、フィールドにおける「ソース」ステップは、アイコン５０２によって表されたキューブ１０４の選択を表す。フィールド８０２に示すステップ "expand diml"は、ディメンション「顧客名」のディメンション属性「都市」および「国」の選択を表す。ステップ "expand dim2"は、ディメンション「カテゴリー名」のディメンション属性「カテゴリー名」の選択を表す。本明細書において説明するように、フィールド８０２に示すステップは選択可能であり、フィールド８０４に提示されるデーターは、異なるステップが選択されると変化する。
【０１５２】
[0078]  これより図９を参照すると、クエリー・エディター・ツールの他のグラフィカル・ユーザー・インターフェース例９００が示されている。この例では、ユーザー１１０は、フィールド８０２に図示されたステップのリストからステップ"expand diml"を選択した。ステップ"expand diml"が選択されたことに応答して、ビジネス・インテリジェンス（ＢＩ）アプリケーションは、ディメンション「顧客名」からのディメンション属性「都市」および「国」に対する属性値は示されるが、ディメンション属性「カテゴリー名」およびメジャーに対する属性値はフィールド８０４に図示されないように、フィールド８０４に示されるコンテンツを更新することができる。
【０１５３】
[0079]  これより図１０を参照すると、クエリー・エディター・ツールの他のグラフィカル・ユーザー・インターフェース例１０００が示されている。ここでは、ユーザー１１０は、フィールド８０２からクエリーを構築するために使用される第３ステップ（"expand dim2"）を選択し、最初の３つのステップに基づいて（しかし"add measure 1”ステップを除く）クエリーが構築されるときにデーターを提示するために、フィールド８０４のコンテンツが更新される。即ち、クエリー構築コンポーネント１１６は、最初の３つのステップに基づいてクエリーを構築し、クエリー実行コンポーネント１２６はこのようなクエリーをキューブ１０４に対して実行する。第３ステップはカテゴリー名の拡張に関係するので、第３コラム７０８が提示される。図９および図１０が提示されたのは、本明細書において説明したステップ毎の手法においてクエリーを構築および／または編集するときに、ユーザー１１０が、新たなクエリー・ステップを挿入するため、既に実行されたクエリー・ステップを変更するため等で逆方向に進めることを例示するためである。
【０１５４】
[0080]  これより図１１を参照すると、クエリー・エディター・ツールの他のグラフィカル・ユーザー・インターフェース例１１００が示されており(present)、ここでは、ユーザー１１０はクエリー構築ステップ"add measure 1"を選択している。これは、メジャー「注文個数」の選択を表す。フィールド８０４のコンテンツは、前述のステップが選択されたことに応答して更新され、ディメンション属性の属性値に対するメジャー値を提示する。この場合も、ユーザーは、フィールド８０２に示すステップの間にクエリー構築ステップを挿入することができ、フィールド８０２に示すステップからクエリー構築ステップを削除すること、フィールド８０２に示される最後のクエリー構築ステップの後にクエリー構築ステップを追加すること等ができる。
【０１５５】
[0081]  図１２を参照すると、クエリー・エディター・ツールによって構築されたクエリーのテキスト・ベース・バージョンを説明するために使用することができるグラフィカル・ユーザー・インターフェース例１２００が表示されている。図１２に示すテキストを編集することによって、ユーザー１１０は、テキストを挿入する、テキストを除去する等によって、構築したクエリーを変更することを選択することができる。テキスト・ベース・エディタは、特に、ビジネス・インテリジェンス・アプリケーション１１２によって採用されるクエリー言語に精通したユーザーに非常に適しているであろう。
【０１５６】
[0082]  これより図１３を参照すると、ディメンション属性の圧縮を例示するグラフィカル・ユーザー・インターフェース例１３００が示されている。図１１に示したように、メジャー「注文個数」が、ディメンション属性「都市」および「国」に対するディメンション「顧客名」に関して計算され、ディメンション属性「都市」はディメンション属性「国」よりも粒度が細かい。図１３に戻り、「都市」から「国」にディメンションを圧縮すると、メジャー「注文個数」の値が、ディメンション属性「国」に巻き上げられる(roll up)。これは、フィールド８０２における"collapse diml "ステップによって表されている。
【０１５７】
[0083]  本明細書において説明したステップ毎の手法を使用したクエリーの構築は、 ディメンション属性を圧縮または拡張するときにおいて重要なプロセスとなる。何故なら、ディメンション属性を圧縮または拡張する機能は、以前のクエリー構築ステップと共に順次適用できないからである。クエリー構築コンポーネント１１６は、先に説明したように、メジャーの計算をクエリー式の後ろに「浮動させる」ことによって、クエリーを構築する。リレーショナル・データーベースの設定では、この手法に類似するものはない。即ち、リレーショナル・データーベースの設定において列をテーブルから除去しても、行が除去されることにはならない。
【０１５８】
[0084]  この例を続けると、クエリー構築コンポーネント１１６は、最初に、識別されたディメンション属性を引き出す第１式を定義し、次いで識別されたディメンション属性の属性値に対して識別されたメジャーを計算する第２式を定義することによって、クエリーを構築する（"collapse diml"ステップの前）。クエリー構築コンポーネント１１６が、属性ディメンションを圧縮する第３式を定義することを試みる場合、第３関数は第１および第２関数の後に実行し（例えば、フィールド８０２におけるステップの順序にマッピングする）、メジャーは、所望の（粗い）ディメンション属性「国」に対してではなく、粒度が細かいディメンション属性（「都市」）に対して計算され続ける。圧縮および拡張の場合、線形に式を追加する代わりに、メジャーを計算するための式は、所望の属性ディメンションが識別された後にこの式が実行されるように、クエリーの外部に浮動させられる。フィールド８０４に示す結果的に得られたテーブル１３０２は、２つの列を含む。即ち、ディメンション「顧客名」に対するディメンション属性「国」に対応する第１列１３０４、および第１列１３０４に示す属性値に対して計算されたメジャー値を識別する第２列１３０６である。
【０１５９】
[0085]  これより図１４を参照すると、他のグラフィカル・ユーザー・インターフェース例１４００が示されている(present)。ユーザー１１０がフィールド８０２において以前のクエリー構築ステップ（例えば、"add measurel"ステップ）を選択したことを確認することができる。つまり、例えば、クエリーがディメンション属性「都市」をディメンション属性「国」に圧縮させる前に、ユーザー１１０がクエリーを変更することを望む場合もあり得る。例えば、ユーザー１１０が、第１列７０４における第１の値を有する特定のセル１４０２を選択するのでもよい。これは、ポップアップ・ウィンドウ１４０４をユーザー１１０に提示させることができる。ポップアップ・ウィンドウ１４０４は、テーブル形式データー７０２からの結果をフィルタリングするための選択可能な選択肢を含むことができる。例えば、ユーザー１１０は、第１の値を有するテーブル形式データー７０２における行をいずれもテーブル形式データー７０２からフィルタリングしたいことを示すのでもよい。他の例では、ユーザー１１０が、テーブル形式データー７０２において、他のフィルター選択肢の中でもとりわけ、第１の値を有する行だけを供給して欲しいことを示すのでもよい。ポップアップ・ウィンドウ１４０４からユーザー１１０によって選択されたフィルター動作は、次に、フィールド８０２におけるクエリー構築プロセスにおける１ステップとして追加することができ、選択されたステップの直後に（例えば、"add measure 1"の後であるが、"collapse diml"ステップの前）提示することができる。クエリー構築コンポーネント１１６は、ユーザー１１０がフィルターを選択したことの指示を入力受入コンポーネント１１４が受けたことに応答して、構築されたクエリーを更新することができる。
【０１６０】
[0086]  図１５を参照すると、ユーザー１１０は、次に、フィールド８０２に示すクエリー・ステップの内最後のステップ（例えば、"collapse diml"ステップ）を選択することができる。これは、クエリー構築コンポーネント１１６に、改訂されたクエリーをクエリー実行コンポーネント１２６に送信させることができ、クエリー実行コンポーネント１２６は、改訂されたクエリーをキューブ１０４に対して実行する。データー提供コンポーネント１２８はデーター１１７を戻し、データー１１７はクライアント計算デバイス１０８のメモリー１１２に保持される。提示コンポーネント１２０は、フィールド８０４内にデーター１１７をテーブル形式フォーマットで提示する。ここで、テーブル形式データー１５０２は、クエリーを実行することによって戻されたデーターを例示する。例えば、セル１５０４における値は、（図１３に示したセルにおける対応する値と比較すると）クエリーにフィルタリング・ステップが含まれたことによって更新されている。
【０１６１】
[0087]  図１６を参照すると、テキスト・ベース・クエリー・エディター・ツールの他のグラフィカル・ユーザー・インターフェース例１６００が示されている。グラフィカル・ユーザー・インターフェース１６００は、以上で説明したようにして構築されたクエリーのテキスト表現を示す。
【０１６２】
[0088]  これより、種々の例について説明する。
[0089]  例１：計算システムは、プロセッサーと、メモリーとを含む。メモリーは、プロセッサーによって実行されるビジネス・インテリジェンス（ＢＩ）アプリケーションを含む。ビジネス・インテリジェンス（ＢＩ）アプリケーションは、クエリーの以前のバージョンに対する増分変更に基づいてクエリーを構築するように構成され、クエリーはクエリー・ステップのシーケンスとして表現され、このクエリー・ステップのシーケンスにおける各ステップは、増分変更におけるそれぞれの増分変更に対応する。ビジネス・インテリジェンス（ＢＩ）アプリケーションは、更に、クエリーに基づいてデーター・キューブからテーブル形式データーを引き出すように構成される。
【０１６３】
[0090]  例２：例１による計算システムにおいて、ビジネス・インテリジェンス（ＢＩ）アプリケーションがクエリー構築コンポーネントを含む。クエリー構築コンポーネントは、増分変更を受け、この増分変更、および以前に受けた増分変更のシーケンスに基づいてクエリーを構築する。クエリー構築コンポーネントは、クエリーを複数の関係演算子として表現する。
【０１６４】
[0091]  例３：例２による計算システムにおいて、クエリー構築コンポーネントが、複数の演算子を既定の式ツリー・パターンに正規化する。
[0092]  例４：例１による計算システムにおいて、ビジネス・インテリジェンス（ＢＩ）アプリケーションが、クエリーに対する増分変更を受けるクエリー構築コンポーネントを含み、クエリーに対する増分変更が、キューブにおけるディメンションを拡張する要求、またはキューブにおけるディメンションを圧縮する要求の内の１つであり、クエリー構築コンポーネントが、増分変更に基づいてクエリーを構築する。
【０１６５】
[0093]  例５：例４による計算システムにおいて、クエリーが第２増分変更を含み、第２増分変更が、ディメンションに対するメジャーを計算する要求であり、クエリー構築コンポーネントが、ディメンションの属性が選択された後にメジャーが計算されるように、クエリーを構築する。
【０１６６】
[0094]  例６：例５による計算システムにおいて、第２増分変更が前述の増分変更の前に行われる。
[0095]  例７：例１から６のいずれかによる計算システムであって、更に、データー・キューブから引き出されたテーブル形式データーをディスプレイ上に提示する提示コンポーネントを含み、提示コンポーネントが更にクエリーをディスプレイ上に提示する。
【０１６７】
[0096]  例８：例７による計算システムにおいて、提示コンポーネントがクエリー・ステップのシーケンスをディスプレイ上に提示する。
[0097]  例９：例８による計算システムにおいて、ビジネス・インテリジェンス（ＢＩ）アプリケーションが、前述のクエリー・ステップにおける以前のクエリー・ステップの選択を受ける入力受入コンポーネントを含み、入力受入コンポーネントが選択を受けたことに応答して、提示コンポーネントがデーター・キューブからの第２テーブル形式データーをディスプレイ上に提示し、第２テーブル形式データーが、前述のクエリー・ステップにおける以前のステップにおいて、クエリーに基づいて引き出される。
【０１６８】
[0098]  例１０：例９による計算システムにおいて、入力受入コンポーネントが以前のクエリー・ステップの選択を受けた後に、入力受入コンポーネントが中間増分変更を受け、クエリー構築コンポーネントが、以前のクエリー・ステップの後であり、かつクエリー・ステップのシーケンスにおける最後のクエリー・ステップの前に、追加のクエリー・ステップを追加するためのクエリーを構築する。
【０１６９】
[0099]  例１１：例１〜１０のいずれかによる計算システムにおいて、ウェブ・ブラウザーによってアクセス可能なサーバー計算デバイスが含まれる。
[00100]  例１２：コンピューター・プロセッサーによって実行される方法であって、この方法が、テーブル形式データーをディスプレイ上に提示するステップであって、テーブル形式データーが、以前に発行されたクエリー・ステップに基づいてデーター・キューブから引き出される、ステップと、後続のクエリー・ステップを受けるステップと、以前に発行されたクエリー・ステップおよび後続のクエリー・ステップに基づいてクエリーを構築するステップと、クエリーに基づいてデーター・キューブから更新テーブル形式データーを引き出すステップと、更新テーブル形式データーを引き出したことに応答して、更新テーブル形式データーをディスプレイ上に提示するステップとを含む。
【０１７０】
[00101]  例１３：例１２による方法において、以前に発行されたクエリー・ステップが、ディメンションの第１属性に対するメジャーを計算させ、後続のクエリー・ステップが、このディメンションの第２属性に対するメジャーを計算させる。
【０１７１】
[00102]  例１４：例１３による方法であって、更に、後続のクエリー・ステップを受けたことに応答して、クエリーにおいてディメンションの第２属性が指定された後に、ディメンションの第２属性に対してメジャーが計算されるように、クエリーを構築するステップを含む。
【０１７２】
[00103]  例１５：例１２〜１４のいずれかによる方法であって、更に、クエリー・ステップのシーケンスをディスプレイ上に提示するステップを含み、クエリー・ステップのシーケンスが、以前に発行されたクエリー・ステップと、後続のクエリー・ステップとを含み、クエリー・ステップのシーケンスにおける各クエリー・ステップが選択可能である。
【０１７３】
[00104]  例１６：例１５による方法であって、更に、クエリー・ステップのシーケンスにおけるクエリー・ステップの選択を受けるステップと、クエリー・ステップのシーケンスにおけるクエリー・ステップの選択に基づいてクエリーを構築するステップと、選択されたクエリー・ステップまでのクエリーに対応するテーブル・テーターを提示するステップとを含む。
【０１７４】
[00105]  例１７：例１２〜１６による方法において、後続のクエリー・ステップが、少なくとも１つのディメンションを圧縮または拡張する要求であり、この方法は、少なくとも１つのディメンションを圧縮または拡張する要求に基づいてクエリーを改訂するステップを含む。
【０１７５】
[00106]  例１８：例１２〜１７のいずれかによる方法において、クエリーを構築するステップが、以前のクエリー・ステップおよび後続のクエリー・ステップを複数の関係演算子に変換するステップと、既定のパターンに基づいて複数の関係演算子を正規化するステップとを含む。
【０１７６】
[00107]  例１９：例１２〜１８のいずれかによる方法であって、更に、クエリーに対する多数の増分変更を受けるステップと、増分変更毎に、クエリーを構築するステップと、それぞれの増分変更に基づいてテーブル形式データーを引き出すステップとを含む。
【０１７７】
[00108]  例２０：命令を含むコンピューター読み取り可能記憶媒体であって、プロセッサーによって命令が実行されると、プロセッサーに以下のアクトを実行させ、これらのアクトが、クエリーをうけるアクトと、クエリーを受けたことに応答して、データー・キューブからテーブル形式データーを引き出すアクトと、データー・キューブからテーブル形式データーを引き出したことに応答して、テーブル形式データーおよびクエリー・ステップのシーケンスをディスプレイ上に提示するアクトであって、クエリー・ステップのシーケンスが、クエリーを表し、テーブル形式データーが、データー・キューブにおけるディメンションの第１属性に対して計算されたメジャーを含む、アクトと、クエリーに対する増分変更を受けるアクトであって、増分変更が、データー・キューブにおけるディメンションの第２属性に対してメジャーを計算する要求である、アクトと、クエリーに対する増分変更を受けたことに応答して、クエリーに対する増分変更に基づいて第２テーブル形式データーを引き出すアクトであって、第２テーブル形式データーがディメンションの第２属性に対して計算されたメジャーを含む、アクトとを含む。
【０１７８】
[00109]  例２１：コンピューター実装システムであって、ディスプレイ上にテーブル形式データーを提示する手段であって、テーブル形式データーが、以前に発行されたクエリー・ステップに基づいてデーター・キューブから引き出される、手段と、後続のクエリー・ステップを受ける手段と、以前に発行されたクエリー・ステップおよび後続のクエリー・ステップに基づいてクエリーを構築する手段と、クエリーに基づいてデーター・キューブから更新テーブル形式データーを引き出す手段と、更新テーブル形式データーを引き出したことに応答して、更新テーブル形式データーをディスプレイ上に提示する手段とを含む。
【０１７９】
[00110]  これより図１７を参照すると、本明細書において開示したシステムおよび方法にしたがって使用することができる計算デバイス例１７００の上位図が示されている。例えば、計算デバイス１７００は、データー・キューブに対して実行するためのクエリーの構築および改訂をサポートするシステムにおいて使用されるのでもよい。他の例として、計算デバイス１７００は、キューブから抽出されたデーターの提示をサポートするシステムにおいて使用することができる。計算デバイス１７００は、メモリー１７０４に格納された命令を実行する少なくとも１つのプロセッサー１７０２を含む。命令は、例えば、先に論じた１つ以上のコンポーネントによって実行されると説明した機能を実現するための命令、または先に説明した方法の内１つ以上を実現するための命令であってもよい。プロセッサー１７０２は、システム・バス１７０６を介してメモリー１７０４にアクセスすることができる。実行可能命令を格納することに加えて、メモリー１７０４はファクト・テーブル、ディメンション・テーブル、階層情報等も格納することができる。
【０１８０】
[00111]  加えて、計算デバイス１７００は、システム・バス１７０６を介してプロセッサー１７０２によってアクセス可能であるデーター・ストア１７０８も含む。データー・ストア１７０８は、実行可能命令、キューブ、キューブのスライス等を含むことができる。また、計算デバイス１７００は、外部デバイスが計算デバイス１７００と通信することを可能にする入力インターフェース１７１０も含む。例えば、入力インターフェース１７１０は、外部計算デバイスから、ユーザー等から命令を受けるために使用することができる。また、計算デバイス１７００は、計算デバイス１７００を１つ以上の外部デバイスとインターフェースする出力インターフェース１７１２も含む。例えば、計算デバイス１７００は、テキスト、画像等を、出力インターフェース１７１２を介して表示することができる。
【０１８１】
[00112]  尚、入力インターフェース１７１０および出力インターフェース１７１２を介して計算デバイス１７００と通信する外部デバイスは、ユーザーが対話処理することができる実質的にあらゆるタイプのユーザー・インターフェースを設ける環境に含むことができると考えられる。ユーザー・インターフェース・タイプの例には、グラフィカル・ユーザー・インターフェース、自然ユーザー・インターフェース等が含まれる。例えば、グラフィカル・ユーザー・インターフェースは、キーボード、マウス、リモコン等のような入力デバイス（１つまたは複数）を使用するユーザーからの入力を受け入れ、ディスプレイのような出力デバイス上に出力を供給するのでもよい。更に、自然ユーザー・インターフェースは、ユーザーが、キーボード、マウス、リモコン等のような入力デバイスによって強いられる制約を受けないように、計算デバイス１７００と対話処理することを可能にするのでもよい。逆に、自然ユーザー・インターフェースは、音声認識、タッチおよびスタイラス認識、画面上および画面近く双方におけるジェスチャ認識、エア・ジェスチャ、頭部および眼球追跡、声および発話(voice and speech)、視覚、接触、ジェスチャ、機械インテリジェンス等に頼るのでもよい。
【０１８２】
[00113]  加えて、１つのシステムとして例示したが、計算デバイス１７００は分散型システムであってもよいことは理解されよう。つまり、例えば、様々なデバイスがネットワーク接続を介して通信することができ、計算デバイス１７００によって実行されると説明したタスクを、集合的に実行するのでもよい。
【０１８３】
[00114]  本明細書において説明した種々の機能は、ハードウェア、ソフトウェア、またはこれらの任意の組み合わせで実現することができる。ソフトウェアで実現する場合、機能は、コンピューター読み取り可能媒体上の１つ以上の命令またはコードとして格納することまたは送信することができる。コンピューター読み取り可能媒体は、コンピューター読み取り可能記憶媒体を含む。コンピューター読み取り可能記憶媒体は、コンピューターによってアクセスすることができる任意の入手可能な記憶媒体とすることができる。一例として、そして限定ではなく、このようなコンピューター読み取り可能記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク・ストレージ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは命令またはデーター構造の形態で所望のプログラム・コードを搬送または格納するために使用することができ、コンピューターによってアクセスすることができる任意の他の媒体を含むことができる。ディスク(disk and disc)は、本明細書において使用する場合、コンパクト・ディスク（ＣＤ）、レーザ・ディスク、光ディスク、ディジタル・バーサタイル・ディスク（ＤＶＤ）、フロッピー・ディスク、ブルーレイ・ディスク（ＢＤ）を含み、ディスク(disk)は通常データーを磁気的に再生し、ディスク(disc)は通常レーザを使用してデーターを光学的に再生する。更に、伝搬信号は、コンピューター読み取り可能記憶媒体の範囲には含まれない。また、コンピューター読み取り可能媒体は、１つの場所から他の場所へのコンピューター・プログラムの転送を容易にする任意の媒体を含む通信媒体も含む。例えば、接続は通信媒体となることができる。例えば、ソフトウェアがウェブサイト、サーバー、または他の離れたソースから、同軸ケーブル、光ファイバ・ケーブル、撚り線対、ディジタル加入者線（ＤＳＬ）、あるいは赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバ・ケーブル、撚り線対、ＤＳＬ、または赤外線、無線、およびマイクロ波のようなワイヤレス技術は、通信媒体の定義に含まれる。以上のものの組み合わせも、コンピューター読み取り可能媒体の範囲に含まれてしかるべきである。
【０１８４】
[00115]  あるいは、または加えて、本明細書において説明した機能は、少なくとも部分的に、１つ以上のハードウェア・ロジック・コンポーネントによって実行することができる。例えば、そして限定ではなく、使用することができる実証的なタイプのハードウェア・ロジック・コンポーネントには、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、特定プログラム集積回路（ＡＳＩＣ）、特定プログラム標準的製品（ＡＳＳＰ）、システム・オン・チップ・システム（ＳＯＣ）、複合プログラマブル・ロジック・デバイス（ＣＰＬＤ）等が含まれる。
【０１８５】
[00116]  以上で説明したことには、１つ以上の実施形態の例が含まれる。勿論、以上のデバイスまたは方法の着想可能なあらゆる変更(modification)および変形(alteration)を、先に述べた態様を説明する目的で記載することは不可能であるが、種々の態様には多くの更に他の変更および置換が可能であることを、当業者は認めることができよう。したがって、説明した態様は、添付する請求項の主旨および範囲に該当する、このような変形、変更、および変種(variation)を全て包含することを意図している。更に、「含む」(includes)という用語が詳細な説明または特許請求の範囲において使用される限りにおいて、このような用語は、「備える」(comprising)という用語が請求項において移行性単語として採用されるときに「備える」が解釈されるときと同様に、包含的であることを意図している。
【図１】
0006652490.tif 000053
【図２】
0006652490.tif 000054
【図３】
0006652490.tif 000055
【図４】
0006652490.tif 000056
【図５】
0006652490.tif 000057
【図６】
0006652490.tif 000058
【図７】
0006652490.tif 000059
【図８】
0006652490.tif 000060
【図９】
0006652490.tif 000061
【図１０】
0006652490.tif 000062
【図１１】
0006652490.tif 000063
【図１２】
0006652490.tif 000064
【図１３】
0006652490.tif 000065
【図１４】
0006652490.tif 000066
【図１５】
0006652490.tif 000067
【図１６】
0006652490.tif 000068
【図１７】
0006652490.tif 000069