(57)【特許請求の範囲】
【請求項１】
トランザクションデータの分析関係を識別するシステムであって、
データソースに通信可能に接続された１つまたは複数のコンピュータノードと、
コンピュータ可読命令を記憶した１つまたは複数のメモリと、
を含み、
前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記データソースによって処理された複数のクエリを示す情報を受信し、
前記複数のクエリの少なくとも２つのフィールドの一致参照の繰り返しに少なくとも部分的に基づいて、次元に関連付けられた複数の属性であって、前記少なくとも２つのフィールドに基づいた前記複数の属性を識別するために、前記受信された情報を分析し、
前記複数の属性の階層組織を示す情報であって、前記少なくとも２つのフィールドのうちの、あるフィールドのデータ型と、前記複数のクエリの前記フィールドとＧＲＯＵＰＩＮＧ句との第１の関連付けと、前記複数のクエリの前記フィールドとＡＧＧＲＥＧＡＴＥ句の第２の関連付けと、を含む前記情報を求めて、前記複数のクエリを少なくとも分析することによって、前記次元に関連付けられた階層のレベルを識別し、
前記複数の属性と前記レベルとを含む階層を形成する、
システム。
【請求項２】
コンピュータ可読命令を記憶した１つまたは複数のメモリをさらに含み、
前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記フィールドの前記データ型から階層へのマッピングを含むキュレートされたデータセットに少なくとも部分的に基づいて、前記階層の前記レベルを選択する、
請求項１に記載のシステム。
【請求項３】
コンピュータ可読命令を記憶した１つまたは複数のメモリをさらに含み、
前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記フィールドがＧＲＯＵＰＩＮＧ句またはＡＧＧＲＥＧＡＴＥ句の少なくとも１つに関連付けられる頻度を決定することに少なくとも部分的に基づいて、前記階層の前記レベルを識別する、
請求項１に記載のシステム。
【請求項４】
コンピュータ可読命令を記憶した１つまたは複数のメモリをさらに含み、
前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記複数のクエリが前記フィールドから第２フィールドへの変換を含むことを決定することに少なくとも部分的に基づいて、前記複数の属性を識別する、
請求項１に記載のシステム。
【請求項５】
コンピュータ可読命令を記憶した１つまたは複数のメモリをさらに含み、
前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記複数のクエリのＳＥＬＥＣＴ句が前記少なくとも２つのフィールドへの参照を含む回数を数えることによって、一致参照の前記繰り返しを決定する、
請求項１に記載のシステム。
【請求項６】
命令を記憶した非一時的コンピュータ可読記憶媒体であって、
前記命令を１つまたは複数のコンピュータ装置によって実行すると、前記１つまたは複数のコンピュータ装置は、少なくとも、
複数のクエリの少なくとも２つのフィールドの一致参照に少なくとも部分的に基づいて、次元に関連付けられた複数の属性であって、前記少なくとも２つのフィールドに基づいた前記複数の属性を識別するためにデータソースによって処理された複数のクエリを分析し、
前記複数の属性の階層組織を示す情報を求めて前記複数のクエリを少なくとも分析することによって、前記次元に関連付けられた階層のレベルを識別し、前記分析される情報は、前記少なくとも２つのフィールドのうちの、あるフィールドのデータ型と、前記複数のクエリの前記フィールドとＧＲＯＵＰＩＮＧ句の第１の関連付けと、前記複数のクエリの前記フィールドとＡＧＧＲＥＧＡＴＥ句の第２の関連付けと、のうちの少なくとも１つを含む、
非一時的コンピュータ可読記憶媒体。
【請求項７】
命令をさらに含み、
前記命令を前記１つまたは複数のコンピュータ装置によって実行すると、前記１つまたは複数のコンピュータ装置は、少なくとも、
前記複数のクエリのトランザクション文脈内で生じる前記少なくとも２つのフィールドの一致参照に少なくとも部分的に基づいて、前記次元と、前記次元に関連付けられた前記複数の属性とを識別する、
請求項６に記載の非一時的コンピュータ可読記憶媒体。
【請求項８】
トランザクションデータの分析関係を識別するコンピュータ実施方法であって、
複数のクエリの前記少なくとも２つのフィールドの一致参照に少なくとも部分的に基づいて、少なくとも２つのフィールドの結合パスを識別するためにデータソースによって処理された複数のクエリを分析するステップと、
前記少なくとも２つのフィールドの階層組織を示す情報を求めて前記複数のクエリを少なくとも分析することによって、前記結合パスに関連付けられた集計のレベルを識別するステップと、
を含み、
前記分析される情報は、前記少なくとも２つのフィールドのうちの、あるフィールドのデータ型と、前記複数のクエリの前記フィールドとＧＲＯＵＰＩＮＧ句の第１の関連付けと、前記複数のクエリの前記フィールドとＡＧＧＲＥＧＡＴＥ句の第２の関連付けと、のうちの少なくとも１つを含む、
コンピュータ実施方法。
【請求項９】
前記データ型と１つまたは複数の集計階層との間のマッピングに少なくとも部分的に基づいて、前記集計の前記レベルを識別するステップをさらに含む、
請求項８に記載のコンピュータ実施方法。
【請求項１０】
前記複数のクエリは、データベース管理システムまたはデータストリームによって行われた操作のログの少なくとも１つに表されたクエリに対応する、
請求項８に記載のコンピュータ実施方法。
【請求項１１】
前記フィールドがＧＲＯＵＰＩＮＧ句またはＡＧＧＲＥＧＡＴＥ句の少なくとも１つに関連付けられる頻度を決定することに少なくとも部分的に基づいて、前記集計の前記レベルを識別するステップをさらに含む、
請求項８に記載のコンピュータ実施方法。
【請求項１２】
前記複数のクエリが第１フィールドから値への変換を含むことを決定することに少なくとも部分的に基づいて、前記結合パスに含む前記少なくとも２つのフィールドのうちの少なくとも１つを識別するステップをさらに含む、
請求項８に記載のコンピュータ実施方法。
【請求項１３】
前記複数のクエリの前記少なくとも２つのフィールドの一致参照を計数するステップをさらに含む、
請求項８に記載のコンピュータ実施方法。
【請求項１４】
前記複数のクエリのトランザクション文脈内で生じる前記少なくとも２つのフィールドの一致参照に少なくとも部分的に基づいて、前記結合パスを識別するステップをさらに含む、
請求項８に記載のコンピュータ実施方法。
【請求項１５】
前記少なくとも２つのフィールド同士が関連しているという表示をユーザから受信することに少なくとも部分的に基づいて、前記結合パスを識別するステップをさらに含む、
請求項８に記載のコンピュータ実施方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年１２月２２日出願の米国特許出願番号第１４／５７８，７８６号の利益を主張し、その開示内容全体を参照により本明細書に組み込む。
【背景技術】
【０００２】
データウェアハウスおよびオンライン分析処理（「ＯＬＡＰ」）システムは、分析クエリの自動的な生成を可能にする様々なツールを含んでよい。これらのツールは、分析するデータの構造に関して様々な詳細をユーザ供給することに依存している場合がある。しかしながら、この情報提供は、複雑なプロセスとなり得る。ツールが、主キーおよび外部キーの関係等、明示的に定義されたスキーマ情報を用いて、分析クエリを自動的に生成する場合もある。しかしながら、明示的に定義されなくても、分析的に有用な関係は存在し得る。分析ツールのユーザが気付いていない分析的に有用な関係もあり得る。
【０００３】
以下の詳細な記載は、添付の図面と共に読むと、よりよく理解されよう。説明のために、開示の態様の様々な例を図に示すが、発明は、開示された具体的な方法および手段に限定されない。
【図面の簡単な説明】
【０００４】
【図１】トランザクションデータベース管理システムのデータにアクセスするパターンに基づいて、階層および結合パスを自動的に検出するシステムの実施形態を示すブロック図である。
【図２】実施形態が結合パスおよび階層の検出に利用し得る要素を含むクエリの例を示すブロック図である。
【図３】一致するフィールドが繰り返し指定されることに基づいて、可能な結合関係および次元を識別する実施形態によって使用可能な複数のクエリの例を示すブロック図である。
【図４】トランザクションデータベースシステムによって処理された複数のクエリの次元およびレベルの識別に基づいて、階層を形成するプロセスの実施形態を示すフローチャートである。
【図５】トランザクションアクセスパターンに基づいて、結合パスを識別するプロセスの実施形態を示すフローチャートである。
【図６】本開示の態様を実践してよいコンピュータ環境の実施形態を示すブロック図である。
【図７】本開示の態様を実践してよいコンピュータシステムの実施形態を示すブロック図である。
【発明を実施するための形態】
【０００５】
本開示の態様を採用して、トランザクションデータの分析操作を行うために使用し得る結合関係を識別してよい。結合関係を利用して、分析に使用可能な階層の生成に使用し得る分析クエリ等の分析クエリを自動的に生成してよい。本開示の実施形態は、リレーショナルデータベース管理システム等のトランザクションデータストアのクエリログを利用して、スキーマまたはメタデータによって明示的に識別されない結合関係を識別してよい。結合パスをさらに利用して、次元、および、関連する属性を識別し、次元属性の集計から形成され得る階層および他の分析関係を識別してよい。
【０００６】
分析関係を識別するシステムは、トランザクションデータストアに通信可能に接続されたコンピュータノードを含んでよい。コンピュータノードは、トランザクションデータストアへのアクセスに使用されたクエリを含むトランザクションログまたは診断ログを受信する命令を有するメモリを含んでよい。実施形態は、ログに含まれるクエリ情報のコーパスを分析して、次元、および、次元に関連する属性を識別してよい。識別は、トランザクションデータストアへのアクセスに使用されたクエリにおいて一致するフィールド参照に少なくとも部分的に基づいてよい。比較的高い頻度で一致するフィールドは、次元に関連する属性として選択されてよい。次元に関連付けられた階層のレベルは、次元および関連する属性が基づいているフィールドを参照するクエリ情報のコーパスを分析することに基づいて識別されてよい。ＡＧＧＲＥＧＡＴＥ（集計）句やＧＲＯＵＰＩＮＧ（グループ化）句にこのようなフィードを含むことによって、階層レベルと、階層内で集計され得る属性とを示唆してよい。このようなフィールドのデータ型も、階層レベルと属性を示唆してよい。
【０００７】
図１は、トランザクションデータベース管理システムのデータにアクセスするパターンに基づいて、階層と結合パスを自動検出するシステムの実施形態を示すブロック図である。
【０００８】
トランザクションデータベース１００は、リレーショナルおよび非リレーショナルデータベース管理システムを含んでよい。本明細書において、トランザクションという語は、データ集計、階層表示、推論形成、相関識別等の分析的機能を行うデータウェアハウジングコンポーネントと区別して使用される。トランザクション操作は、記録の記憶、記録の検索、記録の更新、および、記録の挿入を含んでよい。従って、トランザクションは、リレーショナルデータベースシステム、非リレーショナルデータベースシステム、ウェブサービス、販売時点管理システム、通信システム等を含むがこれらに限らない、様々なシステムによって行われてよい。同様に、本明細書において使用される場合、結合パスという語は、リレーショナルデータベースアプリケーションに限定されない。結合パスは、あるデータセットを他のデータに論理的に関連付けるのに使用し得る、データセットの１つまたは複数の属性、特徴、または、パターンを指してよい。
【０００９】
分析モジュール１０６は、トランザクションデータベース１００とは別個のコンポーネントを含んでもよく、または、トランザクションデータベース１００に一体化されたコンポーネントを含んでもよい。データベース管理システムは、トランザクション操作と分析操作の両方を支援してよいことは理解されよう。このような場合、トランザクションデータベース１００および分析モジュール１０６は、同一場所に配置されてよい。別個の実体としてのトランザクションデータベース１００および分析モジュール１０６の図１の描写は、一般的な原理を示すものであり、本開示の範囲を限定するものと見なすべきではない。分析モジュール１０６は、トランザクションデータベース１００とは別個のコンポーネントまたはシステムを含んでよい。例えば、分析モジュール１０６は、データウェアハウスまたはスタンドアロンのオンライン分析処理システムを含んでよい。
【００１０】
トランザクションデータベース１００は、操作の課程で、データを記憶、検索するために、様々なクエリを処理してよい。トランザクションデータベース１００によって処理されたトランザクションデータ１０４の一部または全部は、分析モジュール１０６にも伝達、または、分析モジュール１０６によって取得されてよい。
【００１１】
トランザクションデータベース１００が行う操作を記述する情報は、クエリログ１０２に記録されてよい。様々な実施形態において、クエリログ１０２は、クエリテキストとパラメータを記録する逐次ログファイルを含んでよい。一部の実施形態においては、トランザクションログは、システムによって処理されたクエリを示す情報を含んでよい。
【００１２】
本明細書において使用される場合、データソースという語は、データを取得、記憶、または、検索できる様々な機構を含んでよい。例は、トランザクションデータベース、非リレーショナルデータベース、リレーショナルデータベース、情報ストリーム、情報交換チャネル等を含むが、これらに限らない。
【００１３】
本明細書において使用される場合、クエリという語は、データを記憶、検索、更新、または、削除するために、トランザクションデータベースが処理するコマンドのテキスト記述または非テキスト記述を含んでよい。クエリは、一部の場合および実施形態においては、構造化クエリ言語（「ＳＱＬ」）等、クエリ言語を用いて表されてよい。他の例は、アプリケーションプログラミングインタフェース（「ＡＰＩ」）コールを通して、または、バイナリ形式のクエリ言語文を表すのに使用されるオブジェクトグラフ等のオブジェクトグラフとして、表されるクエリを含んでよい。
【００１４】
クエリログ１０２の情報は、分析モジュール１０６に伝えられてよい、または、分析モジュール１０６によって取得されてよい。クエリログ１０２に示されたクエリを本明細書に記載の様々な技術を用いて分析して、明示的に記述されていないデータ関係を識別してよい。様々な技術は、集計１１８およびグループ化１１６に基づいた技術を含み、集計１１８およびグループ化１１６は、例えば、集計関数またはＧＲＯＵＰ‐ＢＹ句としてクエリに指定されてよい。リレーショナル、非リレーショナル、ＮｏＳＱＬ、キーと値の対等を含む、様々なデータベース管理システムはすべて、集計１１８またはグループ化１１６を行う類似の手段を支援してよい。
【００１５】
トランザクションデータ１０４を分析モジュール１０６によって処理して、クエリログ１０２のクエリに基づいて識別された関係をさらに識別、絞り込み（ｒｅｆｉｎｅ）、または、検証してよい。例えば、分析モジュール１０６は、クエリログ１０２を用いて可能な階層を識別してよく、トランザクションデータ１０４を用いて可能な階層を検証してよい。
【００１６】
分析モジュール１０６は、クエリログ１０２で表されたクエリに基づいて関係を識別してよく、これらの関係をｎ次元立方体１０８に組み込ませてよい。ｎ次元立方体１０８は、分析に使用された多次元データ集計を表すのに使用された様々な構造を含んでよい。ｎ次元立方体１０８は、立方体、多次元立方体、超立方体、ピボットテーブル等とも呼ばれることのある様々な構造を含んでよい。ｎ次元立方体は、多次元インデックス構造として表されてよく、スパース割当て構造をさらに利用してよい。
【００１７】
前述のように、分析モジュール１０６は、クエリログ１０２に基づいて階層関係を識別してよい。この関係は、階層１１０としてｎ次元立方体１０８に記憶されてよい。階層１１０は、次元に関連付けられた様々なファクトの集計値を含んでよい。例えば、販売個数の総計（ｕｎｉｔ  ｓａｌｅｓ  ａｍｏｕｎｔ）は、集計プロセスを通して階層に組み込み得るファクトを表してよい。例えば、階層の最下位のレベルは、日々の販売個数を含んでよく、次のレベルは、週の販売個数を含む等である。実施形態は、分析モジュール１０６を含んでよく、分析モジュール１０６は、販売個数を含むとして、且つ、時間に基づいた階層レベルに従って適切に組織されるとして、次元を識別する。対応する階層１１０は、ｎ次元立方体１０８に記憶されてよく、ｎ次元立方体１０８および／または階層１１０の手動構成を必要とすることなく、分析に使用されてよい。
【００１８】
分析モジュール１０６は、トランザクションデータベース１００からの入力に加えて、または、それらの代替の入力に基づいたデータの階層関係を識別してよい。これらは、データストリーム１１２とキュレートされたデータセット１１４を含んでよい。
【００１９】
データストリーム１１２は、モニタするデータフローを含んでよく、そこから、集計１１８およびグループ化１１６に関する情報を推論してよい。集計１１８は、合計、平均等の様々な集計操作を示すデータストリームの要素を含んでよい。グループ化１１６は、類似のデータのクラスタを含んでよい。ここで、類似性は、共通のデータ型、共通の意味タイプ等の要因によって測定されてよい。ある場合には、データストリーム１１２は、クエリ、または、データの消費者と生産者の間の他の形の相互作用を示すデータを含んでよいという点で、クエリログ１０２とも類似してよい。言い換えると、実施形態は、ある場合には、アプリケーション間の要求と応答パターンを監視してよく、そのデータを利用して推論を形成してよい。これは、データソースに送信されるデータ要求と、その要求に応答してデータソースから返信されるデータの監視を含んでよい。
【００２０】
実施形態は、変換関数を繰り返し適用するクエリログ１０２および／またはデータストリームのパターンの検出も含み得る。例えば、同じデータセットに頻繁に適用される関数は、２つの列が関連していることを示してよい。変換関数は、可能な集計も示唆してよい。例えば、クエリが、「ｓｕｍ（合計）」ではなく、「ｃｏｕｎｔ（計数）」を頻繁に計算する場合、これは、同じデータを伴う階層の集計は、合計ではなく計数を求めることによって行うべきであることを示してよい。
【００２１】
キュレートされたデータセット１１４は、階層の洞察を取得するのに有用なデータコレクション等のデータコレクションを含む。例えば、キュレートされたデータセット１１４は、企業と、各企業が採用してきた事業年度カレンダーとのマッピングを含んでよい。別の例は、郵便番号と州のマッピングである。
【００２２】
図２は、実施形態が結合パスおよび階層の検出に利用し得る要素を含むクエリの例を示すブロック図である。詳細には、図２は、ＳＱＬのＳＥＬＥＣＴ文等、検索する記録の識別に使用されるクエリを含む例を示す。様々な場合および実施形態において、他のクエリ形式を利用してよい。これらは、例えば、ＩＮＳＥＲＴ（挿入）文、ＵＰＤＡＴＥ（更新）文、および、ＤＥＬＥＴＥ（削除）文を含んでよい。
【００２３】
図２に示すように、クエリ２００は、２０２、２０６等の様々な句を含んでよい。これらは、ＳＥＬＥＣＴ（選択）句２０２およびＧＲＯＵＰＩＮＧ（グループ化）句２０６を含んでよい。様々な場合において、追加の句（図示せず）が含まれてよく、図に示した句が省略されてもよい。
【００２４】
ＳＥＬＥＣＴ句２０２は、どのフィールドをクエリで返信するべきかを示す情報を含んでよい。クエリのこの部分は、射影と呼ばれこともある。ある場合には、ＳＥＬＥＣＴ句２０２は、テーブルの列の値と対応するフィールド等、トランザクションデータのフィールドと直接、対応するフィールドリストを含んでよい。他の場合には、ＳＥＬＥＣＴ句２０２は、計算されたフィールドまたは集計値等、様々な派生値を含んでよい。ＳＥＬＥＣＴ句２０２は、派生値を指定する従属句を含んでよい。例えば、ＳＥＬＥＣＴ句２０２は、ＡＧＧＲＥＧＡＴＥ（集計）句２０４を含んでよい。ＡＧＧＲＥＧＡＴＥ句２０４は、合計または平均等、複数の行のフィールドを１つの値にまとめる計算を指定してよい。
【００２５】
ＧＲＯＵＰＩＮＧ句２０６を指定して、クエリによって指定された行をどのように組み合わせるべきかを示してよい。ＧＲＯＵＰＩＮＧ句２０６は、ＡＧＧＲＥＧＡＴＥ句２０４に関連させてよい。例えば、ＧＲＯＵＰＩＮＧ句は、クエリ２００の結果を月によってグループ化すべきであると示してよく、その場合、ＡＧＧＲＥＧＡＴＥ句２０４の結果は、月間の数字となる。
【００２６】
実施形態は、クエリ２００に含まれる情報を利用して、可能なデータ関係を推論または識別してよい。これらの関係は、本明細書に記載のように、識別および評価されてよい。
【００２７】
ＳＥＬＥＣＴ句２０２の要素は、次元に含まれる可能な結合関係と候補とを示してよい。ある場合には、ＳＥＬＥＣＴ句２０２に２つのフィールドが含まれることは、その２つのフィールドが関連していることを示し得る。ＳＥＬＥＣＴ句２０２に２つのフィールドを明示的に列挙することは、同じ行に属しているがＳＥＬＥＣＴ句２０２に明示的に含まれていないフィールドよりも、その２つのフィールドが強く関連していることを示してよい。
【００２８】
実施形態は、次元に含まれる可能な結合関係と候補とを識別するために、ＡＧＧＲＥＧＡＴＥ句２０４に含まれるフィールドを識別してよい。例えば、ＡＧＧＲＥＧＡＴＥ句２０４に含まれる販売個数の値は、販売の次元を示してよい。ＳＥＬＥＣＴ句２０２に指定される他のフィールドは、次元に関連付けられてよい。例えば、製品名は、ＡＧＧＲＥＧＡＴＥ句２０４と共にＳＥＬＥＣＴ句２０２に指定されてよい。
【００２９】
実施形態は、ＧＲＯＵＰＩＮＧ句２０６の指定に使用されるフィールドと基準を識別してよい。ＧＲＯＵＰＩＮＧ句２０６の内容は、階層の１つまたは複数のレベルを示してよい。集計をグループ化する基準は、階層の第１のレベルに対応してよく、第１のレベルの上下に追加のレベルを示してよい。例えば、月によるグループ化を示すＧＲＯＵＰＩＮＧ句は、四半期、年、または、日によるグループ化を間接的に示唆してよい。実施形態は、ＧＲＯＵＰＩＮＧ句に指定された基準から可能な階層レベルセットにマッピングしてよい。月によるグループ化の場合、グループ化は、複数のカレンダベースの階層にマッピングしてよい。別の例は、州、国、地域等を含む様々な階層に市をマッピングすることによるグループ化等、地理的データを伴う。別の例は、組織構造を含む階層を示唆する事業部門によるグループ化を含んでよい。ある場合には、（携帯電話の装置識別子等）システムまたはデータセットの識別子は、識別可能な階層を有する別のデータセットと推論可能な結合関係を有してよい。データセットへの推論された結合関係を使用して、識別された階層にマッピングしてよい。
【００３０】
図３は、一致するフィールドを繰り返し指定することに基づいて、可能な結合関係と次元とを識別する実施形態によって使用可能な複数のクエリの例を示すブロック図である。
【００３１】
複数のクエリ３００〜３０４を記述する情報は、トランザクションログ、診断ログ等からなど、様々な手段を通して取得されてよい。図３においては、クエリ３００〜３０４を記述する情報は、クエリログ３１８に含まれているとして記載されている。複数のクエリ３００〜３０４を記述する情報を分析して、一致するフィールドを検出してよい。一致するフィールドは、同じクエリで指定されたフィールドを含む。これは、クエリの同じＳＥＬＥＣＴ句で指定されたフィールドを含み、また、異なる句で生じるフィールドを含んでよい。例えば、一致する２つのフィールドは、ＳＥＬＥＣＴ句の第１フィールドおよびＷＨＥＲＥ句の第２フィールド、または、ＳＥＬＥＣＴ句の第１フィールドおよびＧＲＯＵＰ‐ＢＹ句の第２フィールドを含んでよい。
【００３２】
図３において、クエリ３００は、フィールド「Ａ」３０６、フィールド「Ｂ」３０８、および、フィールド「Ｘ」３１０への参照を含んでよい。これらのフィールドのうちのいずれか２つが一致すると言える。第２のクエリ３０２は、フィールド「Ａ」３０６と、フィールド「Ｙ」３１２およびフィールド「Ｚ」３１４とを含んでよい。第３のクエリ３０４は、フィールド「Ａ」３０６およびフィールド「Ｂ」３０８の両方と、フィールド「Ｍ」３１６とを含んでよい。クエリ３００およびクエリ３０４において、フィールド「Ａ」３０６は、フィールド「Ｂ」３０８と一致している。従って、これらの２つのフィールドは、クエリ３００〜３０６で示された他のフィールドより高頻度で一致する。クエリ３００〜３０６を参照して、その２つのフィールドが他のフィールドより高頻度で一致する程度に基づいて、フィールド「Ａ」３０６とフィールド「Ｂ」３０８は、密接に関連している可能性が高いと考えられてよく、よって、結合関係の候補または次元との関連付けの候補の可能性が高いと考えられてよい。
【００３３】
図４は、トランザクションデータベースシステムによって処理された複数のクエリにおける次元とレベルの識別に基づいて、階層を形成するプロセスの実施形態を示すフローチャートである。要素のシーケンスとして示されているが、図に示す順序は、本開示の範囲を制限すると解釈すべきではなく、図に示した要素の少なくとも一部は、変更、省略、順序変更、追加の要素を補充、または、並行して行われてもよいことを、当業者は理解されよう。図示のプロセスの実施形態は、本明細書に記載のコンピュータシステム等、コンピュータシステムによって実行されるコンピュータ実行可能命令の様々な組み合わせを用いて実施されてよい。
【００３４】
要素４００は、トランザクションデータストアによって処理された複数のクエリを示す情報を受信する実施形態を示す。複数のクエリは、例えば、データベース管理システムによって行われた操作のログから取得されたクエリに対応してよい。これらは、時間順に配置されてよく、または、要約された形で提供されてよい。実施形態は、分析すべきクエリをフィルタリングして、トランザクションデータストアまたは他のシステムによって処理されたクエリのサブセットにする機構を提供してよい。
【００３５】
要素４０２は、クエリを分析して、ＳＥＬＥＣＴ句またはクエリの他の部分と頻繁に一致するフィールドを識別する実施形態を示す。実施形態は、クエリを統計的に分析して、どのフィールドが複数のクエリにおいて一緒に生じるかと、それらのフィールドが一致する相対頻度を決定してよい。実施形態は、例えば、一致するフィールドのタプルを形成してよく、各タプルをそのタプルが繰り返した回数に関連付けてよい。最大の計数を有するタプル、または、ある閾値レベルを超える計数を有するタプルが、次元の候補属性として、または、トランザクションデータストアに明示的に定義されていない結合パスを通して互いに関連しているとして、選択されてよい。
【００３６】
実施形態は、クエリ内の一致するフィールドの位置を利用して、次元の可能なパスおよび属性を識別してよい。例えば、ＳＥＬＥＣＴ句内の２つのフィールドの一致には、第１の重みが与えられてよく、ＳＥＬＥＣＴ句のフィールドと、サブクエリで指定されたフィールドの一致には、第２の重みが与えられてよい。
【００３７】
要素４０４は、候補階層で使用される次元と、その次元に関連付けられた属性とを識別する実施形態を示す。次元および関連する属性は、ログから取得されたクエリ内でフィールド同士が一致する程度に基づいてよい。上述のように、実施形態は、候補次元および関連する属性の根拠を、一致するフィールドの相対的程度または計数においてよく、最も高い頻度で生じるものが候補の可能性が最も高い。
【００３８】
キュレートされたデータセットを採用して、次元と、その次元に関連付けられた属性とを識別してよい。キュレートされたデータセットは、入力データと、様々な可能な次元またはその次元に関連付けられた属性の間の可能なマッピングを含んでよい。マッピングは、データ型、データ範囲、および、データ値等、データに関する情報に基づいてよい。例えば、一定の数は、一定の値範囲に入ることに基づいて、郵便番号と推論されてよく、「ＷＡ」等、２文字のアルファベットは、州コードであると推論されてよい。
【００３９】
要素４０６は、識別された次元に関連付けられた属性のデータ型を分析する実施形態を示す。実施形態は、可能な結合パスまたは候補次元と属性を、データ型に基づいて、さらに絞り込んでよい。例えば、整数データ型フィールドは、浮動小数点データ型フィールドより結合パスの根拠になる可能性が高い。さらに、実施形態は、一定のデータ型を可能性の高い階層と関連付けてよい。例えば、データフィールドは、一般に、階層レベルを示唆し、浮動小数点フィールドは、一般的に、集計されてよい次元値として使用されてよい。
【００４０】
実施形態は、データ型に関連付けられた１つまたは複数の階層から、ある階層を選択することに少なくとも部分的に基づいて、階層レベルを識別してよい。実施形態は、様々なデータ型からデータ型と一般に関連付けられた階層へのマッピングを含んでよい。例えば、日付を表すデータ型は、暦年に基づいた階層、および、事業年度に基づいた階層等、複数の可能な階層にマッピングされてよい。
【００４１】
要素４０８は、ＡＧＧＲＥＧＡＴＥ句に関連付けられたフィールドを分析する実施形態を示す。ＡＧＧＲＥＧＡＴＥ句で参照されるフィールドは、階層内で集計できる次元の候補であってよい。同様に、要素４１０が示すように、実施形態は、ＧＲＯＵＰＩＮＧ句に関連付けられたフィールドを分析して、階層のレベルを識別してよい。
【００４２】
要素４１２は、データ型の分析、ＡＧＧＲＥＧＡＴＥ句、および、ＧＲＯＵＰＩＮＧ句に基づいて、階層のレベルを識別する実施形態を示す。これは、フィールドがＧＲＯＵＰＩＮＧ句またはＡＧＧＲＥＧＡＴＥ句に関連付けられる頻度を決定することに少なくとも部分的に基づいて、階層レベルを識別することを含んでよい。
【００４３】
トランザクションデータストリームによって処理されたクエリに関して図４に記載されたプロセスは、データストリーム、または、アプリケーション間のデータ交換の観察パターン等、他のデータソースにも適用されてよいことに注意されたい。要素４００〜４１２で示す操作は、図４に記載するプロセスと本質的に類似のプロセスを使用して、これらのソースに適用されてよい。
【００４４】
図５は、トランザクションアクセスパターンに基づいて、結合パスを識別するプロセスの実施形態を示すフローチャートである。要素のシーケンスとして図示されているが、図示の順序は、本開示の範囲を制限すると解釈すべきではなく、図示の要素の少なくとも一部は、変更、省略、順序変更、追加の要素を補充、または、並行して行われてよいことを、当業者は理解されよう。図示のプロセスの実施形態は、本明細書に記載のコンピュータシステム等のコンピュータシステムによって実行されるコンピュータ実行可能命令の様々な組み合わせを用いて実施されてよい。
【００４５】
要素５００は、クエリおよびトランザクションデータストアを伴う他のアクセスパターンを記述する情報のコーパスのＳＥＬＥＣＴ句で表されたフィールドを識別する実施形態を示す。情報のコーパスは、トランザクションデータストアから取得したログファイルに関してよく、トランザクションログおよび／または診断ログを含んでよい。
【００４６】
要素５０２は、クエリおよびトランザクションデータストアを伴う他のアクセスパターンを記述する情報のコーパスにおいて変換クエリを識別する実施形態を示す。これは、情報のコーパスに表されたクエリが第１フィールドからファクトに対応する値への変換を含むことを決定することに少なくとも部分的に基づいて、次元の１つまたは複数の属性を識別することを含んでよい。１つの例は、地理的位置をその地理的位置の近くにある店舗の識別子に変換することを含むが、これに限らない。このような変換の対象となるフィールドは、次元の属性として潜在的に有用であり得るファクトを表してよい。
【００４７】
要素５０４は、情報のコーパス内でフィールド同士が一致する頻度を識別する実施形態を示す。これは、複数のクエリにおいて１つまたは複数のフィールドの一致参照を計数することを含んでよい。計数を閾値と比較して、次元の属性として使用するのに適していると思われるフィールドを識別してよい。
【００４８】
要素５０６は、トランザクション文脈内の一致するフィールド同士を識別する実施形態を示す。これは、トランザクション文脈内で生じるフィールドの一致参照に少なくとも部分的に基づいて、次元およびその次元に関連付けられた１つまたは複数の属性を識別することを含んでよい。１つのトランザクションの文脈で更新されたフィールド、または、言い換えると、グループとして行われたまたはロールバックされたフィールドは、潜在的に関係していてよく、フィールド間の可能な結合パスを示唆している。
【００４９】
要素５０７は、潜在的に関連する列同士をユーザが指定することを可能にする実施形態を示す。ある場合には、ユーザによる指定は、可能な結合パスの識別において、他の要因に優先してよい。他の場合には、潜在的に関連する列のユーザ指定は、情報のコーパスの他の識別された特徴と組み合わせて使用すべき要因と見なされてよい。
【００５０】
要素５０８は、情報のコーパスの識別された特徴に基づいて、結合パスを識別する実施形態を示す。結合パスは、データのスキーマに明示的に表されていないデータセットの関係に関するとして記載されてよい。結合パスを利用して、次元、次元の属性、および、階層レベルを識別してよい。
【００５１】
ある実施形態においては、トランザクションデータの分析関係を識別するシステムは、トランザクションデータストアに通信可能に接続された１つまたは複数のコンピュータノードを含んでよい。システムは、命令を含むメモリをさらに備えてよく、命令が実行されると、システムは、少なくとも、各クエリが１つまたは複数の句を含むトランザクションデータストアによって処理された複数のクエリであって、各クエリが１つまたは複数の句を含む複数のクエリが示す情報を受信し、複数のクエリの句の１つまたは複数のフィールドであって、１つまたは複数の属性に対応する１つまたは複数のフィールドを一致して参照することに少なくとも部分的に基づいて、次元およびその次元に関連付けられた１つまたは複数の属性を識別し、且つ、階層のレベルを識別する。レベルは、１つまたは複数の属性の階層組織を示す情報を求めて複数のクエリを少なくとも分析することによって次元に関連付けられ、分析される情報は、１つまたは複数のフィールドのうちの、あるフィールドのデータ型と、複数のクエリの１つまたは複数のフィールドとＧＲＯＵＰＩＮＧ句との第１の関連付けと、複数のクエリの１つまたは複数のフィールドとＡＧＧＲＥＧＡＴＥ句との第２の関連付けと、を含む。
【００５２】
ある実施形態においては、非一時的コンピュータ可読記憶媒体またはコンピュータプログラム製品は、命令を記憶していてよく、命令が１つまたは複数のコンピュータ装置によって実行されると、１つまたは複数のコンピュータ装置は、複数のクエリの１つまたは複数のフィールドであって、１つまたは複数の属性に対応する１つまたは複数のフィールドを一致して参照することに少なくとも部分的に基づいて、次元およびその次元に関連付けられた１つまたは複数の属性を識別し、且つ、階層のレベルを識別する。レベルは、１つまたは複数の属性の階層組織を示す情報を求めて複数のクエリを少なくとも分析することによって次元と関連付けられ、分析される情報は、１つまたは複数のフィールドのうちの、あるフィールドのデータ型と、複数のクエリの１つまたは複数のフィールドとＧＲＯＵＰＩＮＧ句との第１の関連付けと、複数のクエリの１つまたは複数のフィールドとＡＧＧＲＥＧＡＴＥ句との第２の関連付けと、を含む。
【００５３】
ある実施形態においては、トランザクションデータの分析関係を識別するコンピュータ実施方法は、複数のクエリの１つまたは複数のフィールドであって、１つまたは複数の属性に対応する１つまたは複数のフィールドを一致して参照することに少なくとも部分的に基づいて、次元およびその次元に関連付けられた１つまたは複数の属性を識別することと、１つまたは複数のフィールドの階層組織を示す情報を求めて、複数のクエリを少なくとも分析することによって、次元に関連付けられた階層レベルを識別することとを含んでよく、分析される情報は、データ型と、１つまたは複数のフィールドのうちの、あるフィールドと、複数のクエリの１つまたは複数のフィールドとＧＲＯＵＰＩＮＧ句との第１の関連付けと、複数のクエリの１つまたは複数のフィールドとＡＧＧＲＥＧＡＴＥ句との第２の関連付けと、を含む。
【００５４】
様々な実施形態は、データ型に関連付けられた１つまたは複数の階層から、ある階層を選択することに少なくとも部分的に基づいて、階層レベルを識別することを含む態様を含んでよい。
【００５５】
様々な実施形態において、データ型は、時間と、複数のレベルを含む階層とに対応してよく、複数のレベルの各レベルは時間に対応する。
【００５６】
様々な実施形態は、１つまたは複数のフィールドがＧＲＯＵＰＩＮＧ句またはＡＧＧＲＥＧＡＴＥ句の少なくとも１つに関連付けられる頻度を決定することに少なくとも部分的に基づいて、階層レベルを識別することを伴う態様を含んでよい。
【００５７】
様々な実施形態は、複数のクエリが第１フィールドからファクトに対応する値への変換を含むと決定することに少なくとも部分的に基づいて、１つまたは複数の属性を識別することを伴う態様を含んでよい。
【００５８】
様々な実施形態において、一致参照は、１つまたは複数のフィールドに対応する１つまたは複数のフィールドを、ＳＥＬＥＣＴ句に含む。
【００５９】
様々な実施形態は、複数のクエリのトランザクション文脈内で生じる１つまたは複数のフィールドの一致参照に少なくとも部分的に基づいて、次元およびその次元に関連付けられた１つまたは複数の属性を識別することを伴う態様を含んでよい。
【００６０】
様々な実施形態は、階層にマッピングされてよいデータセットのフィールド値の数を決定することを伴う態様を含んでよく、階層は、次元と階層レベルを含み、階層のランク付けは、階層にマッピングされてよいフィールド値の数に少なくとも部分的に基づく。
【００６１】
本明細書に記載の様々な態様は、様々な方法で組み合わされて、システム、方法、コンピュータ可読媒体、または、コンピュータプログラム製品の代替実施形態を形成してよい。本明細書に記載の様々な態様は、明示的に示されている以外は、互いに排他的ではない。
【００６２】
本開示の実施形態は、多くの種類のデータベース管理システム（「ＤＢＭＳ」）と併せて採用されてよい。ＤＢＭＳは、データの系統的なコレクションを維持するソフトウェアおよびハードウェアシステムであり、そのシステム上で、記憶操作および検索操作が行われてよい。ＤＢＭＳにおいては、データは、典型的には、キー値と追加のデータとの間の関連付けによって体系化される。関連付けの性質は、データのコレクションに存在する実世界の関係に基づいてもよく、または、任意であってよい。データの定義、クエリ、更新、および、管理を含む様々な操作が、ＤＢＭＳによって行われてよい。構造化クエリ言語（「ＳＱＬ」）等のクエリ言語を用いて、データベースとの相互作用を提供するＤＢＭＳもあれば、ＰＵＴ、ＧＥＴ等の操作を含むＡＰＩを使用するＤＢＭＳもある。データベースとの相互作用は、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）および拡張マークアップ言語（「ＸＭＬ」）等、様々なプロトコルまたは標準にも基づいてよい。ＤＢＭＳは、ソリッドステートドライブ等の１つまたは複数の記憶装置にデータを記憶するように働く記憶エンジン等、様々なアーキテクチャコンポーネントを含んでよい。
【００６３】
図６は、本発明の態様を実践してよい分散コンピュータ環境の例を示す図である。様々なユーザ６００ａは、任意の種類のコンピュータ装置６０２ａで動作する様々なクライアントアプリケーションと相互作用して、通信ネットワーク６０４を介してデータセンタ６２０内の様々なコンピュータノード６１０ａ、６１０ｂおよび６１０ｃ上で実行するプロセスと通信してよい。あるいは、クライアントアプリケーション６０２ｂは、ユーザの介入なしに通信してよい。通信ネットワーク６０４は、インターネット、有線および無線のローカルエリアネットワーク、光ファイバネットワーク、衛星通信等を含む、通信技術の任意の組み合わせを含んでよい。任意の数のネットワーキングプロトコルを採用してよい。
【００６４】
データセンタ６２０内で動作するコンピュータノード６１０ａ、６１０ｂおよび６１０ｃで実行するプロセスとの通信は、ゲートウェイ６０６およびルータ６０８を介して提供されてよい。多くの他のネットワーク構成も採用されてよい。図６には明示していないが、様々な認証機構、ウェブサービス層、ビジネスオブジェクト、または、他の中間層を備えて、コンピュータノード６１０ａ、６１０ｂおよび６１０ｃで実行しているプロセスとの通信を仲介してよい。これらの中間層の一部は、それ自体、コンピュータノードの１つまたは複数上で実行するプロセスを含んでよい。コンピュータノード６１０ａ、６１０ｂおよび６１０ｃと、そこで実行するプロセスは、ルータ６０８を介して互いに通信してもよい。あるいは、別個の通信パスを採用してよい。一部の実施形態においては、データセンタ６２０は、追加のデータセンタと通信するように構成されてよく、そうすると、コンピュータノードと、コンピュータノード上で実行しているプロセスは、他のデータセンタ内で動作しているコンピュータノードとプロセスと通信し得る。
【００６５】
コンピュータノード６１０ａは、１つまたは複数のプロセッサ６１６、１つまたは複数のメモリ６１８、および、１つまたは複数の記憶装置６１４を含む物理的ハードウェア上に存在するとして図示されている。コンピュータノード６１０ａ上のプロセスは、オペレーティングシステムと併せて実行してもよく、または、代わりに、プロセッサ６１６、メモリ６１８、または、記憶装置６１４等、物理リソースと直接、相互作用するベアメタルプロセスを実行してよい。
【００６６】
コンピュータノード６１０ｂおよび６１０ｃは、仮想マシンホスト６１２上で動作するとして示されており、仮想マシンホスト６１２は、物理プロセッサ、メモリ、記憶装置等、様々な物理リソースへの共有アクセスを提供してよい。任意の数の仮想化機構を採用してコンピュータノードをホストしてよい。
【００６７】
図６に示す様々なコンピュータノードは、ウェブサービス、データベース管理システム、ビジネスオブジェクト、監視および診断設備等をホストするように構成されてよい。コンピュータノードは、パーソナルコンピュータ、サーバ、クラスタ化されたコンピュータ装置等、様々なタイプのコンピュータリソースを指してよい。コンピュータノードは、例えば、携帯電話、スマートフォン、タブレット、組み込み装置等、様々なコンピュータ装置を指してよい。ハードウェアの形態で実施されるとき、コンピュータノードは、一般的に、コンピュータ可読命令を記憶するように構成された１つまたは複数のメモリと、命令を読み出し、実行するように構成された１つまたは複数のプロセッサとに関連付けられる。ハードウェアベースのコンピュータノードは、１つまたは複数の記憶装置、ネットワークインタフェース、通信バス、ユーザインタフェース装置等も含んでよい。コンピュータノードは、ハイパーバイザ、仮想ベアメタル環境等を用いて、または、用いずに実施された仮想マシン等、仮想コンピュータリソースも含んでよい。仮想化ベースのコンピュータノードは、ハードウェアリソースへの仮想アクセスと、非仮想アクセスとを有してよい。コンピュータノードは、オペレーティングシステムと、１つまたは複数のアプリケーションプログラムとを実行するように構成されてよい。一部の実施形態においては、コンピュータノードは、ベアメタルアプリケーションプログラムも含んでよい。
【００６８】
少なくとも一部の実施形態においては、本明細書に記載の技術の１つまたは複数の一部または全部を実施するサーバは、汎用コンピュータシステムを含んでよく、汎用コンピュータシステムは、１つまたは複数のコンピュータアクセス可能媒体を含む、または、それらにアクセスするように構成される。図７は、１つまたは複数のコンピュータアクセス可能媒体を含む、または、それらにアクセスするように構成された汎用コンピュータシステムを示す。図示の実施形態においては、コンピュータ装置７００は、入力／出力（「Ｉ／Ｏ」）インタフェース７３０を介してシステムメモリ７２０に接続された１つまたは複数のプロセッサ７１０ａ、７１０ｂ、および／または、７１０ｎ（本明細書では、単数のプロセッサ７１０とされる場合もあり、複数のプロセッサ７１０とされる場合もある）を含む。コンピュータ装置７００は、Ｉ／Ｏインタフェース７３０に接続されたネットワークインタフェース７４０をさらに含む。
【００６９】
様々な実施形態において、コンピュータ装置７００は、１つのプロセッサ７１０を含むユニプロセッサシステム、または、幾つか（例えば、２、４、８、または、適切な数）のプロセッサ７１０を含むマルチプロセッサシステムであってよい。プロセッサ７１０は、命令を実行できる任意の適切なプロセッサであってよい。例えば、様々な実施形態において、プロセッサ６１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ若しくはＭＩＰＳ  ＩＳＡ、または、任意の他の適切なＩＳＡ等、様々な命令セットアーキテクチャ（「ＩＳＡ」）のいずれかを実施する汎用または組み込みプロセッサであってよい。マルチプロセッサシステムにおいて、各プロセッサ６１０は、一般的に同じＩＳＡを実施してよいが、必ずしもそうとは限らない。
【００７０】
一部の実施形態においては、グラフィックスプロセッシングユニット（「ＧＰＵ」）７１２は、グラフィックスレンダリング機能、および／または、物理処理機能の提供に関与してよい。ＧＰＵは、例えば、グラフィック計算専用の高度に並列化されたプロセッサアーキテクチャを含んでよい。一部の実施形態においては、プロセッサ７１０およびＧＰＵ７１２は、１つまたは複数の同じ種類の装置として実施されてよい。
【００７１】
システムメモリ７２０は、プロセッサ（複数可）６１０によってアクセス可能な命令とデータとを記憶するように構成されてよい。様々な実施形態においては、システムメモリ７２０は、スタティックランダムアクセスメモリ（「ＳＲＡＭ」）、同期型ダイナミックＲＡＭ（「ＳＤＲＡＭ」）、不揮発／Ｆｌａｓｈ（登録商標）型メモリ、または、任意の他の種類のメモリ等、任意の適切なメモリ技術を用いて実施されてよい。図示の実施形態においては、上述の方法、技術、およびデータ等、１つまたは複数の所望の機能を実施するプログラム命令およびデータは、コード７２５およびデータ７２６としてシステムメモリ７２０内に記憶されるとして示されている。
【００７２】
一実施形態においては、Ｉ／Ｏインタフェース７３０は、ネットワークインタフェース７４０または他の周辺インタフェースを含む、プロセッサ７１０、システムメモリ７２０、装置内の任意の周辺装置間のＩ／Ｏトラフィックを調整するように構成されてよい。一部の実施形態においては、Ｉ／Ｏインタフェース７３０は、任意の必要なプロトコル、タイミング、または、他のデータ変換を行って、データ信号を１つのコンポーネント（例えば、システムメモリ７２０）から、別のコンポーネント（例えば、プロセッサ６１０）で使用するのに適したフォーマットに変換してよい。一部の実施形態においては、Ｉ／Ｏインタフェース７３０は、例えば、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  ＩｎｔｅｒＣｏｎｎｅｃｔ）バス規格の変形またはユニバーサルシリアルバス（「ＵＳＢ」）規格等、様々な種類の周辺バスを介して取り付けられた装置への支援を含んでよい。一部の実施形態においては、Ｉ／Ｏインタフェース７３０の機能は、例えば、ノースブリッジおよびサウスブリッジ等、２つ以上の別個のコンポーネントに分割されてよい。また、一部の実施形態においては、システムメモリ６２０へのインタフェース等、Ｉ／Ｏインタフェース７３０の機能の一部または全部は、プロセッサ７１０に直接、組み込まれてよい。
【００７３】
ネットワークインタフェース７４０は、コンピュータ装置７００と、例えば、他のコンピュータシステムまたは装置等、ネットワーク７５０（複数可）に取り付けられた他の装置７６０（複数可）との間でデータ交換を可能にするように構成されてよい。様々な実施形態において、ネットワークインタフェース７４０は、例えば、イーサネットネットワークの種類等、任意の適切な有線または無線の一般データネットワークを介して通信を支援してよい。さらに、ネットワークインタフェース７４０は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワーク等、電気通信／電話網を介して、ファイバチャネルＳＡＮ（ストレージエリアネットワーク）等、ストレージエリアネットワークを介して、または、任意の他の適切な種類のネットワークおよび／若しくはプロトコルを介して、通信を支援してよい。
【００７４】
一部の実施形態においては、システムメモリ７２０は、対応する方法および装置の実施形態を実施するための上記のプログラム命令およびデータを記憶するように構成されたコンピュータアクセス可能媒体の一実施形態であってよい。しかしながら、他の実施形態においては、プログラム命令および／またはデータは、受信、送信、または、異なる種類のコンピュータアクセス可能媒体に記憶されてよい。一般的に言うと、コンピュータアクセス可能媒体は、Ｉ／Ｏインタフェース７３０を介してコンピュータ装置７００に接続される、例えば、ディスクまたはＤＶＤ／ＣＤ等の磁気媒体または光媒体等、非一時的記憶媒体またはメモリ媒体を含んでよい。非一時的コンピュータアクセス可能記憶媒体は、システムメモリ７２０または他の種類のメモリとしてコンピュータ装置７００の一部の実施形態に含まれ得る、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ、ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等の任意の揮発性または不揮発性媒体も含んでよい。さらに、コンピュータアクセス可能媒体は、電気信号、電磁気信号、若しくは、デジタル信号等、ネットワークインタフェース７４０を介して実施されてよい、ネットワークおよび／または無線リンク等の通信媒体を介して伝えられる伝送媒体または信号を含んでよい。図７に示すコンピュータ装置等、複数のコンピュータ装置の一部または全部を用いて、様々な実施形態において、上記機能を実施してよい。例えば、様々な異なる装置およびサーバ上で実行するソフトウェアコンポーネントが協同して機能を提供してよい。一部の実施形態においては、上記機能の一部は、汎用コンピュータシステムを用いて実施されることに加えて、または、その代わりに、記憶装置、ネットワーク装置、または、特殊用途コンピュータシステムを用いて実施されてよい。本明細書で使用される「コンピュータ装置」という語は、少なくともこれらすべての種類の装置を指すが、これらの種類の装置に限定されない。
【００７５】
コンピュータノードとも呼ばれてよい計算ノードは、タブレットコンピュータ、パーソナルコンピュータ、スマートフォン、ゲームコンソール、コモディティハードウェアコンピュータ、仮想マシン、ウェブサービス、コンピューティングクラスタ、および、コンピュータ機器等、広範なコンピュータ環境で実施されてよい。これらのコンピュータ装置または環境のいずれかは、便宜上、計算ノードまたはコンピュータノードとして記載されてよい。
【００７６】
分散されたクライアントのセットにインターネットおよび／または他のネットワークを介してアクセス可能な１つまたは複数のウェブサービス（様々な種類のクラウドベースのコンピューティングまたは記憶装置等）を提供する会社または公的機関等の実体によって設定されるネットワークは、プロバイダネットワークと名付けられてよい。このようなプロバイダネットワークは、プロバイダネットワークによって提供されるインフラストラクチャおよびウェブサービスの実施および分散に必要な、物理的および／または仮想のコンピュータサーバのコレクション、記憶装置、ネットワーク機器等、様々なリソースプールをホストする多くのデータセンタを含んでよい。リソースは、一部の実施形態においては、インスタンス、関連するサービスのセット等として、記憶に関する記憶容量、処理に関する処理能力等のウェブサービスに関連する様々な単位でクライアントに提供されてよい。仮想コンピューティングインスタンスは、例えば、（ＣＰＵの種類と数、メインメモリのサイズ等を示すことによって指定し得る）特定の計算能力を有する１つまたは複数のサーバと、特定のソフトウェアスタック（例えば、ハイパーバイザに加えて実行してよいオペレーティングシステムの特定のバージョン）を含んでよい。
【００７７】
複数の異なる種類のコンピュータ装置を単独で、または、組み合わせて使用して、汎用または特殊用途のコンピュータサーバ、記憶装置、ネットワーク装置等を含むプロバイダネットワークのリソースを、種々の実施形態で実施してよい。一部の実施形態においては、クライアントまたはユーザに、例えば、ユーザに管理者ログインとパスワードを与えることによって、リソースインスタンスへの直接のアクセスを提供してよい。他の実施形態においては、プロバイダネットワークオペレータは、クライアントが、特定のクライアントアプリケーションの実行要件を指定するのを可能にしてよく、クライアントは、インスタンスまたは実行プラットフォームに直接アクセスする必要なく、アプリケーションに適した実行プラットフォーム（アプリケーションサーバインスタンス、Ｊａｖａ（商標）仮想マシン（「ＪＶＭ」）、汎用または特殊用途オペレーティングシステム、Ｒｕｂｙ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｃ、Ｃ＋＋等の様々なインタープリタ型またはコンパイラ型プログラミング言語を支援するプラットフォーム、または、高性能コンピューティングプラットフォーム）で、クライアントのためのアプリケーションの実行をスケジュール可能にしてよい。ある実施態様においては、所与の実行プラットフォームは、１つまたは複数のリソースインスタンスを利用してよく、別の実施態様においては、複数の実行プラットフォームを１つのリソースインスタンスにマッピングしてよい。
【００７８】
多くの環境において、異なるタイプの仮想コンピューティング、記憶装置、および／または、他のネットワークアクセス可能な機能を実施するプロバイダネットワークのオペレータは、顧客が、様々なリソース獲得モードで、リソースへのアクセスを予約または購入することを可能にしてよい。コンピュータリソースプロバイダは、顧客が、所望のコンピュータリソースを選択し、アプリケーションコンポーネントをコンピュータリソースに配備し、環境で実行するコンピュータを維持するための設備を提供してよい。さらに、コンピュータリソースプロバイダは、アプリケーション変更の要求または容量要件に応じて、顧客が手動または自動スケーリングによってアプリケーションに割り当てるリソースの数と種類を素早く、容易にスケールアップまたはスケールダウンするためのさらなる設備を提供してよい。コンピュータリソースプロバイダが提供するコンピュータリソースは、個別の単位で利用可能であってよく、その単位は、インスタンスと呼ばれてよい。インスタンスは、物理的なサーバハードウェアプラットフォーム、サーバで実行する仮想マシンインスタンス、または、その２つの何らかの組み合わせを表してよい。様々なインストールされたソフトウェアアプリケーション、ランタイム等を有する異なるオペレーティングシステム（ＯＳ）および／またはハイパーバイザで実行する異なるサイズのリソースを含む、インスタンスの様々な種類および構成が利用可能であってよい。インスタンスは、例えば、基盤となるコンピュータハードウェアの論理領域、フォールトトレラント領域、データセンタ、または、他の地理的位置を表す、特定のアベイラビリティゾーンでさらに利用可能であってよい。インスタンスは、アベイラビリティゾーン内で、または、アベイラビリティゾーンを超えてコピーされて、インスタンスの冗長性を向上させてよい、また、インスタンスは、特定のアベイラビリティゾーン内、または、アベイラビリティゾーン間を渡って移されてよい。一例として、アベイラビリティゾーンの特定のサーバとのクライアントの通信のレイテンシは、異なるサーバとのクライアントの通信のレイテンシより小さくてよい。このように、インスタンスは、レイテンシの高いサーバからレイテンシの低いサーバに移されて、総合的なクライアント体験を向上させてよい。
【００７９】
一部の実施形態においては、プロバイダネットワークは、複数の地理的領域に体系化されてよく、各領域は、１つまたは複数のアベイラビリティゾーンを含んでよい。アベイラビリティゾーン（アベイラビリティコンテナとも呼ばれてよい）は、所与のアベイラビリティゾーンのリソースが他のアベイラビリティゾーンにおける障害から隔離または分離され得るように構成された１つまたは複数の個別の位置またはデータセンタを含んでよい。すなわち、１つのアベイラビリティゾーンにおける障害は、他のアベイラビリティゾーンのいずれにも障害を起こさない。従って、リソースインスタンスのアベイラビリティプロファイルは、異なるアベイラビリティゾーンのリソースインスタンスのアベイラビリティプロファイルから独立している。クライアントは、複数のアプリケーションインスタンスをそれぞれのアベイラビリティゾーンで開始することによって、１つの位置での障害からのアプリケーションの保護が可能であってよい。同時に、一部の実施態様において、安価な低いレイテンシのネットワーク接続が、同じ地理的領域内にあるリソースインスタンス間で提供されてよく、（そうすると、同じアベイラビリティゾーンのリソース間のネットワーク送信は、より速くなり得る）。
【００８０】
上記の項に記載したプロセス、方法、および、アルゴリズムは、それぞれ、１つまたは複数のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュールとして実現されてよく、コードモジュールによって全体的にまたは部分的に自動化されてよい。コードモジュールは、ハードドライブ、ソリッドステートメモリ、光ディスク等の任意の種類の非一時的コンピュータ可読媒体またはコンピュータ記憶装置に記憶されてよい。プロセスおよびアルゴリズムは、特定用途向け回路として部分的または全体的に実施されてよい。開示のプロセスおよびプロセスのステップの結果は、例えば、揮発性または不揮発性記憶装置等の任意の種類の非一時的コンピュータ記憶装置に、永続的に、または、そうでなく、記憶されてよい。
【００８１】
上記の様々な特徴およびプロセスは、互いに独立して使用されてよく、様々な方法で組み合わせられてよい。すべての可能な組み合わせおよび下位の組み合わせは、本開示の範囲内にあるものとする。さらに、一定の方法またはプロセスのブロックは、一部の実施態様において省略されてよい。本明細書に記載の方法およびプロセスは、任意の特定のシーケンスに制限されず、方法およびプロセスに関連するブロックまたは状態は、適切な他のシーケンスで行うことができる。例えば、記載のブロックまたは状態は、具体的に開示した順序以外の順序で行われてよく、または、複数のブロックまたは状態は、１つのブロックまたは状態に組み合わされてよい。ブロックまたは状態の例は、直列に、並行して、または、他の方法で行われてよい。開示の実施形態例にブロックまたは状態を追加してもよく、取り除いてもよい。本明細書に記載のシステムおよびコンポーネントの例は、記載とは異なるように構成されてよい。例えば、開示の実施形態に要素を追加してよく、取り除いてよく、並べ替えてよい。
【００８２】
様々な項目が、使用中に、メモリ内または記憶装置上に記憶されるとして示されており、また、これらの項目またはその一部は、メモリ管理とデータ整合性のためにメモリと他の記憶装置間で転送されてよいことも理解されよう。あるいは、他の実施形態においては、ソフトウェアモジュールおよび／またはシステムの一部または全部は、別の装置のメモリで実行してよく、コンピュータ間通信を介して図示のコンピュータシステムと通信してよい。さらに、一部の実施形態においては、システムおよび／またはモジュールの一部または全部は、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、標準集積回路、コントローラ（例えば、適切な命令の実行と、マイクロコントローラおよび／または組み込みコントローラを含むことによって）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＣＰＬＤ（ｃｏｍｐｌｅｘ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）等を含むが、これらに限らないファームウェアおよび／またはハードウェアで少なくとも部分的に等、他の方法で実施または提供されてよい。モジュール、システム、および、データ構造の一部または全部は、ハードディスク、メモリ、ネットワーク、または、適切な装置によって、または、適切な接続を介して読み取られる携帯媒体記事（ｐｏｒｔａｂｌｅ  ｍｅｄｉａ  ａｒｔｉｃｌｅ）等、コンピュータ可読媒体上に（例えば、ソフトウェア命令、または、構造化データとして）記憶されてもよい。システム、モジュール、および、データ構造は、無線ベースおよび有線／ケーブルベースの媒体を含む、様々なコンピュータ可読伝送媒体上で生成されたデータ信号（例えば、搬送波または他のアナログ若しくはデジタル伝播信号の一部として）送信されてもよく、（例えば、単一または多重化されたアナログ信号の一部として、または、複数の個別のデジタルパケット若しくはフレームとして）様々な形態を取ってよい。このようなコンピュータプログラム製品は、他の実施形態において、他の形態も取ってよい。従って、本発明は、他のコンピュータシステム構成を用いて実践されてよい。
【００８３】
前述の事項は、以下の条項を考慮することでもよりよく理解されよう。
１．トランザクションデータの分析関係を識別するシステムであって、
データソースに通信可能に接続された１つまたは複数のコンピュータノードと、
コンピュータ可読命令を記憶した１つまたは複数のメモリと、
を備え、前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記データソースによって処理された複数のクエリを示す情報を受信し、
前記複数のクエリの少なくとも２つのフィールドの一致参照の繰り返しに少なくとも部分的に基づいて、次元に関連付けられた複数の属性であって、前記少なくとも２つのフィールドに基づいた前記複数の属性を識別し、
前記複数の属性の階層組織を示す情報であって、前記少なくとも２つのフィールドのうちの、あるフィールドのデータ型と、前記複数のクエリにおける前記フィールドとＧＲＯＵＰＩＮＧ句との第１の関連付けと、前記複数のクエリの前記フィールドとＡＧＧＲＥＧＡＴＥ句との第２の関連付けとを含む前記情報を求めて、前記複数のクエリを少なくとも分析することによって、前記次元に関連付けられた階層のレベルを識別し、
前記複数の属性と前記レベルとを含む階層を形成する、
前記システム。
【００８４】
２．コンピュータ可読命令を記憶した１つまたは複数のメモリをさらに含み、前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記フィールドの前記データ型から階層へのマッピングを含むキュレートされたデータセットに少なくとも部分的に基づいて、前記階層の前記レベルを選択する、条項１に記載のシステム。
【００８５】
３．コンピュータ可読命令を記憶した１つまたは複数のメモリをさらに含み、前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記フィールドがＧＲＯＵＰＩＮＧ句またはＡＧＧＲＥＧＡＴＥ句の少なくとも１つと関連付けられる頻度を決定することに少なくとも部分的に基づいて、前記階層の前記レベルを識別する、条項１に記載のシステム。
【００８６】
４．コンピュータ可読命令を記憶した１つまたは複数のメモリをさらに含み、前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記複数のクエリが前記フィールドから第２フィールドへの変換を含むと決定することに少なくとも部分的に基づいて、前記１つまたは複数の属性を識別する、条項１に記載のシステム。
【００８７】
５．コンピュータ可読命令を記憶した１つまたは複数のメモリをさらに含み、前記コンピュータ可読命令を前記１つまたは複数のコンピュータノードによって実行すると、前記システムは、少なくとも、
前記複数のクエリのＳＥＬＥＣＴ句が前記少なくとも２つのフィールドへの参照を含む回数を求めることによって、一致参照の前記繰り返しを決定する、
条項１に記載のシステム。
【００８８】
６．命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記命令を１つまたは複数のコンピュータ装置によって実行すると、前記１つまたは複数のコンピュータ装置は、少なくとも、
複数のクエリの少なくとも２つのフィールドの一致参照に少なくとも部分的に基づいて、次元に関連付けられた複数の属性であって、前記少なくとも２つのフィールドに基づいた前記複数の属性を識別し、
前記複数の属性の階層組織を示す情報を求めて前記複数のクエリを少なくとも分析することによって、前記次元に関連付けられた階層のレベルを識別し、前記分析される情報は、前記１つまたは複数のフィールドのうちの、あるフィールドのデータ型と、前記複数のクエリにおける前記フィールドとＧＲＯＵＰＩＮＧ句との第１の関連付けと、前記複数のクエリの前記フィールドとＡＧＧＲＥＧＡＴＥ句との第２の関連付けと、の少なくとも１つを含む、
前記非一時的コンピュータ可読記憶媒体。
【００８９】
７．命令をさらに含み、前記命令を前記１つまたは複数のコンピュータ装置が実行すると、前記１つまたは複数のコンピュータ装置は、少なくとも、
前記データ型に関連付けられた１つまたは複数の階層に少なくとも部分的に基づいて、前記階層の前記レベルを識別する、条項６に記載の非一時的コンピュータ可読記憶媒体。
【００９０】
８．前記データ型は、時間に対応し、前記階層は、複数のレベルを含み、前記複数のレベルの各レベルは、時間に対応する、条項７に記載の非一時的コンピュータ可読記憶媒体。
【００９１】
９．命令をさらに含み、前記命令を前記１つまたは複数のコンピュータ装置によって実行すると、前記１つまたは複数のコンピュータ装置は、少なくとも、
前記フィールドがＧＲＯＵＰＩＮＧ句またはＡＧＧＲＥＧＡＴＥ句の少なくとも１つに関連付けられる頻度を決定することに少なくとも部分的に基づいて、前記階層の前記レベルを識別する、条項６に記載の非一時的コンピュータ可読記憶媒体。
【００９２】
１０．命令をさらに含み、前記命令を前記１つまたは複数のコンピュータ装置によって実行させると、前記１つまたは複数のコンピュータ装置は、少なくとも、
前記複数のクエリが第１フィールドから値への変換を含むことを決定することに少なくとも部分的に基づいて、前記少なくとも２つの属性のうちの、ある属性を識別する、条項６に記載の非一時的コンピュータ可読記憶媒体。
【００９３】
１１．一致参照は、ＳＥＬＥＣＴ句内に含まれる前記少なくとも２つのフィールドを参照することを含む、条項６に記載の非一時的コンピュータ可読記憶媒体。
【００９４】
１２．命令をさらに含み、前記命令を前記１つまたは複数のコンピュータ装置によって実行すると、前記１つまたは複数のコンピュータ装置は、少なくとも、
前記複数のクエリのトランザクション文脈内で生じる前記少なくとも２つフィールドの一致参照に少なくとも部分的に基づいて、前記次元と、前記次元に関連付けられた前記複数の属性とを識別する、条項６に記載の非一時的コンピュータ可読記憶媒体。
【００９５】
１３．命令をさらに含み、前記命令を前記１つまたは複数のコンピュータ装置によって実行すると、前記１つまたは複数のコンピュータ装置は、少なくとも、
前記次元と前記階層の前記レベルと含む前記階層にマッピングされてよいデータセットのフィールド値の数を決定し、且つ、
前記階層にマッピングされてよいフィールド値の前記数に少なくとも部分的に基づいて、前記階層をランク付けする、条項６に記載の非一時的コンピュータ可読記憶媒体。
【００９６】
１４．トランザクションデータの分析関係を識別するコンピュータ実施方法であって、
少なくとも２つのフィールドの結合パスを、複数のクエリの前記少なくとも２つのフィールドの一致参照に少なくとも部分的に基づいて、識別することと、
前記少なくとも２つのフィールドの階層組織を示す情報を求めて前記複数のクエリを少なくとも分析することによって、前記結合パスに関連付けられた集計のレベルを識別することと、を含み、前記分析される情報は、前記少なくとも２つのフィールドのうちの、あるフィールドのデータ型と、前記複数のクエリの前記フィールドとＧＲＯＵＰＩＮＧ句との第１の関連付けと、前記複数のクエリの前記フィールドとＡＧＧＲＥＧＡＴＥ句との第２の関連付けと、の少なくとも１つを含む、
前記方法。
【００９７】
１５．前記データ型と１つまたは複数の集計階層との間のマッピングに少なくとも部分的に基づいて、前記集計の前記レベルを識別することを、
さらに含む、条項１４に記載のコンピュータ実施方法。
【００９８】
１６．前記複数のクエリは、データベース管理システムまたはデータストリームによって行われる操作のログの少なくとも１つに表されるクエリに対応する、条項１４に記載のコンピュータ実施方法。
【００９９】
１７．前記フィールドがＧＲＯＵＰＩＮＧ句またはＡＧＧＲＥＧＡＴＥ句の少なくとも１つに関連付けられる頻度を決定することに少なくとも部分的に基づいて、前記集計の前記レベルを識別することを、
さらに含む、条項１４に記載のコンピュータ実施方法。
【０１００】
１８．前記複数のクエリが第１フィールドから値への変換を含むと決定することに少なくとも部分的に基づいて、前記結合パスに含む前記少なくとも２つのフィールドのうちの少なくとも１つを識別することを、
さらに含む、条項１４に記載のコンピュータ実施方法。
【０１０１】
１９．前記複数のクエリの前記１つまたは複数のフィールドの一致参照を計数することを、
さらに含む、条項１４に記載のコンピュータ実施方法。
【０１０２】
２０．前記複数のクエリのトランザクション文脈内で生じる前記１つまたは複数のフィールドの一致参照に少なくとも部分的に基づいて、前記結合パスを識別することを、
さらに含む、条項１４に記載のコンピュータ実施方法。
【０１０３】
２１．前記少なくとも２つのフィールド同士が関連しているという表示をユーザから受信することに少なくとも部分的に基づいて、前記結合パスを識別することを、
さらに含む、条項１４に記載のコンピュータ実施方法。
【０１０４】
本明細書で使用される条件語、特に、「ｃａｎ」「ｃｏｕｌｄ」「ｍｉｇｈｔ」「ｍａｙ」「ｅ．ｇ．」等は、別段の指定のない限り、または、文脈内で別なように理解されない限り、一定の特徴、要素、および／または、ステップを含む実施形態もあれば、一定の特徴、要素、および／または、ステップを含まない実施形態もあるということを一般的に意図している。従って、このような条件語は、特徴、要素、および／または、ステップが１つまたは複数の実施形態に必ず必要であるということを意味してはおらず、１つまたは複数の実施形態が、著者の入力または指示の有無に関わらず、これらの特徴、要素、および／または、ステップが任意の特定の実施形態に含まれる、または、行われるか否かを決定する論理を必ず含むことも意味してはいない。「ｃｏｍｐｒｉｓｉｎｇ」「ｉｎｃｌｕｄｉｎｇ」「ｈａｖｉｎｇ」等の語は、同意語であり、オープンエンド形式で包含的に使用され、追加の要素、特徴、行為、操作等を除外しない。また、「ｏｒ」という語は、（排他的な意味でなく）包含的な意味で使用され、例えば、要素のリストをつなぐために使用される場合、「ｏｒ」という語は、リストの要素の１つ、幾つか、または、すべてを意味する。
【０１０５】
一定の実施形態例を記載したが、これらの実施形態は、例示のみを意図しており、本明細書に開示の発明の範囲を制限することを意図していない。従って、前述の記載はいずれも、任意の具体的な特徴、特性、ステップ、モジュール、または、ブロックが必要または不可欠であることを意味するものではない。実際に、本明細書に記載の新規な方法およびシステムは、様々な他の形式で実現されてよく、さらに、本明細書に記載の方法およびシステムの形態における様々な省略、置き換え、変更は、本明細書に開示の発明の精神を逸脱することなく、行われてよい。添付の請求項と、その同等物とは、本明細書に開示の発明の一部の範囲および精神内にあるこのような形態および修正を含むものとする。
【図１】
0006434154.tif 000002
【図２】
0006434154.tif 000003
【図３】
0006434154.tif 000004
【図４】
0006434154.tif 000005
【図５】
0006434154.tif 000006
【図６】
0006434154.tif 000007
【図７】
0006434154.tif 000008