(57)【特許請求の範囲】
【請求項１】
一部に同義のデータが含まれる複数のテーブル形式のデータを処理するデータ処理システムであって、
前記複数のテーブル形式のデータを自動で結合する第１の処理部と、
前記第１の処理部で結合されたデータに対して、特定のデータ中のカラムに対してユニークとなるようにデータを変換する第２の処理部と、
を有し、
前記第１の処理部は、ユーザが定義したデータ間の関係を示す第１の情報を用いて、前記複数のテーブル形式のデータを結合する処理を行い、
前記第２の処理部は、前記ユーザが定義した分析対象のカラムを示す第２の情報を用いて、前記結合されたデータに対して、前記ユーザが定義した特定のデータ中のカラムに対してユニークとなるようにデータを変換し、
さらに、前記複数のテーブル形式のデータから、データのユニークインデックスを示す第３の情報を取得する第３の処理部を有し、
前記第２の処理部は、前記第３の処理部で取得した前記第３の情報と前記第１の情報とから、前記結合されたデータがどのカラムの組み合わせでユニークになるかを特定し、この特定したユニークになるカラムを一つずつ削減することで、ユーザが定義したカラムでユニークとなるようにデータを変換する、データ処理システム。
【請求項２】
請求項１記載のデータ処理システムにおいて、
前記第２の処理部は、前記ユニークになるカラムを一つずつ削減する過程において、もとのカラムに対して、カラムの複数行の平均値をとる、カラムの複数行の合計値をとる、カラムの複数行の最小値／最大値をとる、カラムにデータが存在した行数を数える、カラムの値をとる、カラムのデータの固有な値の数を数える、および、カラムにデータが存在したら１とし存在しなかったら０とする、の少なくとも一つの圧縮演算を行い、データを変換する際の情報量の損失を抑える、データ処理システム。
【請求項３】
請求項２記載のデータ処理システムにおいて、
前記第２の処理部は、前記圧縮演算を行うかどうかを、対象となるカラムのデータ型に応じて動的に変更する、データ処理システム。
【請求項４】
請求項２記載のデータ処理システムにおいて、
前記第２の処理部は、前記圧縮演算を行う際に、前記ユニークになるカラムを一つずつ削減する過程において削減されたカラムの値に応じて圧縮演算を行う、データ処理システム。
【請求項５】
請求項４記載のデータ処理システムにおいて、
前記圧縮演算が行われたテーブル内の目的変数を選ぶことで、他の変数とのモデルを作成する第４の処理部をさらに有する、データ処理ステム。
【請求項６】
一部に同義のデータが含まれる複数のテーブル形式のデータを処理するデータ処理方法であって、
第１の処理部により、前記複数のテーブル形式のデータを自動で結合する第１の工程と、
第２の処理部により、前記第１の工程で結合されたデータに対して、特定のデータ中のカラムに対してユニークとなるようにデータを変換する第２の工程と、
を有し、
前記第１の工程において、前記第１の処理部は、ユーザが定義したデータ間の関係を示す第１の情報を用いて、前記複数のテーブル形式のデータを結合する処理を行い、
前記第２の工程において、前記第２の処理部は、前記ユーザが定義した分析対象のカラムを示す第２の情報を用いて、前記結合されたデータに対して、前記ユーザが定義した特定のデータ中のカラムに対してユニークとなるようにデータを変換し、
さらに、第３の処理部により、前記複数のテーブル形式のデータから、データのユニークインデックスを示す第３の情報を取得する第３の工程を有し、
前記第２の工程において、前記第２の処理部は、前記第３の処理部で取得した前記第３の情報と前記第１の情報とから、前記結合されたデータがどのカラムの組み合わせでユニークになるかを特定し、この特定したユニークになるカラムを一つずつ削減することで、ユーザが定義したカラムでユニークとなるようにデータを変換する、データ処理方法。
【請求項７】
一部に同義のデータが含まれる複数のテーブル形式のデータを処理するデータ処理装置であって、
前記複数のテーブル形式のデータを自動で結合する第１の処理部と、
前記第１の処理部で結合されたデータに対して、特定のデータ中のカラムに対してユニークとなるようにデータを変換する第２の処理部と、
を有し、
前記第１の処理部は、ユーザが定義したデータ間の関係を示す第１の情報を用いて、前記複数のテーブル形式のデータを結合する処理を行い、
前記第２の処理部は、前記ユーザが定義した分析対象のカラムを示す第２の情報を用いて、前記結合されたデータに対して、前記ユーザが定義した特定のデータ中のカラムに対してユニークとなるようにデータを変換し、
さらに、前記複数のテーブル形式のデータから、データのユニークインデックスを示す第３の情報を取得する第３の処理部を有し、
前記第２の処理部は、前記第３の処理部で取得した前記第３の情報と前記第１の情報とから、前記結合されたデータがどのカラムの組み合わせでユニークになるかを特定し、この特定したユニークになるカラムを一つずつ削減することで、ユーザが定義したカラムでユニークとなるようにデータを変換し、
前記第１の処理部と前記第２の処理部と前記第３の処理部とは、一つの装置筐体内に収納されている、データ処理装置。
【請求項８】
請求項１記載のデータ処理システムにおいて、
前記ユニークとは、前記カラムだけで、テーブルの行を特定することが可能であることを意味する、データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のテーブルに分かれて格納されているリレーショナルデータに関して、それらのテーブルを一つのテーブルに統合して扱うことを可能とし、特に統合された一つのテーブルを変形することで、ユーザが分析するために適した形にテーブルを変形するための技術に関する。
【背景技術】
【０００２】
近年、ＢＩＧＤＡＴＡと呼ばれる社会の大量の情報を有効活用して、今まで人が勘と経験で行ってきた意思決定を支援するシステムの開発が急速に発展してきている。これらの意思決定支援システムの多くは、ユーザが着目する目的変数を変動させる説明変数がなにであるかをデータの中から見つけ出すことを基本機能としている。このような分析を行うためには、データ中の目的変数も説明変数も同じ軸で取得されていることが前提となっている。例えば、あるお店の売上要因を、顧客を軸として分析したい場合には入力となるデータが顧客毎に並んでいる必要がある。このようなニーズにより、データを分析軸に応じて変形させてユーザの望む形にするための技術が提案されている。【０００３】
例えば、特許文献１には、データの分類階層とその階層関係を対応付けてテーブルに記憶し、分類項目とデータの対応関係を予め蓄積したデータベースを有し、指標計算手段が分類軸候補を受け取り、分類階層とデータベースが記憶する情報を参照して分類軸候補の優先度を計算し、その軸に沿ってデータ数を出力する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開ＷＯ２０１０／０１３４７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述したような、データを分析軸に従うように変形させる用途に、上記特許文献１に記載された技術を適用する場合、以下の点が課題となる。【０００６】
第１に、上記特許文献１の技術は、既に関係付けられている一つのリレーショナルテーブルの形式に入力データが整っている必要がある。つまり、複数のテーブルが存在する場合にそれらを統合して、ある目的の軸に従うようにデータを出力することができない。【０００７】
第２に、目的の軸に変形できたとしても、元のデータの情報量の多くが失われているという問題がある。上記特許文献１の技術では、目的の軸に従う形に変形させてしまうと、当該軸によって分類されたデータ数のみの情報しか残らない。先の背景技術の例でいうと、データを顧客毎に並べることは可能となるが、そのあとに残る情報が各顧客に該当するデータ数の情報のみとなってしまう。しかし、本来は顧客毎にデータを変形させたあとに、目的変数と説明変数の分析を行うため、説明変数は元のデータの多くの情報量を持つことが重要である。【０００８】
そこで、本発明は、このような課題を解決するためになされたものであり、この発明の代表的な目的は、元のデータの情報量の損失を抑え、複数のテーブルをまとめてユーザが望む分析軸に変形して出力する技術を提供することである。【０００９】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。【００１１】
すなわち、代表的なデータ処理システムは、一部に同義のデータが含まれる複数のテーブル形式のデータを処理するデータ処理システムである。前記データ処理システムは、前記複数のテーブル形式のデータを自動で結合する第１の処理部と、前記第１の処理部で結合されたデータに対して、特定のデータ中のカラムに対してユニークとなるようにデータを変換する第２の処理部と、を有する。【００１２】
より好ましくは、前記データ処理システムは、ユーザが定義したデータ間の関係を示す第１の情報をさらに有する。そして、前記第１の処理部は、前記第１の情報を用いて、前記複数のテーブル形式のデータを結合する処理を行う。前記第２の処理部は、前記結合されたデータに対して、特定のデータ中のカラムに対してユニークとなるようにデータを変換する。【００１３】
より好ましくは、前記データ処理システムは、前記ユーザが定義した分析対象のカラムを示す第２の情報をさらに有する。そして、前記第１の処理部は、前記第１の情報を用いて、前記複数のテーブル形式のデータを結合する処理を行う。前記第２の処理部は、前記第２の情報を用いて、前記結合されたデータに対して、前記ユーザが定義した特定のデータ中のカラムに対してユニークとなるようにデータを変換する。【００１４】
さらに、前記データ処理システムと同様の主旨に基づいたデータ処理方法やデータ処理装置にも適用するものである。
【発明の効果】
【００１５】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。【００１６】
すなわち、代表的な効果は、元のデータの情報量の損失を抑え、複数のテーブルをまとめてユーザが望む分析軸に変形して出力することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態１におけるデータ処理システムの基本構成の一例を示すブロック図である。
【図２】図１の基本構成をより具体化したデータ処理システムの詳細構成の一例を示すブロック図である。
【図３】図２のデータ処理システムにおいて、テーブル結合処理部の処理の一例を示すフローチャートである。
【図４】図２のデータ処理システムにおいて、指標作成部の処理の一例を示すフローチャートである。
【図５】図４の指標作成部において、シナリオ作成ステップの詳細処理の一例を示すフローチャートである。
【図６】図４の指標作成部において、シナリオ実行ステップの詳細処理の一例を示すフローチャートである。
【図７】図４の指標作成部において、圧縮ＳＱＬ文生成ステップの処理の一例を示すフローチャートである。
【図８】図２のデータ処理システムにおいて、軸情報テーブルの構成の一例を示す図である。
【図９】図２のデータ処理システムにおいて、タグ情報テーブルの構成の一例を示す図である。
【図１０】図２のデータ処理システムにおいて、指標情報テーブルの構成の一例を示す図である。
【図１１】図２のデータ処理システムにおいて、ユニーク軸情報テーブルの構成の一例を示す図である。
【図１２】図２のデータ処理システムにおいて、指標テーブルリストの構成の一例を示す図である。
【図１３】図２のデータ処理システムにおいて、ユーザ定義テーブル関連情報の構成の一例を示す図である。
【図１４】図２のデータ処理システムにおいて、ユーザ定義分析軸情報の構成の一例を示す図である。
【図１５】図２のデータ処理システムにおいて、シナリオ群テーブルの構成の一例を示す図である。
【図１６】図２のデータ処理システムにおいて、入力テーブル群から指標テーブルを作成するまでの処理の一例を示す図である。
【図１７】図２のデータ処理システムにおいて、シナリオ実行ステップのあるシナリオでの作成の一例を示す図である。
【図１８】図２のデータ処理システムにおいて、シナリオの違いによる圧縮演算のイメージの一例を示す図である。
【図１９】図２のデータ処理システムにおいて、圧縮演算テーブルの構成の一例を示す図である。
【図２０】本発明の実施の形態２におけるデータ処理システムの詳細構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１９】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００２０】
［実施の形態の概要］
まず、実施の形態の概要について説明する。本実施の形態の概要では、一例として、括弧内に実施の形態の対応する構成要素、符号等を付して説明する。
【００２１】
すなわち、本実施の形態の代表的なデータ処理システムは、一部に同義のデータが含まれる複数のテーブル形式のデータ（入力テーブル群１０２）を処理するデータ処理システムである。前記データ処理システムは、前記複数のテーブル形式のデータを自動で結合する第１の処理部（テーブル結合処理部１０４）と、前記第１の処理部で結合されたデータに対して、特定のデータ中のカラムに対してユニークとなるようにデータを変換する第２の処理部（指標作成部１０６）と、を有する。
【００２２】
より好ましくは、前記データ処理システムは、ユーザが定義したデータ間の関係を示す第１の情報（ユーザ定義テーブル関係情報１０１）をさらに有する。そして、前記第１の処理部は、前記第１の情報を用いて、前記複数のテーブル形式のデータを結合する処理を行う。前記第２の処理部は、前記結合されたデータに対して、特定のデータ中のカラムに対してユニークとなるようにデータを変換する。
【００２３】
より好ましくは、前記データ処理システムは、前記ユーザが定義した分析対象のカラムを示す第２の情報（ユーザ定義分析軸情報１０３）をさらに有する。そして、前記第１の処理部は、前記第１の情報を用いて、前記複数のテーブル形式のデータを結合する処理を行う。前記第２の処理部は、前記第２の情報を用いて、前記結合されたデータに対して、前記ユーザが定義した特定のデータ中のカラムに対してユニークとなるようにデータを変換する。
【００２４】
さらに、前記データ処理システムと同様の主旨に基づいたデータ処理方法やデータ処理装置にも適用するものである。
【００２５】
以下、上述した実施の形態の概要に基づいた各実施の形態を図面に基づいて詳細に説明する。なお、各実施の形態を説明するための全図において、同一機能を有するものは原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２６】
以下の実施の形態においては、データ処理システムおよびデータ処理方法を例に説明するが、データ処理装置についても適用できるものである。
【００２７】
［実施の形態１］
本実施の形態１におけるデータ処理システムおよびデータ処理方法について、図１〜図１９を用いて説明する。
【００２８】
＜データ処理システムの基本構成＞
図１は、本実施の形態におけるデータ処理システムの基本構成の一例を示すブロック図である。
【００２９】
本実施の形態におけるデータ処理システムの基本構成は、ユーザ定義テーブル関係情報１０１、入力テーブル群１０２、ユーザ定義分析軸情報１０３、テーブル結合処理部１０４、結合テーブル１０５、指標作成部１０６、指標テーブル１０７を有する。
【００３０】
ユーザ定義テーブル関係情報１０１は、ユーザが定義したデータ間の関係を示す第１の情報である。入力テーブル群１０２は、一部に同義のデータが含まれる複数のテーブル形式のデータである。入力テーブル群１０２は、複数のテーブルに分かれて格納されているリレーショナルデータとも呼ばれる。ユーザ定義分析軸情報１０３は、ユーザが定義した分析対象のカラムを示す第２の情報である。
【００３１】
テーブル結合処理部１０４は、入力テーブル群１０２のデータを自動で結合する第１の処理部である。より詳細に、テーブル結合処理部１０４は、ユーザ定義テーブル関係情報１０１を用いて、入力テーブル群１０２のデータを結合する処理を行う処理部である。結合テーブル１０５は、テーブル結合処理部１０４で結合されたテーブル形式のデータである。
【００３２】
指標作成部１０６は、テーブル結合処理部１０４で結合された結合テーブル１０５のデータに対して、特定のデータ中のカラムに対してユニークとなるようにデータを変換する第２の処理部である。より詳細に、指標作成部１０６は、ユーザ定義分析軸情報１０３を用いて、結合テーブル１０５のデータに対して、ユーザが定義した特定のデータ中のカラムに対してユニークとなるようにデータを変換する処理部である。ユニークとは、そのカラムだけで、テーブルの行を特定することが可能であることを意味する。指標テーブル１０７は、指標作成部１０６で変換されたテーブル形式のデータである。
【００３３】
本データ処理システムでは、ユーザ定義テーブル関係情報１０１を用いて、一つ以上のテーブルを含む入力テーブル群１０２をテーブル結合処理部１０４において結合していき、一つの結合テーブル１０５を作成する。次に、ユーザ定義分析軸情報１０３を用いて、結合テーブル１０５から、指標作成部１０６において指標テーブル１０７を作成する。
【００３４】
本実施の形態において、テーブルとは一般的なデータベースにおけるテーブルと同一の概念であると考えて問題無いが、本明細書ではテーブルがデータベース内のテーブルに限定されるものではなく、プログラム上のメモリ領域に格納されている形態でも、テキストファイル形式、ＣＳＶファイル形式などのあらゆる形態のデータに置き換えることが可能である。
【００３５】
＜データ処理システムの詳細構成＞
図２は、図１の基本構成をより具体化したデータ処理システムの詳細構成の一例を示すブロック図である。
【００３６】
本実施の形態におけるデータ処理システムの詳細構成は、図１に示した基本構成（ユーザ定義テーブル関係情報１０１、入力テーブル群１０２、ユーザ定義分析軸情報１０３、テーブル結合処理部１０４、結合テーブル１０５、指標作成部１０６、指標テーブル１０７）の他に、入力テーブル関係情報２０８、入力テーブル群１０２に含まれる入力テーブル１（２０９）と入力テーブル２（２１０）と入力テーブル３（２１１）、分析基本テーブル２１２、テーブル情報取得部２１３、軸情報テーブル２１４、タグ情報テーブル２１５、指標情報テーブル２１６、ユニーク軸情報テーブル２１７、分析基本テーブル追加作成部２１８を有する。
【００３７】
本実施の形態におけるデータ処理システムは、例えば、コンピュータシステムを用いて実現される。ユーザ定義テーブル関係情報１０１、入力テーブル群１０２、ユーザ定義分析軸情報１０３、結合テーブル１０５、指標テーブル１０７、入力テーブル関係情報２０８、入力テーブル１（２０９）〜入力テーブル３（２１１）、分析基本テーブル２１２、軸情報テーブル２１４、タグ情報テーブル２１５、指標情報テーブル２１６、ユニーク軸情報テーブル２１７などの各情報および各テーブルは、例えばハードディスクなどの記憶装置に格納される。また、テーブル結合処理部１０４、指標作成部１０６、テーブル情報取得部２１３、分析基本テーブル追加作成部２１８などの各機能部は、例えばデータ処理方法に関するコンピュータソフトウェアのプログラムをＣＰＵ上で実行することにより構築される。
【００３８】
入力テーブル関係情報２０８は、入力テーブル群１０２に含まれるテーブル間の関係情報が含まれている。これは、一般的なＲＤＭＳ（ＲＥＬＡＴＩＯＮＡＬ  ＤＡＴＡＢＡＳＥ  ＭＡＮＡＧＥＭＥＮＴ  ＳＹＳＴＥＭ）における外部キー制約に相当する。
【００３９】
入力テーブル１（２０９）、入力テーブル２（２１０）、入力テーブル３（２１１）は、入力テーブル群１０２に含まれる入力テーブルの一つ一つである。
【００４０】
分析基本テーブル２１２は、入力テーブルの他に以後の処理で必要となる基本テーブルである。この分析基本テーブル２１２としては、図１６の分析時刻テーブルの例のように、時刻を時間毎に分類し直した分析時刻テーブル等が考えられる。分析時刻テーブルの例では、２０１２／１０／１０  １０：００という日時のデータは時間毎に分類すると１０時というデータになり、月毎に分類すると１０月となるというように、様々な分類方法によって、複数のカラムを持った分析基本テーブル２１２となる。
【００４１】
分析基本テーブル追加作成部２１８では、入力テーブル群１０２を入力として上述の分析基本テーブル２１２を作成する。作成方法としては、入力テーブル群１０２の中の全入力テーブルを走査して、入力されている最小日時と最大日時の間を補間するように分析基本テーブル２１２を作成する。このときに、分析基本テーブル２１２の時刻の粒度や分析基本テーブル２１２に含めるカラムに関しては、システムとしてデフォルトの値を持っておくことも可能であるし、何らかの設定ファイルによってユーザが任意に指定することも可能である。また、本実施の形態では、分析基本テーブル２１２として時間に関係するテーブルを作成したが、全く同じ要領で空間に関するテーブルも可能である。
【００４２】
テーブル情報取得部２１３では、分析基本テーブル２１２および入力テーブル群１０２の全テーブルに関するテーブル情報を取得して、取得結果を軸情報テーブル２１４、タグ情報テーブル２１５、指標情報テーブル２１６、ユニーク軸情報テーブル２１７を出力する。軸情報テーブル２１４、タグ情報テーブル２１５、指標情報テーブル２１６、ユニーク軸情報テーブル２１７のそれぞれのテーブル構成や各テーブルのデータ取得方法に関しては、それぞれ図８、図９、図１０、図１１および各図の説明にて詳細を記述する。
【００４３】
テーブル結合処理部１０４では、ユーザ定義テーブル関係情報１０１、入力テーブル関係情報２０８、入力テーブル群１０２、分析基本テーブル２１２、軸情報テーブル２１４、タグ情報テーブル２１５、指標情報テーブル２１６、ユニーク軸情報テーブル２１７を入力として、入力テーブル群１０２および分析基本テーブル２１２を一つの結合テーブル１０５にする。また、その際に、結合テーブル１０５の情報として、ユニーク軸情報テーブル２１７および指標情報テーブル２１６を更新する。テーブル結合処理部１０４の詳細は、図３にて記述する。
【００４４】
テーブル結合処理部１０４によって一つのテーブルとなった結合テーブル１０５は、次に、ユーザ定義分析軸情報１０３を基に、指標作成部１０６によって指標テーブル１０７に変形される。指標作成部１０６の詳細は、図４にて記述する。
【００４５】
＜テーブル結合処理部の処理＞
図３は、テーブル結合処理部１０４の処理の一例を示すフローチャートである。
【００４６】
本テーブル結合処理部１０４では、本システムに対する入力となる複数の入力テーブル群１０２を一つのテーブルに結合することを行う。この処理では、入力テーブル全てを一つのテーブルにまとめることで、後の処理である指標作成部１０６において全てのテーブルを組み合わせた指標を生成可能にする。指標作成部１０６の詳細については後述する。
【００４７】
本処理では、ユーザ定義テーブル関係情報１０１を用いて、テーブル結合ＳＱＬ文の作成ステップ３０１において、二つのテーブルを結合するためのＳＱＬ文を作成する。ここでは、図１６の入力テーブル群１０２、分析時刻テーブル１６０３、および図１３のユーザ定義テーブル関係情報１０１を用いて、具体的に説明する。
【００４８】
テーブル結合ＳＱＬ文の作成ステップ３０１では、ユーザ定義テーブル関係情報１０１を用いて、テーブルを結合するためのＳＱＬ文を作成する。
【００４９】
図１３の一行目では、ＯＢＪＥＣＴ  ＴＡＢＬＥ  １（１３０２）のＰＯＳテーブルおよび、ＯＢＪＥＣＴ  ＴＡＢＬＥ  ２（１３０３）の分析時刻テーブルの二つのテーブルを、ＣＯＮＤＩＴＩＯＮ１３０４を条件として結合してＧＥＮＥＲＡＴＥ  ＴＡＢＬＥ１３０１のＴＭＰ１テーブルを作成する。よって、作成されるＳＱＬ文は、「ＣＲＥＡＴＥ  ＴＡＢＬＥ  ＴＭＰ１テーブル  ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  ＰＯＳテーブル  ＩＮＮＥＲ  ＪＯＩＮ  分析時刻テーブル  ＯＮ  入店時刻＜＝時刻  ＡＮＤ  退店時刻＞＝時刻」となる。これらのＳＱＬ文は、本システムが扱うＲＤＭＳに適合した文法によって記述される。
【００５０】
テーブル結合ＳＱＬ文の実行ステップ３０２では、テーブル結合ＳＱＬ文の作成ステップ３０１によって作成されたＳＱＬ文をＲＤＭＳに渡して実行する。このときに、当該ＲＤＭＳにおいて入力テーブル群１０２および分析基本テーブル２１２がＳＱＬ文の実行対象となる。当該ＳＱＬ文の実行によって、ＯＢＪＥＣＴ  ＴＡＢＬＥ  １（１３０２）のＰＯＳテーブルおよび、ＯＢＪＥＣＴ  ＴＡＢＬＥ  ２（１３０３）の全てのカラムを含む新しいテーブルが作成され、結合中間テーブル群３０５に追加される。
【００５１】
指標情報の生成ステップ３０３では、作成された新しいテーブルであるＴＭＰ１テーブルの各カラムの情報が指標情報テーブル２１６に格納される。このとき、ＴＭＰ１テーブルの各カラムに対して作成される指標情報は、元となるＯＢＪＥＣＴ  ＴＡＢＬＥ  １（１３０２）のＰＯＳテーブルおよび、ＯＢＪＥＣＴ  ＴＡＢＬＥ  ２（１３０３）の分析時刻テーブルの指標情報をもとに作成される。
【００５２】
例えば、ＴＭＰ１テーブルに作成される店員時刻というカラムは、店員位置テーブルの店員時刻をもとに作成される。そのため、図１０の指標情報テーブル２１６において、ＴＡＢＬＥＮＡＭＥ１００６が店員時刻テーブルで、ＮＡＭＥ１００２が店員時刻の行を取得し、当該行と同じ値を新しい指標のＮＡＭＥ１００２、ＵＮＩＴ１００４、ＤＢＮＡＭＥ１００５、ＴＹＰＥ１００７、ＩＤＶＡＬＵＥＡＸＩＳ１００３に対して格納する。また、ＴＡＢＬＥＮＡＭＥ１００６に関しては、新しいテーブル名であるＴＭＰ１テーブルを格納する。また、ＦＵＮＣＴＩＯＮ１００９、ＩＤＦＵＮＣＴＡＧ１０１０、ＩＤＦＵＮＣＡＸＩＳ１０１１に関しては、ＮＵＬＬを格納する。また、ＩＤＷＩＤＥＴＡＢＬＥ１０１２には−１を格納する。
【００５３】
ユニーク軸情報の計算ステップ３０４では、新しいテーブルに対する情報をユニーク軸情報テーブル２１７に格納する。この例では、図１１にあるように、ＰＯＳテーブルは顧客ＩＤカラムでユニークとなるテーブルであり、分析時刻テーブルは時刻カラムでユニークとなるテーブルであるということをユニーク軸情報テーブル２１７から取得する。
【００５４】
次に、ＣＯＮＤＩＴＩＯＮ１３０４である｛入店時刻＜＝時刻  ＡＮＤ  退店時刻＞＝時刻｝を評価する。ここでは、二つの条件｛入店時刻＜＝時刻｝と｛退店時刻＞＝時刻｝が結合の条件となっているが、どちらも等号のみの条件でなく不等号つきの条件であるため、生成されるテーブルのユニーク軸は元のユニーク軸の和、つまり顧客ＩＤカラムと時刻カラムを合わせてユニークとなる。もし、条件の中に等号のみの条件がある場合は、生成されるテーブルのユニーク軸は元のユニーク軸の和よりも少なくなる場合がある。
【００５５】
例えば、ユーザ定義テーブル関係情報１０１の２行目は生成されたＴＭＰ１テーブルと店員位置テーブルの結合であるが、このときのＣＯＮＤＩＴＩＯＮ１３０４は｛時刻＝店員時刻｝となっている。この場合は、ＴＭＰ１テーブルのユニーク軸組み合わせは｛顧客ＩＤ、時刻｝であり、店員位置テーブルは｛店員時刻、店員ＩＤ、エリア｝となっているが、結合されたテーブルにおいて時刻と店員時刻は全く同じ意味を持つことになるので、生成された結合テーブルのユニーク軸組み合わせは｛顧客ＩＤ、時刻／店員時刻、店員ＩＤ、エリア｝となる。この場合、ユニーク軸情報テーブル２１７には、図１１の詳細説明で示すように、時刻と店員時刻に関しては同じ意味を持つので、ＳＥＱ＿ＩＮ＿ＵＮＩＱＵＥＩＮＤＥＸ１１０４は同じ順番番号である２が格納される。
【００５６】
判定ステップ３０６では、全ての結合が終わったかを判定する。ここでは、ユーザ定義テーブル関係情報１０１の全ての行の処理を終了したかを判定し、終了していない場合（ｎｏ）には、次の行のテーブル結合ＳＱＬ文の作成ステップ３０１を実行する。全ての結合処理が終了した場合（ｙｅｓ）には、結合テーブル１０５が生成されている。
【００５７】
本例では、テーブル結合ＳＱＬ文の作成ステップ３０１において、ユーザ定義テーブル関係情報１０１を用いて、テーブルを結合していくＳＱＬ文を作成したが、ユーザ定義テーブル関係情報１０１の代わりに入力テーブル関係情報２０８を用いて、テーブルを結合していくＳＱＬ文を作成することも同様に可能である。この場合には、外部キー制約によって予め入力テーブル１のカラムＡが入力テーブル２のカラムＢと同じ意味を持っているということが分かるので、ＣＯＮＤＩＴＩＯＮ１３０４を｛カラムＡ＝カラムＢ｝として入力テーブル１と入力テーブル２を結合することが可能になる。
【００５８】
また、ユーザ定義テーブル関係情報１０１と入力テーブル関係情報２０８の両方を用いることも可能である。この場合は、入力テーブル関係情報２０８を用いて上述のように可能な限りの結合処理を行って、追加の結合処理がないかをユーザに入力を求めるといった方法が考えられる。
【００５９】
＜指標作成部の処理＞
図４は、指標作成部１０６の処理の一例を示すフローチャートである。
【００６０】
指標作成部１０６では、結合テーブル１０５をユーザが定義した分析軸に適合するような形に変形して指標テーブル１０７を作成する。また、その変形のなかで情報量がなるべく失われないように多くの指標を生成する。
【００６１】
シナリオ作成ステップ４０２では、ユーザ定義分析軸情報１０３を用いて、ユーザが最終的に欲しい分析軸の候補を複数取得し、各分析軸に対して、結合テーブル１０５から当該分析軸でユニークとなる指標テーブル１０７を作成するまでのシナリオを作成する。シナリオ作成ステップ４０２の詳細な説明は、図５にて記載する。
【００６２】
シナリオ群テーブル４０３には、シナリオ作成ステップ４０２によって作成されたシナリオが一つ以上格納されている。シナリオ群テーブル４０３の構成に関しては、図１５にて説明する。
【００６３】
シナリオ実行ステップ４０４においては、シナリオ群テーブル４０３のあるシナリオについて実行する。シナリオ実行ステップ４０４の詳細な説明は、図６にて記載する。
【００６４】
シナリオ結果データ結合ステップ４０６において、当該シナリオによって作成されたテーブルが指標中間テーブル群４０５と結合される。
【００６５】
判定ステップ４０７では、シナリオ群テーブル４０３に含まれる全てのシナリオの処理が終わったかを判定する。全てのシナリオが終了していない場合（ｎｏ）には、シナリオ実行ステップ４０４に戻って、未処理のシナリオを実行する。全ての処理が終了している場合（ｙｅｓ）には、最終的に生成されたテーブルが指標テーブル１０７となる。
【００６６】
＜シナリオ作成ステップの詳細処理＞
図５は、図４に示したシナリオ作成ステップ４０２の詳細処理の一例を示すフローチャートである。
【００６７】
シナリオ作成ステップ４０２において、演算対象とする指標テーブルの分析軸を設定するステップ５０１では、ユーザ定義分析軸情報１０３を読み込んで、最終的に生成される指標テーブル１０７の分析軸の候補を作成し、それら候補を一つずつ処理していく。図１４のユーザ定義分析軸情報１０３の例では、ＩＤＷＩＤＥＴＡＢＬＥ１４０１に対して１、２、３、４の４つのＩＤが作成されているので、全部で４つの指標テーブルを作成することになる。それぞれの指標テーブルは、顧客ＩＤ、時間、エリア、（顧客ＩＤと時間）の軸でユニークになるように作成される。ここでは、まず、ＩＤＷＩＤＥＴＡＢＬＥ１４０１＝１の指標テーブル（顧客ＩＤでユニークとなる）を作成するためのシナリオを作成する。
【００６８】
分析軸毎のシナリオ生成ステップ５０２では、ユニーク軸情報テーブル２１７と先に決定された分析軸を基にシナリオの生成を行う。ユニーク軸情報テーブル２１７より、結合テーブルは｛顧客ＩＤ、時刻／店員時刻、店員ＩＤ、エリア｝の組み合わせでユニークとなっていることが分かる。ここで、今は顧客ＩＤで最終的にユニークになるように変形する必要があるため、残りの時刻／店員時刻、店員ＩＤ、エリアの３つの軸をそれぞれユニークでなくなるように変形していくシナリオを生成する。ここでは、一つずつ順番にユニークでなくなるように変形する場合を考える。あるシナリオにおける変形の具体例に関しては、図１７にて説明する。
【００６９】
また、同じ分析軸に対して、異なる複数のシナリオで行った圧縮演算のイメージを図１８に記す。つまり、ここで定めるシナリオとは、最終的に残す軸以外の軸をどの順番でユニークでなくさせるかということである。この場合は、時刻／店員時刻、店員ＩＤ、エリアの３つの軸の順列であるので３！通りのシナリオが存在する。つまり、シナリオデータとしては、｛時刻／店員時刻、店員ＩＤ、エリア、顧客ＩＤ｝、｛時刻／店員時刻、エリア、店員ＩＤ、顧客ＩＤ｝、｛店員ＩＤ、時刻／店員時刻、エリア、顧客ＩＤ｝、｛店員ＩＤ、エリア、時刻／店員時刻、顧客ＩＤ｝、｛エリア、店員ＩＤ、時刻／店員時刻、顧客ＩＤ｝、｛エリア、時刻／店員時刻、店員ＩＤ、顧客ＩＤ｝の６つのシナリオが含まれるシナリオデータ５０３が生成される。
【００７０】
シナリオデータ結合ステップ５０４では、シナリオデータ５０３をシナリオ群テーブル４０３に格納する。
【００７１】
判定ステップ５０５では、全てのユーザ定義分析軸に対しての処理を終了したかどうかを判定する。全ての処理が終了していたら（ｙｅｓ）、シナリオ作成ステップ４０２の処理を終了し、終了していなかったら（ｎｏ）、処理していないユーザ定義分析軸に対して、演算対象とする指標テーブルの分析軸の設定ステップ５０１を行う。
【００７２】
＜シナリオ実行ステップの詳細処理＞
図６は、図４に示したシナリオ実行ステップ４０４の詳細処理の一例を示すフローチャートである。
【００７３】
シナリオ実行ステップ４０４では、ある一つのシナリオに対して、各圧縮過程を実現するＳＱＬ文を生成して、実行する処理を行う。ここでは、結合テーブル１０５からシナリオ｛店員ＩＤ、時刻／店員時刻、エリア、顧客ＩＤ｝によって指標テーブル１０７を作成する場合を例に説明する。
【００７４】
圧縮ＳＱＬ文生成ステップ６０１では、ある圧縮過程を実現するための圧縮ＳＱＬ文を生成する。この処理の詳細は、図７にて説明する。
【００７５】
ここでは、以下の３回の圧縮過程が行われる。
【００７６】
１回目：ユニーク軸組み合わせ｛店員ＩＤ、時刻／店員時刻、エリア、顧客ＩＤ｝からユニーク軸｛店員ＩＤ｝を圧縮して中間テーブル１を作成する。
【００７７】
２回目：ユニーク軸組み合わせ｛時刻／店員時刻、エリア、顧客ＩＤ｝からユニーク軸｛時刻／店員時刻｝を圧縮して中間テーブル２を作成する。
【００７８】
３回目：ユニーク軸組み合わせ｛エリア、顧客ＩＤ｝からユニーク軸｛エリア｝を圧縮して指標テーブルを作成する。
【００７９】
生成された圧縮ＳＱＬ文６０２は、圧縮ＳＱＬ文実行ステップ６０３で実行される。この時に、指標中間テーブル群４０５から必要となるテーブルが呼び出され、新しく作成されたテーブルは指標中間テーブル群４０５に格納される。
【００８０】
判定ステップ６０４では、当該シナリオの全圧縮処理が終了したかを判定する。終了していない場合（ｎｏ）には、圧縮ＳＱＬ文生成ステップ６０１にて、終了していない圧縮処理を行う。終了している場合（ｙｅｓ）には、指標テーブルリスト２１９の更新ステップ６０５を行う。
【００８１】
指標テーブルリスト２１９の更新ステップ６０５では、作成された指標テーブル１０７のＩＤとその指標テーブル１０７をユニークにする分析軸のＩＤＡＸＩＳ８０１を格納する。この指標テーブルリスト２１９によって、現在どの指標テーブル１０７の作成が終了していて、その指標テーブル１０７の分析軸が何であるかが一覧できる。
【００８２】
＜圧縮ＳＱＬ文生成ステップの詳細処理＞
図７は、図６に示した圧縮ＳＱＬ文生成ステップ６０１の詳細処理の一例を示すフローチャートである。
【００８３】
圧縮ＳＱＬ文生成ステップ６０１では、あるシナリオにおけるある圧縮を行うためのＳＱＬ文を生成することを行う。ここでは、図６に示したシナリオ実行ステップ４０４のシナリオの１回目の圧縮過程を例に説明する。本処理では、全体で一つのＳＱＬ文を作成する。
【００８４】
ユニーク軸を継承するＳＱＬ文を追加するステップ７０１では、圧縮前の結合テーブルのユニーク軸｛店員ＩＤ、時刻／店員時刻、エリア、顧客ＩＤ｝から圧縮後テーブルにおいてもユニーク軸である｛時刻／店員時刻、エリア、顧客ＩＤ｝をＳＱＬ文に追加する。ここで、ＳＱＬ文に追加するとは、テーブル作成のひな型となるＳＱＬ文”ＣＲＥＡＴＥ  ＴＡＢＬＥ  中間テーブル１  ＳＥＬＥＣＴ  ”に結合テーブルから作成する指標を追記していくことを意味する。ステップ７０１を終了した時点では、
ＳＱＬ＝”ＣＲＥＡＴＥ  ＴＡＢＬＥ  中間テーブル１  ＳＥＬＥＣＴ  時刻、エリア、顧客ＩＤ”
となっている。ユニーク軸｛時刻／店員時刻｝に関しては、全く同じ意味を持つのでどちらか一方を追記するだけで十分である。
【００８５】
圧縮軸のタグを選択するステップ７０２では、タグ情報テーブル２１５から今回圧縮する軸である店員ＩＤ軸をＩＤＡＸＩＳ９０３に持つタグの中から一つのタグを選択する。ここでは、仮にＶＡＬＵＥ９０２＝”２０００”を持つタグが選ばれたとする。
【００８６】
計算対象指標の選択ステップ７０３では、結合テーブルに含まれる指標の中から中間テーブル１のユニーク軸にならない指標全てが計算対象となる。この計算対象指標の中から一つの指標を選択する。ここでは、仮にＮＡＭＥ１００２＝”購入金額”の指標が選択されたとする。
【００８７】
圧縮演算子の選択ステップ７０４では、当該圧縮軸のタグで当該計算対象指標に対して、図１９の圧縮演算テーブルに含まれるどれかの圧縮演算子を選択する。ここでは、圧縮演算子として”ＣＯＵＮＴ”が選択されたとする。
【００８８】
判定ステップ７０５では、対象指標に対して圧縮演算が可能か、すなわち当該圧縮演算子で圧縮に意味があるかを判定する。圧縮に意味があるかの判定は、図１９の指標のデータ型と圧縮演算子の組み合わせから判定する。指標のデータ型は、指標情報テーブル２１６のＴＹＰＥ１００７から取得する。ここで、圧縮演算に意味が無い場合（ｎｏ）は、ステップ７０４に戻る。
【００８９】
判定ステップ７０５で圧縮演算が可能（ｙｅｓ）と判定されたら、指標計算ＳＱＬ文を生成して追加するステップ７０６を行う。この例では、先のＳＱＬ文に”，ＣＯＵＮＴ（ＣＡＳＥ  ＷＨＥＮ  店員ＩＤ＝”２０００”  ＡＮＤ  購入金額  ＩＳ  ＮＯＴ  ＮＵＬＬ  ＴＨＥＮ  １  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ）”を追加する。ここで、全ての演算子に対するＳＱＬ文の生成例を記す。
【００９０】
ＡＶＧ：”，ＡＶＧ（ＣＡＳＥ  ＷＨＥＮ  店員ＩＤ＝”２０００”  ＡＮＤ  購入金額  ＩＳ  ＮＯＴ  ＮＵＬＬ  ＴＨＥＮ  購入金額  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ）”
ＳＵＭ：”，ＳＵＭ（ＣＡＳＥ  ＷＨＥＮ  店員ＩＤ＝”２０００”  ＡＮＤ  購入金額  ＩＳ  ＮＯＴ  ＮＵＬＬ  ＴＨＥＮ  購入金額  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ）”
ＭＩＮ／ＭＡＸ：”，ＭＩＮ／ＭＡＸ（ＣＡＳＥ  ＷＨＥＮ  店員ＩＤ＝”２０００”  ＡＮＤ  購入金額  ＩＳ  ＮＯＴ  ＮＵＬＬ  ＴＨＥＮ  購入金額  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ）”
ＣＯＵＮＴ：”，ＣＯＵＮＴ（ＣＡＳＥ  ＷＨＥＮ  店員ＩＤ＝”２０００”  ＡＮＤ  購入金額  ＩＳ  ＮＯＴ  ＮＵＬＬ  ＴＨＥＮ  １  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ）”
ＡＳＩＳ：ＩＦ（ＣＯＵＮＴ（ＣＡＳＥ  ＷＨＥＮ  店員ＩＤ＝”２０００”  ＡＮＤ  購入金額  ＩＳ  ＮＯＴ  ＮＵＬＬ  ＴＨＥＮ  １  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ）＝１，購入金額，ＮＵＬＬ）”
ＵＮＩＱＵＥＮＵＭ：”，ＣＯＵＮＴ（ＤＩＳＴＩＮＣＴ（ＣＡＳＥ  ＷＨＥＮ  店員ＩＤ＝”２０００”  ＡＮＤ  購入金額  ＩＳ  ＮＯＴ  ＮＵＬＬ  ＴＨＥＮ  購入金額  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ））”
ＥＸＩＳＴ：”，ＩＦ（ＣＯＵＮＴ（ＣＡＳＥ  ＷＨＥＮ  店員ＩＤ＝”２０００”  ＡＮＤ  購入金額  ＩＳ  ＮＯＴ  ＮＵＬＬ  ＴＨＥＮ  １  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ）＞０，１，０）”
指標情報を更新するステップ７０７では、作成される中間テーブル１に追加される指標の情報を指標情報テーブル２１６に更新する。
【００９１】
ここで、ＮＡＭＥ１００２、ＤＢＮＡＭＥ１００５、ＩＤＶＡＬＵＥＡＸＩＳ１００３に対しては、対象指標の情報と同じ値を格納する。また、ＦＵＮＣＴＩＯＮ１００９には当該圧縮演算子名を、ＩＤＦＵＮＣＴＡＧ１０１０には当該タグのＩＤＴＡＧ９０１を、ＩＤＦＵＮＣＡＸＩＳ１０１１には当該圧縮軸のＩＤＡＸＩＳ８０１を、ＴＡＢＬＥＮＡＭＥ１００６には”中間テーブル１”をそれぞれ格納する。また、ＵＮＩＴ１００４には、圧縮演算子がＡＶＧ、ＳＵＭ、ＭＩＮ／ＭＡＸ、ＡＳＩＳの場合には対象指標の情報と同じ値を、それ以外の場合はＮＵＬＬを格納する。ＴＹＰＥ１００７には、圧縮演算子がＡＶＧ、ＳＵＭ、ＭＩＮ／ＭＡＸ、ＡＳＩＳの場合には対象指標の情報と同じ値を、それ以外の場合はＩＮＴを格納する。ＩＤＷＩＤＥＴＡＢＬＥ１０１２には、−１を格納する。もし、圧縮がシナリオの最後の圧縮過程であれば、ＩＤＷＩＤＥＴＡＢＬＥ１０１２には、最終的にユニークになる軸が等しいユーザ定義分析軸をユーザ定義分析軸情報１０３より検索し、当該分析軸のＩＤＷＩＤＥＴＡＢＬＥ１４０１を格納する。
【００９２】
判定ステップ７０８では、全ての可能な圧縮演算を終了したかを判定し、終了していなかったら（ｎｏ）、ステップ７０４に戻る。
【００９３】
判定ステップ７０９では、全ての計算対象を終了したかを判定し、終了していなかったら（ｎｏ）、ステップ７０３に戻る。
【００９４】
判定ステップ７１０では、全てのタグを終了したかを判定し、終了していなかったら（ｎｏ）、ステップ７０２に戻る。
【００９５】
判定ステップ７０８、判定ステップ７０９、判定ステップ７１０の全ステップで終了していると判定されたら（ｙｅｓ）、ユニーク軸を用いて集約する演算をＳＱＬ文に追加するステップ７１１を行う。このステップ７１１では、今回の演算でテーブルをユニークにすべき軸で集約する。また、このときに対象としているテーブルも指定する。つまり、追記するＳＱＬ文は以下となる。
【００９６】
追記ＳＱＬ文＝”  ＦＲＯＭ  結合テーブル  ＧＲＯＵＰ  ＢＹ  時刻、エリア、顧客ＩＤ；”
以上の追記により、本処理で生成されるＳＱＬ文が完成する。
【００９７】
＜軸情報テーブルの構成＞
図８は、軸情報テーブル２１４の構成の一例を示す図である。
【００９８】
軸情報テーブル２１４には、入力テーブル群１０２の全てのテーブルの全てのカラム情報が格納される。本明細書では、入力テーブル群１０２に含まれていたカラムのことを軸と呼ぶ。
【００９９】
ＩＤＡＸＩＳ８０１には、軸毎にユニークに付されるＩＤが格納される。
【０１００】
ＮＡＭＥ８０２には、各軸の名称が格納されている。これは、入力テーブル群１０２の各テーブルのカラム名をそのまま格納してもよい。
【０１０１】
ＤＢＮＡＭＥ８０３には、当該軸が元々格納されていた入力テーブルが格納されていたデータベース名を格納する。
【０１０２】
ＴＡＢＬＥＮＡＭＥ８０４には、当該軸が元々格納されていた入力テーブル名を格納する。
【０１０３】
ＴＹＰＥ８０５には、当該軸のデータ型を格納する。このデータ型としては、整数型、文字列型、時刻型、日付型等、通常のデータベースに存在するデータ型を格納することが可能である。また、この情報は、入力テーブル群１０２に当該軸が格納されている型をそのまま取得して代入することも可能である。
【０１０４】
ＵＮＩＴ８０６には、当該軸の単位が格納される。当該単位は、軸情報テーブル２１４に対して人が直接変更することも可能であるし、予め各軸毎の単位を設定したファイルを読み込んで変更することも可能である。また、何らかのユーザインタフェースを用いて、ユーザが当該単位を動的に変更することも可能である。また、当該単位は、ＴＹＰＥ８０５を用いて自動で格納することも可能である。例えば、ＴＹＰＥ８０５が時刻型の軸に関しては、単位を秒とするといったことが可能である。また、当該単位は、ＮＡＭＥ８０２を用いて自動で格納することも可能である。例えば、ＮＡＭＥ８０２が金額を含んでいる軸に関しては、単位を円とするといったことが可能である。
【０１０５】
＜タグ情報テーブルの構成＞
図９は、タグ情報テーブル２１５の構成の一例を示す図である。
【０１０６】
タグ情報テーブル２１５には、入力テーブル群１０２の全てのテーブルの全てのカラムに含まれる全てのデータが格納される。例えば、図１６の店員位置テーブル１６０２からタグ情報を取得する場合には、店員時刻、店員ＩＤ、エリアの３つのカラムに含まれるユニークな値がタグとして全て格納される。店員位置テーブル１６０２の場合、軸＝店員時刻には１０：１０、１０：１１、１０：１２、…が、軸＝店員ＩＤに関しては２０００、２００１、…が、軸＝エリアに関してはエリアＡ、エリアＢ、…がタグとして格納される。具体的な格納形式の一例を図９に示す。
【０１０７】
ＩＤＴＡＧ９０１には、タグをユニークに識別するためのＩＤが格納される。これは、ユニーク性が保たれる場合ならば、連番などの数値を用いることも可能である。
【０１０８】
ＶＡＬＵＥ９０２には、当該タグの値を格納する。先の例だと軸＝店員時刻のタグを格納する場合には、店員位置テーブル１６０２の店員時刻カラムのユニークな値である１０：１０、１０：１１、１０：１２、…が各行に格納される。
【０１０９】
ＩＤＡＸＩＳ９０３には、当該タグが元々含まれていた軸を示すＩＤが格納される。これは先に説明した、ＩＤＡＸＩＳ８０１に対応する。例えば、店員位置テーブル１６０２の店員時刻カラムの値である１０：１０をタグとして格納した場合は同行のＩＤＡＸＩＳ９０３は店員時刻軸のＩＤＡＸＩＳ８０１である５が格納される。
【０１１０】
また、タグとしてユニークな値だけでなく、全てのタグを意味するＡＬＬＴＡＧとデータが存在しないことを意味するＮＵＬＬＴＡＧも全ての軸に対して格納しておく。
【０１１１】
＜指標情報テーブルの構成＞
図１０は、指標情報テーブル２１６の構成の一例を示す図である。
【０１１２】
指標情報テーブル２１６には、入力テーブル群１０２の軸を含む、本システムで生成される全てのテーブルの全てのカラムの情報が格納される。
【０１１３】
テーブル結合処理部１０４および指標作成部１０６において、本システムで新たに作成されるテーブルに含まれるカラムに関する指標情報の作成方法に関しては、それぞれ図３および図４を用いて説明した通りである。
【０１１４】
ＩＤＩＮＤＥＸＩＮＦＯ１００１には、指標情報毎にユニークに付されるＩＤが格納される。これは、連番とすることも可能である。
【０１１５】
ＮＡＭＥ１００２には、当該指標の名称が格納されている。
【０１１６】
ＩＤＶＡＬＵＥＡＸＩＳ１００３には、当該指標の元となる軸のＩＤが格納され、これはＩＤＡＸＩＳ８０１に対応する。
【０１１７】
ＵＮＩＴ１００４には、当該指標の単位が格納される。
【０１１８】
ＤＢＮＡＭＥ１００５には、当該指標が格納されているテーブルが格納されているデータベース名を格納する。
【０１１９】
ＴＡＢＬＥＮＡＭＥ１００６には、当該指標が格納されているテーブル名を格納する。
【０１２０】
ＴＹＰＥ１００７には、当該指標のデータ型を格納する。このデータ型としては、整数型、文字列型、時刻型、日付型等、通常のデータベースに存在するデータ型を格納することが可能である。
【０１２１】
ＩＤ＿ＰＡＲＥＮＴＩＮＤＥＸＩＮＦＯ１００８には、当該指標を作成する一段階前の指標のＩＤが格納され、これはＩＤＩＮＤＥＸＩＮＦＯ１００１に対応する。
【０１２２】
ＦＵＮＣＴＩＯＮ１００９には、当該指標を作成する際の圧縮演算子名が格納されている。
【０１２３】
ＩＤＦＵＮＣＴＡＧ１０１０には、当該指標を作成する際に用いたタグのＩＤが格納され、これはＩＤＴＡＧ９０１に対応する。
【０１２４】
ＩＤＦＵＮＣＡＸＩＳ１０１１には、当該指標を作成する際に用いた軸のＩＤが格納され、これはＩＤＡＸＩＳ８０１に対応する。
【０１２５】
ＩＤＷＩＤＥＴＡＢＬＥ１０１２には、当該指標がどの指標テーブルに属するかを示すＩＤが格納されている。当該指標が指標テーブルの生成途中段階の指標である場合には、ここには−１等のＩＤとして不適切な値を入れておくことで識別可能にする。
【０１２６】
テーブル情報取得部２１３によって入力テーブル群１０２および分析基本テーブル２１２の各カラムに対して指標情報を生成するときは、各カラムに対して作成された軸情報と同じ値を、ＮＡＭＥ１００２、ＵＮＩＴ１００４、ＤＢＮＡＭＥ１００５、ＴＡＢＬＥＮＡＭＥ１００６、ＴＹＰＥ１００７に対してそれぞれ格納する。また、ＩＤＶＡＬＵＥＡＸＩＳ１００３は、軸情報のＩＤＡＸＩＳ８０１を格納する。ＦＵＮＣＴＩＯＮ１００９、ＩＤＦＵＮＣＴＡＧ１０１０、ＩＤＦＵＮＣＡＸＩＳ１０１１に関しては、それぞれＮＵＬＬを格納する。ＩＤＷＩＤＥＴＡＢＬＥ１０１２には、−１を格納する。
【０１２７】
＜ユニーク軸情報テーブルの構成＞
図１１は、ユニーク軸情報テーブル２１７の構成の一例を示す図である。
【０１２８】
ユニーク軸情報テーブル２１７は、各入力テーブル２０９〜２１１および結合テーブル１０５、指標テーブル１０７等、本システムで関係する全てのテーブルがどの軸の組み合わせでユニークになるかという情報を格納するテーブルである。本明細書でテーブルが複数の軸でユニークになるという表現の表す現象は、当該テーブルの任意の行を一意に指定するために当該複数の軸によってのみ指定できるということである。これは、一般的なＲＤＭＳ（ＲＥＬＡＴＩＯＮＡＬ  ＤＡＴＡＢＡＳＥ  ＭＡＮＡＧＥＭＥＮＴ  ＳＹＳＴＥＭ）においてインデックスの種類である、プライマリキーやユニークキーが持つ属性に等しい。
【０１２９】
ユニーク軸情報テーブル２１７は、結合テーブル１０５を作成する処理であるテーブル結合処理部１０４と、作成された結合テーブル１０５から指標テーブル１０７を作成する指標作成部１０６によるシナリオ作成ステップ４０２で用いられる。実際の使用例は、各処理にて記載した通りである。具体的な格納形式を、図１７の中間テーブル１を用いて図１１にて説明する。
【０１３０】
ＤＢＮＡＭＥ１１０１は、中間テーブル１が格納されているデータベースの名前が格納されている。
【０１３１】
ＴＡＢＬＥＮＡＭＥ１１０２は、当該テーブル名が格納されている。
【０１３２】
ＩＤ＿ＵＮＩＱＵＥＡＸＩＳ＿ＣＯＭＢ１１０３は、当該テーブルをユニークにする軸の組み合わせが複数あった場合にそれらを識別するための識別子である。この例となるテーブルの中間テーブル１では、時刻と顧客ＩＤとエリアの組み合わせにおいてユニークとなり、これ以外の組み合わせではユニークにならないので、当該テーブルをユニークにする組み合わせは一つである。
【０１３３】
ＳＥＱ＿ＩＮ＿ＵＮＩＱＵＥＩＮＤＥＸ１１０４は、当該ユニーク軸の組み合わせの中で、この行の示す軸が何番目であるかという順番が格納される。本ユニーク軸情報テーブル２１７は、テーブルをユニークにする軸の組み合わせを格納するため、組み合わせの順序を表す当該列は必須ではないが、順序が分かることによって、この情報は本システムにおいて必須の情報ではないが、指標作成部１０６による圧縮ＳＱＬ文生成ステップ６０１でより高速に実行可能なＳＱＬ文を作成可能になる。詳細は、圧縮ＳＱＬ文生成ステップ６０１にて説明した通りである。また、テーブル結合処理部１０４の処理過程で同じ意味を持つ軸が生じることがある。この場合は、同じ順番の番号をＳＥＱ＿ＩＮ＿ＵＮＩＱＵＥＩＮＤＥＸ１１０４に格納して、異なるＩＤＡＸＩＳ１１０５を格納する。同じ意味を持つ軸に関しては、テーブル結合処理部１０４にて説明した通りである。
【０１３４】
ＩＤＡＸＩＳ１１０５には、当該テーブルをユニークにする軸のＩＤが格納される。中間テーブル１の例では、時刻、顧客ＩＤ、エリアの３つの軸でユニークになるので、その軸を示すＩＤであるＩＤＡＸＩＳ８０１を格納する。この例では、結合テーブルを作る過程で店員位置テーブルの店員時刻と分析時刻テーブルの時刻が同じ意味を持つようになっているので、時刻に関しては２行にわたっていることに注意する。
【０１３５】
テーブル情報取得部２１３によって入力テーブル群１０２および分析基本テーブル２１２の全てのテーブルに関してユニーク軸情報を取得する際には、ＲＤＭＳに登録されている各テーブルのインデックス情報を取得する。つまり、あるデータベースＡのテーブルＡに関して主キーがカラムＡ、カラムＢに対して設定されているならば、当該テーブルのユニーク軸情報は｛”データベースＡ”、”テーブルＡ”，”１”，”１”，”カラムＡを表す軸のＩＤＡＸＩＳ”｝、｛”データベースＡ”、”テーブルＡ”，”１”，”２”，”カラムＢを表す軸のＩＤＡＸＩＳ”｝という二つのレコードがユニーク軸情報テーブル２１７に格納される。このとき、ＳＥＱ＿ＩＮ＿ＵＮＩＱＵＥＩＮＤＥＸ１１０４の順番の番号は主キーに設定されている順番を踏襲しておくことに注意する。なぜならば、主キーの順番はデータベースに対して複合インデックスが張られる順番と一致しているため、ＳＱＬ文を作成する場合に当該順番を遵守して作成すると、検索にインデックスを用いることが可能になり高速化されるからである。
【０１３６】
＜指標テーブルリストの構成＞
図１２は、指標テーブルリスト２１９の構成の一例を示す図である。
【０１３７】
指標テーブルリスト２１９は、作成された指標テーブル１０７がどの軸においてユニークになっているかを管理するためのリストである。
【０１３８】
ＩＤＷＩＤＥＴＡＢＬＥ１２０１は、作成された指標テーブル１０７のＩＤであり、指標テーブル毎にユニークな値が割り当てられる。
【０１３９】
ＩＤＡＸＩＳ１２０２は、作成された指標テーブル１０７がどの軸によってユニークになるかを示すＩＤであり、これは軸情報テーブル２１４のＩＤＡＸＩＳ８０１に対応している。指標テーブル１０７が複数の軸の組み合わせでユニークになる場合は、図１２のＩＤＷＩＤＥＴＡＢＬＥ１２０１が３の例で示すように、複数行にわたってＩＤＡＸＩＳ１２０２を記述することも可能である。
【０１４０】
＜ユーザ定義テーブル関係情報の構成＞
図１３は、ユーザ定義テーブル関係情報１０１の構成の一例を示す図である。
【０１４１】
ユーザ定義テーブル関係情報１０１は、ユーザが入力テーブル群１０２を一つの結合テーブル１０５に結合するために用いる。本情報の構成要素を具体的に説明する。一つの結合操作が一行に相当し、一回の結合操作によって二つのテーブルが一つのテーブルに結合される。これらの操作を繰り返し行うことで、複数のテーブルを一つの結合テーブルに変換することが可能となる。詳細なフローチャートは、図３にて説明した通りである。
【０１４２】
ＧＥＮＥＲＡＴＥ  ＴＡＢＬＥ１３０１には、一回の結合操作によって作成されたテーブルの名称が記述されている。
【０１４３】
ＯＢＪＥＣＴ  ＴＡＢＬＥ  １（１３０２）、およびＯＢＪＥＣＴ  ＴＡＢＬＥ  ２（１３０３）には、一回の結合操作によって結合されるテーブルの名称が記述されている。
【０１４４】
ＣＯＮＤＩＴＩＯＮ１３０４には、ＯＢＪＥＣＴ  ＴＡＢＬＥ  １（１３０２）、およびＯＢＪＥＣＴ  ＴＡＢＬＥ  ２（１３０３）を結合するための条件が記述されている。これらの条件の使用方法については、図３の説明に詳細を記載した通りである。
【０１４５】
本ユーザ定義テーブル関係情報１０１は、ユーザが指定する形をとるが、その入力手段については限定されるものではない。つまり、テキストファイルやＣＳＶファイルという形式でユーザが編集したファイルそのものであることも可能であるし、何らかのＷＥＢアプリもしくはスタンドアローンのアプリのユーザインタフェースによって、ユーザから情報を入力させることも可能である。
【０１４６】
＜ユーザ定義分析軸情報の構成＞
図１４は、ユーザ定義分析軸情報１０３の構成の一例を示す図である。
【０１４７】
本システムでは、最終的に出力される指標テーブル１０７はユーザが指定した軸でユニークになるように生成される。例えば、ユーザが本システムで生成される指標テーブル１０７を用いて顧客毎の分析を行いたい場合には、指標テーブル１０７は顧客ＩＤ軸でユニークとなるように生成される。ユーザ定義分析軸情報１０３は、最終的に生成される指標テーブル１０７をどの軸でユニークにするかをユーザから取得した情報である。情報取得の方法は、ユーザ定義分析軸情報１０３が格納されているデータベースに対して人が直接変更することも可能であるし、ファイルを読み込んで変更することも可能である。また、何らかのユーザインタフェースを用いて情報取得を行うことも可能である。
【０１４８】
最終的に出力される指標テーブル１０７は、その指標テーブルをユニークにする軸に応じて複数存在することも可能である。また、最終的に出力される指標テーブル１０７は、複数の軸の組み合わせでユニークにすることも可能である。例えば、１時間毎の各人のデータを独立に扱って本システムの後に分析したい場合には、時間軸と顧客ＩＤの組み合わせでユニークになる指標テーブル１０７を生成することも可能である。図１４を用いて具体的な格納形式の一例を示す。
【０１４９】
ＩＤＷＩＤＥＴＡＢＬＥ１４０１には、ユーザが指定した指標テーブル１０７のＩＤが格納される。これは、指標テーブル１０７をユニークにすることができれば、単純に連番を格納することも可能である。
【０１５０】
ＮＡＭＥ１４０２には、ユーザが指定した指標テーブル１０７をユニークとする軸の名称が可能されている。これは、入力テーブル群１０２のうちの一つのテーブルの一つのカラムに相当する。
【０１５１】
ＤＢＮＡＭＥ１４０３には、ユーザが指定した指標テーブル１０７をユニークとする軸が含まれているテーブルが含まれているデータベース名が格納されている。
【０１５２】
ＴＡＢＬＥＮＡＭＥ１４０４には、ユーザが指定した指標テーブル１０７をユニークとする軸が含まれているテーブルの名称が格納されている。
【０１５３】
＜シナリオ群テーブルの構成＞
図１５は、シナリオ群テーブル４０３の構成の一例を示す図である。
【０１５４】
シナリオ群テーブル４０３は、指標作成部１０６によるシナリオ作成ステップ４０２にて作成され、シナリオ実行ステップ４０４にてテーブルを圧縮する操作を行う際の圧縮順序を格納したテーブルである。
【０１５５】
ＳＣＥＮＡＲＩＯＩＤ１５０１は、各シナリオを識別するためのＩＤである。これは、ユニークとなれば連番を用いることも可能である。
【０１５６】
ＣＯＭＰＲＥＳＳＩＯＮ＿ＡＸＩＳＳ１５０２は、各シナリオにおいてどの軸から順番に圧縮するかが格納されている。図１７のシナリオの例においては、店員ＩＤ、時刻、エリアと順番に圧縮されて、最後に顧客ＩＤが残るので、この場合は「店員ＩＤ、時刻、エリア、顧客ＩＤ」と格納される。最後の指標テーブル１０７がエリアと顧客ＩＤ等の複数の軸でユニークになる場合は、「店員ＩＤ、時刻、（エリア、顧客ＩＤ）」と括弧を用いて表現する。
【０１５７】
＜入力テーブル群から指標テーブルを作成するまでの処理＞
図１６は、入力テーブル群１０２から指標テーブル１０７を作成するまでの処理の一例を示す図である。図１６では、具体的なテーブルを用いて、本システムによって指標テーブル１０７が作成されるまでに入力テーブル群１０２がどのように変形されるかを示している。
【０１５８】
この例では、入力テーブル群１０２は二つの入力テーブル（ＰＯＳテーブル１６０１、店員位置テーブル１６０２）によって構成されており、分析基本テーブル２１２としては、時刻と時間というカラムを持つ分析時刻テーブル１６０３によって構成されている。ＰＯＳテーブル１６０１には、顧客のＩＤ、顧客が入店した時刻、退店した時刻、購入した金額が格納されている。また、店員位置テーブル１６０２には、どの店員がいつ、どこにいたかという情報が店員時刻、店員ＩＤ、エリアというカラムにて格納されている。これらの入力テーブルから顧客毎の指標を生成したい例を考える。
【０１５９】
これら３つのテーブルが、テーブル結合処理部１０４によって一つの結合テーブル１０５に変形される。具体的なテーブル結合処理部１０４の中身に関しては、図３において説明した通りであり、この処理の結果によって、元々は３つのばらばらのテーブルであった入力テーブル群１０２および分析基本テーブル２１２が一つの関係付けられたテーブルに変形できていることが分かる。結合テーブル１０５は、指標作成部１０６によって指標テーブル１０７に変形される。指標作成部１０６の具体的な中身、および指標テーブル１０７で作成される指標に関しては、図４にて詳細を説明した通りであり、ここで指標テーブル１０７が顧客ＩＤでユニークになっている、つまり、顧客毎の指標が生成されていることが分かる。
【０１６０】
＜結合テーブルから指標テーブルまでの変形＞
図１７は、指標作成部１０６によるシナリオ実行ステップ４０４のあるシナリオでの作成の一例を示す図である。図１８は、シナリオの違いによる圧縮演算のイメージの一例を示す図である。
【０１６１】
図１７には、あるシナリオにおける結合テーブル１０５から指標テーブル１０７までの具体的な変形の例を示している。結合テーブル１０５では、｛顧客ＩＤ、時刻／店員時刻、店員ＩＤ、エリア｝の組み合わせでユニークになっているが、このユニーク軸の組み合わせから店員ＩＤ軸を取り除いて中間テーブル１を作成する。このとき、｛顧客ＩＤ、時刻／店員時刻、店員ＩＤ、エリア｝の４つの組み合わせではユニークになっていた行のなかで、｛顧客ＩＤ、時刻／店員時刻、エリア｝の３つの組み合わせではユニークにならなくなる行が発生する。図１７の例では、結合テーブル１０５の中で｛時刻、顧客ＩＤ、エリア、店員ＩＤ｝が｛１０：１１、１０００、エリアＢ、２０００｝と｛１０：１１、１０００、エリアＢ、２００１｝という行は４つの軸の組み合わせではユニークになるが、店員ＩＤ軸がユニーク軸から取り除かれると｛時刻、顧客ＩＤ、エリア｝が｛１０：１１、１０００、エリアＢ｝と｛１０：１１、１０００、エリアＢ｝になり、ユニーク性が保たれなくなる。そのために、｛時刻、顧客ＩＤ、エリア｝が｛１０：１１、１０００、エリアＢ｝の二つの行をまとめて一つの行に圧縮する演算を行う。この圧縮のことを、本明細書では「店員ＩＤ軸で圧縮する」と定義する。
【０１６２】
このとき、二つの行を一つの行にするために、圧縮のための演算を３つのユニーク軸以外の全てのカラム（指標）に対して行う必要がある。例えば、店員ＩＤという指標に関しては、この指標のデータが二つの行のなかで何個存在していたかという”ＣＯＵＮＴ”という圧縮演算子が可能であり、今回の場合は二つの行をまとめているのでＣＯＵＮＴ（店員ＩＤ）カラムには２が格納されている。これらの圧縮演算に関しては、意味のあるものは全て行い圧縮による情報量の損失を少なくする。ここで、意味のない圧縮演算とは、例えば文字列型に対して最小値演算子”ＭＩＮ”等が例として挙げられる。圧縮演算子の種類、およびデータ型に対する圧縮演算子の意味の有り無しに関しては図１９にて説明する。
【０１６３】
上記のようにして、再び中間テーブル１（１７０１）に関して、時刻／店員時刻軸で圧縮することによって｛顧客ＩＤ、エリア｝でユニークとなる中間テーブル２（１７０２）が生成される。さらに、中間テーブル２（１７０２）に関して、エリア軸で圧縮することによって｛顧客ＩＤ｝でユニークとなる指標テーブル１６０５が作成される。ここで、各圧縮過程において、各指標に対して可能な圧縮演算を行うと説明したが、指標の生成方法にはタグ情報を用いてバリエーションを増やす方法もある。つまり、図１７の中間テーブル２から指標テーブル１０７を作成した例に示すように中間テーブル２の各指標に対して圧縮演算を行う際に、圧縮する軸のタグによって場合分けを行うという方法である。この操作を行うことによって、エリア軸で圧縮したあとにもエリアの情報を残すことが可能になる。この操作の詳細に関しては、指標作成部１０６による圧縮ＳＱＬ文生成ステップ６０１にて説明した通りである。
【０１６４】
以上の図１７における結合テーブル１０５から指標テーブル１０７までの圧縮演算のイメージが、図１８に示すシナリオ１の例である。また、図１８において、シナリオ１と異なるシナリオ２の例では、結合テーブル１０５から時刻軸で圧縮して中間テーブル１を作成し、さらに、中間テーブル１から店員ＩＤで圧縮して中間テーブル２を作成し、そして、中間テーブル２からエリアで圧縮して指標テーブル１０７を作成する。
【０１６５】
＜圧縮演算テーブルの構成＞
図１９は、圧縮演算テーブルの構成の一例を示す図である。本明細書では、図１９にある８つの演算子を定義する。
【０１６６】
ＡＶＧは、複数の行をまとめるときに、対象とするカラムの複数行の平均値をとる。
【０１６７】
ＳＵＭは、複数の行をまとめるときに、対象とするカラムの複数行の合計値をとる。
【０１６８】
ＭＩＮ／ＭＡＸは、複数の行をまとめるときに、対象とするカラムの複数行の最小値／最大値をとる。
【０１６９】
ＣＯＵＮＴは、複数の行をまとめるときに、複数行のなかで対象とするカラムにデータが存在した行数を数える。
【０１７０】
ＡＳＩＳは、単一の行をまとめるときに、対象とするカラムの値をとる。
【０１７１】
ＵＮＩＱＵＥＮＵＭは、複数の行をまとめるときに、複数行のなかで対象とするカラムのデータの固有な値の数を数える。
【０１７２】
ＥＸＩＳＴは、複数の行をまとめるときに、複数行のなかで対象とするカラムにデータが存在したら１とし、存在しなかったら０とする。
【０１７３】
これらの演算子は、それぞれ対象とするカラム（指標）のデータ型によって、その演算に意味があるかどうかを判定することができる。図１９の表１９０１は、一般的なＲＤＭＳ内で定義されているカラムの型に対して、上記の８つの演算がそれぞれ意味を持っているかを判定するための表である。表内で、○が記されている箇所は演算に意味があり、−が記されている箇所は演算に意味がない。
【０１７４】
＜実施の形態１の効果＞
以上のように、本実施の形態におけるデータ処理システムおよびデータ処理方法によれば、ユーザ定義テーブル関係情報１０１、入力テーブル群１０２、ユーザ定義分析軸情報１０３、テーブル結合処理部１０４、指標作成部１０６などを有することで、元のデータの情報量の損失を抑え、複数のテーブルをまとめてユーザが望む分析軸に変形して出力することができる。より詳細には、以下のような効果を得ることができる。
【０１７５】
（１）テーブル結合処理部１０４、指標作成部１０６を有することで、テーブル結合処理部１０４は、入力テーブル群１０２のデータを自動で結合することができる。そして、指標作成部１０６は、結合テーブル１０５のデータに対して、特定のデータ中のカラムに対してユニークとなるようにデータを変換することができる。
【０１７６】
（２）ユーザ定義テーブル関係情報１０１を有することで、テーブル結合処理部１０４は、ユーザ定義テーブル関係情報１０１を用いて、入力テーブル群１０２のデータを結合する処理を行うことができる。
【０１７７】
（３）ユーザ定義分析軸情報１０３を有することで、指標作成部１０６は、ユーザ定義分析軸情報１０３を用いて、結合テーブル１０５のデータに対して、ユーザが定義した特定のデータ中のカラムに対してユニークとなるようにデータを変換することができる。
【０１７８】
（４）テーブル情報取得部２１３を有することで、テーブル情報取得部２１３は、入力テーブル群１０２のデータから、データのユニークインデックスを示すユニーク軸情報テーブル２１７を取得することができる。そして、指標作成部１０６は、テーブル情報取得部２１３で取得したユニーク軸情報テーブル２１７とユーザ定義テーブル関係情報１０１とから、結合テーブル１０５のデータがどのカラムの組み合わせでユニークになるかを特定し、この特定したユニークになるカラムを一つずつ削減することで、ユーザが定義したカラムでユニークとなるようにデータを変換することができる。
【０１７９】
（５）指標作成部１０６は、ユニークになるカラムを一つずつ削減する過程において、もとのカラムに対して、カラムの複数行の平均値をとる、カラムの複数行の合計値をとる、カラムの複数行の最小値／最大値をとる、カラムにデータが存在した行数を数える、カラムの値をとる、カラムのデータの固有な値の数を数える、および、カラムにデータが存在したら１とし存在しなかったら０とする、の少なくとも一つの圧縮演算を行い、データを変換する際の情報量の損失を抑えることができる。
【０１８０】
（６）指標作成部１０６は、圧縮演算を行うかどうかを、対象となるカラムのデータ型に応じて動的に変更することができる。
【０１８１】
（７）指標作成部１０６は、圧縮演算を行う際に、ユニークになるカラムを一つずつ削減する過程において削減されたカラムの値に応じて圧縮演算を行うことができる。
【０１８２】
［実施の形態２］
本実施の形態２におけるデータ処理システムおよびデータ処理方法について、図２０を用いて説明する。
【０１８３】
＜データ処理システムの詳細構成＞
図２０は、本実施の形態におけるデータ処理システムの詳細構成の一例を示すブロック図である。図２０は前述した実施の形態１の図２に対応するが、実施の形態１と異なる点は、作成された指標テーブル１０７に対して分析を行う相関解析部２００１と、相関をとる対象の指標テーブル１０７と指標テーブル１０７中の目的変数を選択する目的指標選択部２００２と、相関分析結果を出力する相関結果出力部２００３を備えている点である。
【０１８４】
目的指標選択部２００２では、まず、今回の分析を行う指標テーブル１０７を選択する。指標テーブル１０７の選択候補は、ユーザ定義分析軸情報１０３で定義した分だけ存在する。図１４のユーザ定義分析軸情報１０３を例にすると、分析軸として、顧客ＩＤ毎、時間毎、エリア毎、顧客ＩＤ×時間毎の４つの選択肢が存在するので、この中から一つの分析軸を選択する。次に、指標情報テーブル２１６の中から当該分析軸のＩＤＷＩＤＥＴＡＢＬＥ１４０１と同じＩＤＷＩＤＥＴＡＢＬＥ１０１２を持つ指標を検索し、その中から今回分析の対象とする目的指標を選択する。これらの選択は、設定ファイルなどで予め決めておくことも可能であるし、ＣＵＩやＧＵＩを用いてインタラクティブに行うことも可能である。
【０１８５】
相関解析部２００１では、目的指標選択部２００２で選択された指標テーブル１０７内で選択された目的指標と相関する他の指標を分析する。ただし、ここでの相関は、１対１の相関分析だけでなく、１対多の重回帰分析や、非線形のロジスティック回帰や、一般化線形モデル等も含む。
【０１８６】
相関結果出力部２００３では、相関解析部２００１で分析された結果が出力される。出力の形式としては、テキスト分で回帰式や決定係数、有意確率を表示することも可能である。重回帰分析の場合は、相関ネットワーク図にして１対多の関係を可視化することも可能である。
【０１８７】
＜実施の形態２の効果＞
以上のように、本実施の形態におけるデータ処理システムおよびデータ処理方法によれば、相関解析部２００１、目的指標選択部２００２、相関結果出力部２００３を備えていることで、上記実施の形態１と異なる効果として、以下のような効果を得ることができる。例えば、相関解析部２００１は、指標テーブル１０７内の目的変数を目的指標選択部２００２で選ぶことで、この目標変数と相関する他の変数を分析し、この他の変数とのモデルを作成して相関結果出力部２００３から出力することができる。
【０１８８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１８９】
例えば、前記実施の形態においては、データ処理システムおよびデータ処理方法を例に説明したが、本発明はこれに限定されるものではなく、データ処理装置についても適用可能である。このデータ処理装置は、一つの装置筐体内に、図１や図２、図２０に示すような構成要素を収納することにより同様に実現することができる。
【符号の説明】
【０１９０】
１０１…ユーザ定義テーブル関係情報、１０２…入力テーブル群、１０３…ユーザ定義分析軸情報、１０４…テーブル結合処理部、１０５…結合テーブル、１０６…指標作成部、１０７…指標テーブル、
２０８…入力テーブル関係情報、２０９…入力テーブル１、２１０…入力テーブル２、２１１…入力テーブル３、２１２…分析基本テーブル、２１３…テーブル情報取得部、２１４…軸情報テーブル、２１５…タグ情報テーブル、２１６…指標情報テーブル、２１７…ユニーク軸情報テーブル、２１８…分析基本テーブル追加作成部、２１９…指標テーブルリスト、
２００１…相関解析部、２００２…目的指標選択部、２００３…相関結果出力部。
【図１】
0006045706.tif 000002
【図２】
0006045706.tif 000003
【図３】
0006045706.tif 000004
【図４】
0006045706.tif 000005
【図５】
0006045706.tif 000006
【図６】
0006045706.tif 000007
【図７】
0006045706.tif 000008
【図８】
0006045706.tif 000009
【図９】
0006045706.tif 000010
【図１０】
0006045706.tif 000011
【図１１】
0006045706.tif 000012
【図１２】
0006045706.tif 000013
【図１３】
0006045706.tif 000014
【図１４】
0006045706.tif 000015
【図１５】
0006045706.tif 000016
【図１６】
0006045706.tif 000017
【図１７】
0006045706.tif 000018
【図１８】
0006045706.tif 000019
【図１９】
0006045706.tif 000020
【図２０】
0006045706.tif 000021