(57)【要約】【課題】複数の選択条件の属性が異なる場合にも、分析対象のレコードが格納されるテーブルへのアクセス回数を削減して分析処理を高速化すること。【解決手段】複数クエリ生成部５１が、属性の異なる複数の選択条件の指定を受け付け、該選択条件ごとにクエリを生成し、クエリ木処理部５２２が、記憶部４に格納されるレコードごとに、複数クエリ生成部５１によって生成された複数のクエリに対応する各選択条件に合致するかをそれぞれ判定し、選択条件ごとに、該選択条件に合致するレコードを分析する。【選択図】図１
2017037511.tif 000002
【特許請求の範囲】
【請求項１】
属性の異なる複数の選択条件の指定を受け付け、該選択条件ごとにクエリを生成する生成部と、
記憶部に格納されるレコードごとに、前記生成部によって生成された複数のクエリに対応する各選択条件に合致するかをそれぞれ判定し、前記選択条件ごとに、該選択条件に合致するレコードを分析する分析部と、
を備えることを特徴とする分析装置。
【請求項２】
前記生成部によって生成されたクエリから、前記各選択条件で指定される属性と属性値とをノードとするクエリ木を構築する構築部をさらに備え、
前記分析部は、前記記憶部に格納されるレコードごとに、前記構築部によって構築されたクエリ木の選択条件に合致するかをそれぞれ判定し、前記選択条件ごとに、該選択条件に合致するレコードを分析することを特徴とする請求項１に記載の分析装置。
【請求項３】
前記分析部は、前記レコードごとの処理が前記記憶部の全てのレコードに対して完了する前に、各選択条件に合致するレコードの分析結果と前記記憶部の全てのレコードの分析結果との乖離の度合いを算出し、該乖離の度合いが最大となり得ない選択条件について、以降のレコードに対する処理を中止することを特徴とする請求項１または２に記載の分析装置。
【請求項４】
前記分析部は、前記記憶部の全てのレコードの統計情報と、前記レコードごとの処理が前記記憶部の全てのレコードに対して完了する前に取得した、各選択条件に合致する処理済みのレコードの統計情報とを用いて、各選択条件に合致する未処理のレコードの統計情報を導出し、該未処理のレコードの統計情報を用いて乖離の度合いを算出することを特徴とする請求項３に記載の分析装置。
【請求項５】
分析装置で実行される分析方法であって、
属性の異なる複数の選択条件の指定を受け付け、該選択条件ごとにクエリを生成する生成工程と、
記憶部に格納されるレコードごとに、前記生成工程において生成された複数のクエリに対応する各選択条件に合致するかをそれぞれ判定し、前記選択条件ごとに、該選択条件に合致するレコードを分析する分析工程と、
を含んだことを特徴とする分析方法。
【請求項６】
属性の異なる複数の選択条件の指定を受け付け、該選択条件ごとにクエリを生成する生成ステップと、
記憶部に格納されるレコードごとに、前記生成ステップにおいて生成された複数のクエリに対応する各選択条件に合致するかをそれぞれ判定し、前記選択条件ごとに、該選択条件に合致するレコードを分析する分析ステップと、
をコンピュータに実行させるための分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分析装置、分析方法、および分析プログラムに関する。
【背景技術】
【０００２】
近年、ビッグデータと呼ばれる大量のデータから有益な情報を抽出する技術の重要性が増してきている。例えば、販売データの地域や時期の影響を考慮して販売戦略を決める場合に、グループ化演算（group-by）と集約関数（aggregation）とにより表わされる分析命令に対し、全体データの分析結果からの乖離が大きい分析結果を生み出す部分データが有益である場合が多い。
【０００３】
ここで、部分データとは、属性Ａの値がｌである場合に、Ａ＝ｌで表される選択条件により選択処理を行うクエリにより、全体データから抽出されるレコード群を意味する。また、乖離が大きい分析結果を生み出す部分データとは、次のように定義される。すなわち、全体データであるテーブルＤに対して分析命令ｑを実行した結果をｑ（Ｄ）と表し、テーブルＤの任意の部分データｖ（Ｄ）に対して分析命令ｑを実行した結果をｑ＊ｖ（Ｄ）と表す。この場合に、乖離が大きい分析結果を生み出す部分データとは、ｑ（Ｄ）とｑ＊ｖ（Ｄ）との乖離が最大となるｖ（Ｄ）を意味し、次式（１）のように定義される。
【０００４】
【数１】
2017037511.tif 000003
【０００５】
ここで、Ｕ（Ａ，Ｂ）とは、ＡとＢとの乖離を算出する関数である。このＵ（Ａ，Ｂ）は、入力データＤに対して差分計算が可能な関数とする。例えば、ユークリッド距離は、次式（２）に示すように、入力データをＤ、差分入力データをΔｄとしたときに、ＤとΔｄとを分配可能、すなわち、交換法則と結合法則とが成立する関数であり、乖離を算出する関数として利用することができる。
【０００６】
【数２】
2017037511.tif 000004
【０００７】
上記のように表される乖離が大きい分析結果を生み出す部分データを特定するためには、任意の部分データｖ（Ｄ）に対する分析命令ｑについて、ｑ（Ｄ）とｑ＊ｖ（Ｄ）との乖離の度合いを算出する必要があるが、これには膨大な時間を要する。
【０００８】
従来、複数の選択処理を行うクエリを実行する場合には、各クエリがテーブルＤにアクセスするため、実行するクエリ件数の増加に伴い、線形に実行時間が増加するという問題があった。そこで、複数の選択処理の選択条件の属性Ａが同一である場合に、選択処理を共有化してテーブルに対するアクセス回数を削減する技術が知られている。例えば、order  by句を用いて選択処理で指定される選択条件の属性Ａが同一である複数の選択処理のクエリを１つのクエリに等価変換して、データベース管理システム（ＤＢＭＳ）を用いてクエリの処理が行われている（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】水野  陽平，岸田  吉弘，荒瀬  由紀，本庄  利守，鬼塚  真，「有用性が高い分析結果を生み出す部分データの効率的探索」，2015年，DEIM  Forum  2015  D6-4
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、複数の選択処理で指定される各選択条件の属性Ａが異なる場合には、選択処理を共有化することができず、テーブルに対するアクセス回数を削減することができなかった。
【００１１】
本発明は、上記に鑑みてなされたものであって、複数の選択条件の属性が異なる場合にも、分析対象のレコードが格納されるテーブルへのアクセス回数を削減して分析処理を高速化することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明に係る分析装置は、属性の異なる複数の選択条件の指定を受け付け、該選択条件ごとにクエリを生成する生成部と、記憶部に格納されるレコードごとに、前記生成部によって生成された複数のクエリに対応する各選択条件に合致するかをそれぞれ判定し、前記選択条件ごとに、該選択条件に合致するレコードを分析する分析部と、を備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複数の選択条件の属性が異なる場合にも、分析対象のレコードが格納されるテーブルへのアクセス回数を削減して分析処理を高速化することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の一実施形態に係る分析装置の概略構成を示す模式図である。
【図２】図２は、本実施形態の分析処理の対象のテーブルのデータ構成を例示する図である。
【図３】図３は、本実施形態のクエリ木を例示する模式図である。
【図４】図４は、本実施形態の複数選択処理を説明するための説明図である。
【図５】図５は、本実施形態のクエリ木処理部の機能を説明するための説明図である。
【図６】図６は、本実施形態の部分データの分析結果と全体データの分析結果との乖離の度合いを説明するための説明図である。
【図７】図７は、本実施形態の複数選択処理が未処理のレコード群における販売金額のヒストグラムを例示する図である。
【図８】図８は、本実施形態の複数選択処理が未処理のレコード群における顧客年齢のヒストグラムを例示する図である。
【図９】図９は、本実施形態の複数選択処理手順を示すフローチャートである。
【図１０】図１０は、本実施形態の乖離判定処理手順を示すフローチャートである。
【図１１】図１１は、分析プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１６】
［分析装置］
図１は、本実施形態に係る分析装置の概略構成を示す模式図である。分析装置１は、ワークステーションやパソコン等の汎用コンピュータで実現され、入力部２と、出力部３と、記憶部４と、制御部５とを備える。
【００１７】
入力部２は、キーボードやマウス等の入力デバイスを用いて実現され、データ分析者による入力操作に対応して、制御部５に対して処理開始などの各種指示情報を入力する。出力部３は、液晶ディスプレイなどの表示装置、プリンター等の印刷装置、情報通信装置等によって実現され、後述する分析処理の結果等をデータ分析者に対して出力する。
【００１８】
記憶部４は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現され、後述する分析処理の対象のテーブルＤを格納する。記憶部４は、ＬＡＮやインターネットなどの電気通信回線を介して制御部５と通信する構成としてもよい。
【００１９】
図２は、テーブルＤのデータ構成を例示する図である。図２に示すように、テーブルＤでは、各レコードについて、複数の属性Ａの各属性値ｌが特定されている。図２には、受注のテーブルＤが示されており、属性Ａとして、受注番号、販売金額、受注年月、店舗名、商品ジャンル、顧客年齢、および顧客性別が含まれている。そして、例えば受注番号１のレコードについて、販売金額が８０００円、受注年月が２０１５年４月、店舗名が大阪、商品ジャンルが衣服、顧客年齢が４５、顧客性別が男性であることが例示されている。
【００２０】
制御部５は、ＣＰＵ（Central  Processing  Unit）等の演算処理装置がメモリに記憶された処理プログラムを実行することにより、図１に例示するように、複数クエリ生成部５１、複数クエリ実行部５２として機能する。
【００２１】
複数クエリ生成部５１は、属性の異なる複数の選択条件の指定を受け付け、該選択条件ごとにクエリを生成する。具体的に、複数クエリ生成部５１は、データ分析者が入力した分析命令の対象のテーブルＤの属性Ａに基づいて、属性を特定する選択条件により部分データを取得する選択処理を実行する複数のクエリを生成する。
【００２２】
例えば、次式（３）に例示する複数の選択条件に対応して、複数のクエリが生成される。本実施形態では、顧客性別を男性とする選択条件１に合致する部分データを取得するためのクエリ、顧客年齢を４０代とする選択条件２に合致する部分データを取得するためのクエリ、商品ジャンルを衣服とする選択条件３に合致する部分データを取得するためのクエリ、商品ジャンルを雑貨とする選択条件４に合致する部分データを取得するためのクエリ等が生成される。
【００２３】
【数３】
2017037511.tif 000005
【００２４】
複数クエリ実行部５２は、クエリ木構築部５２１と、クエリ木処理部５２２とを含む。クエリ木構築部５２１は、複数クエリ生成部５１によって生成されたクエリから、各選択条件で指定される属性Ａと属性値ｌとをノードとするクエリ木を構築する。具体的に、クエリ木構築部５２１は、複数クエリ生成部５１が生成した複数のクエリを、クエリ木として、指定された選択条件をキー情報としてキャッシュメモリに記憶する。
【００２５】
図３は、クエリ木の構成を例示する図である。図３に示すように、クエリ木では、各選択条件が属性Ａとその属性値ｌとを接続するパスで表されている。図３には、顧客性別を男性とする選択条件１と、顧客年齢を４０代とする選択条件２と、商品ジャンルを衣服とする選択条件３と、商品ジャンルを雑貨とする選択条件４との４つの選択条件からなるクエリ木が例示されている。
【００２６】
クエリ木処理部５２２は、複数選択処理と、乖離判定処理とを含む分析処理を行う。複数選択処理では、クエリ木処理部５２２が、記憶部４に格納されるテーブルＤのレコードごとに、複数クエリ生成部５１によって生成された複数のクエリに対応する各選択条件に合致するかをそれぞれ判定し、選択条件ごとに、該選択条件に合致するレコードに対する分析命令ｑを実行する。これにより、各選択条件に合致するレコードの集合である部分データの分析結果を取得する。
【００２７】
具体的に、複数選択処理では、クエリ木処理部５２２が、記憶部４の分析命令ｑの対象のテーブルＤを参照し、レコードごとに、クエリ木の選択条件と一致する属性Ａの属性値ｌがあるか否かを確認する。一致する場合に、クエリ木処理部５２２は、同じ属性値ｌをもつ複数選択処理が処理済みのレコードに対して分析命令ｑを実行し、当該レコードについての分析結果を適当なメモリ領域に記憶させる。クエリ木処理部５２２は、以上の処理をテーブルＤの全レコードについて行う。
【００２８】
ここで、図２〜５を参照して、例えば、分析命令ｑが次式（４）で表される場合、すなわち、受注のテーブルＤについて、受注年月ごとに販売金額の合計を算出することである場合について説明する。
【００２９】
【数４】
2017037511.tif 000006
【００３０】
この場合に、図２に示した受注のテーブルＤのうち、受注番号１のレコードについて、図３に示したクエリ木の選択条件１〜３に一致する。そこで、クエリ木処理部５２２は、次式（５）に示すように、クエリ木の選択条件１〜３について、分析命令ｑを実行し、２０１５年４月の販売金額に８０００円を計上して販売金額の合計を８０００円とする。そして、クエリ木処理部５２２は、図４に例示するように、この分析結果をクエリ木のパスすなわち該当する選択条件１〜３のそれぞれに対応づけて記憶させる。
【００３１】
【数５】
2017037511.tif 000007
【００３２】
次に、受注番号２のレコードについて属性Ａの値ｌを確認すると、図３に示したクエリ木の選択条件１〜４のいずれにも一致しない。そこで、検索部５２２は、受注番号２のレコードについては検索から外し、次のレコードに処理を移す。
【００３３】
次に、受注番号３のレコードについて属性Ａの値ｌを確認すると、図３に示したクエリ木の選択条件１にのみ一致する。そこで、クエリ木処理部５２２は、次式（６）に示すように、クエリ木の選択条件１についてのみ分析命令ｑを実行し、２０１５年４月の販売金額に４０００円を計上して販売金額の合計を１２０００円とする。そして、クエリ木処理部５２２は、図５に例示するように、この分析結果をクエリ木のパスすなわち該当する選択条件１と対応づけて記憶させる。なお、クエリ木の選択条件２，３については、２０１５年４月の販売金額の合計は８０００円のままとしている。
【００３４】
【数６】
2017037511.tif 000008
【００３５】
このように、複数選択処理によれば、クエリ木処理部５２２は、テーブルＤのレコードごとに、複数の属性Ａの異なる選択条件により指定された複数の選択処理のクエリを一度に実行した後に分析命令ｑを実行し、各選択条件に合致する部分データの分析結果を得る。これにより、分析処理を高速化することができる。
【００３６】
乖離判定処理では、クエリ木処理部５２２が、上記したレコードごとの複数選択処理がテーブルＤの全てのレコードに対して完了する前に、各選択条件に合致する部分データの分析結果と全体データの分析結果との乖離の度合いを算出し、該乖離の度合いが最大となり得ない選択条件について、以降のレコードに対する複数選択処理を中止する。
【００３７】
ここで、図６を参照して、部分データの分析結果と全体データの分析結果との乖離の度合いについて説明する。図６には、上記式（３）に示した選択条件１〜３に対応する部分データの上記式（４）に示した分析命令ｑを実行した分析結果の、テーブルＤの全体データの分析結果からの乖離度合いすなわちユークリッド距離が示されている。図６のｘ軸は受注年月を示し、ｙ軸は正規化された販売金額を示す。
【００３８】
ここで、全体データの分析結果と選択条件１の部分データの分析結果とのユークリッド距離は、各月のユークリッド距離の合計で表される（上記式（２）参照）。また、各月のユークリッド距離は、各月の正規化された販売金額の差で表される。
【００３９】
図６において、各月の全商品の正規化された販売金額と男性の正規化された販売金額との差、すなわち各月のユークリッド距離Ｕ（全商品、男性）が、２０１５年１月が０．１、２月が０．０４、３月が０．１９、４月が０．０２であったとする。この場合に、全体データの分析結果と選択条件１の部分データの分析結果とのユークリッド距離Ｕ（全商品、男性）は、２０１５年１月のユークリッド距離０．１と、２月のユークリッド距離０．０４と、３月のユークリッド距離０．１９と、４月のユークリッド距離０．０２とを合計した０．３５と算出される。同様に、全体データの分析結果と選択条件２の部分データの分析結果とのユークリッド距離Ｕ（全商品、４０代）は、０．３０と算出される。また、全体データの分析結果と選択条件３の部分データの分析結果とのユークリッド距離Ｕ（全商品、衣服）は、０．７４と算出される。したがって、次式（７）を満たす乖離度合いが最大の部分データは、選択条件３の衣類の部分データであることがわかる。
【００４０】
【数７】
2017037511.tif 000009
【００４１】
本実施形態のクエリ木処理部５２２は、乖離の度合いを算出する際、全てのレコードの統計情報と、レコードごとの複数選択処理がテーブルＤの全てのレコードに対して完了する前に取得した、各選択条件に合致する処理済みのレコードの統計情報とを用いて、各選択条件に合致する未処理のレコードの統計情報を導出し、該未処理のレコードの統計情報を用いて乖離の度合いを算出する。
【００４２】
具体的に、クエリ木処理部５２２は、乖離判定処理に先立って、予めテーブルＤの全レコード群すなわち全体データについて、分析命令ｑの対象の属性Ａの値ｌの分布を示すヒストグラムと、各部分データの選択条件で指定されている属性Ａの値ｌの分布を示すヒストグラムとを作成しておく。例えば、上記式（４）に示した分析命令ｑの対象の属性すなわち販売金額の値の分布を示すヒストグラムを作成しておく。また、上記式（３）に示した選択条件１の属性すなわち顧客性別、選択条件２の属性すなわち顧客年齢、および選択条件３の属性すなわち商品ジャンルの各属性値ｌの分布を示すヒストグラムを作成しておく。
【００４３】
乖離判定処理では、クエリ木処理部５２２は、まず、上記複数選択処理が処理済みのレコード群Ｄ１について、各選択条件に合致する部分データの分析結果（以下、ｑ＊選択条件（Ｄ１）とも記す）と、Ｄ１の分析結果ｑ（Ｄ１）との乖離の度合いを算出する。この場合に、乖離の度合いとして、例えば、次式（８）に示すようにユークリッド距離が算出されたものとする。
【００４４】
【数８】
2017037511.tif 000010
【００４５】
ここで、乖離の度合いを算出する関数に対して、次式（９）が成立する。
【００４６】
【数９】
2017037511.tif 000011
【００４７】
そこで、クエリ木処理部５２２は、レコードごとの複数選択処理が未処理のレコード群Ｄ２の各属性値ｌのヒストグラムを用いて、該未処理のレコード群Ｄ２に対して複数選択処理を行った場合の、各選択条件に合致する部分データの分析結果と全体データの分析結果との乖離の度合いの上限値および下限値を算出する。なお、説明の簡略化のため、分析命令ｑの対象の属性値ｌは正の値をとるものとする。ただし、分析命令ｑの対象の属性値ｌが負の値をとる場合には、値域を正に変換することにより、同様に扱うことが可能となる。
【００４８】
クエリ木処理部５２２は、まず、レコードごとの複数選択処理が処理済みのレコード群Ｄ１の各属性Ａの値ｌの分布を示すヒストグラムを作成する。そして、全体データのヒストグラムから、該処理済みのレコード群Ｄ１のヒストグラムを減算することにより、未処理のレコード群Ｄ２の各属性値ｌのヒストグラムを導出する。例えば、図７は、未処理のレコード群Ｄ２についての、分析命令ｑの対象の属性Ａすなわち販売金額の値の分布を例示するヒストグラムである。また、図８は、未処理のレコード群Ｄ２についての、顧客年齢の値の分布を例示するヒストグラムである。
【００４９】
クエリ木処理部５２２は、未処理のレコード群Ｄ２のヒストグラムから、各選択条件の属性Ａの値ｌをもつレコード数を取得する。例えば、図８によれば、選択条件２すなわち顧客年齢が４０代の未処理のレコード数が２件であることがわかる。
【００５０】
ここで取得された未処理のレコードが最大の値をとった場合に、未処理のレコード群Ｄ２の分析結果と未処理のレコード群Ｄ２のうちの各選択条件に合致する部分データの分析結果との乖離の度合いが上限値となる。そこで、クエリ木処理部５２２は、未処理のレコード群Ｄ２の分析対象の属性Ａの値ｌのヒストグラムから大きい順に未処理のレコード数の属性値ｌを抽出する。
【００５１】
例えば、図７によれば、販売金額が大きい順に２件の属性値ｌを抽出すると、１００００円が２件である。これにより、未処理のレコード群Ｄ２の分析結果と未処理のレコード群Ｄ２のうちの選択条件２に合致する部分データの分析結果との乖離の度合いの上限値は、１００００＋１００００＝２００００と算出される。したがって、テーブルＤの分析結果と選択条件２に合致する部分データの分析結果との乖離の度合いの上限値は、上記式（８）のユークリッド距離を参照し、次式（１０）に示すように、１２００００＋（１００００＋１００００）＝１４００００と算出される。
【００５２】
【数１０】
2017037511.tif 000012
【００５３】
同様に、各選択条件の属性Ａの値ｌをもつ未処理のレコードが最小の値をとった場合に、未処理のレコード群Ｄ２の分析結果と未処理のレコード群Ｄ２のうちの各選択条件に合致する部分データの分析結果との乖離の度合いが下限値となる。そこで、クエリ木処理部５２２は、未処理のレコード群Ｄ２の分析対象の属性Ａの値ｌのヒストグラムから小さい順に未処理のレコード数の属性値を抽出する。
【００５４】
例えば、未処理のレコード群Ｄ２のうち選択条件１の属性Ａの値ｌをもつレコード数が３件だった場合に、図７によれば、販売金額が小さい順に３件の属性値ｌを抽出すると、４０００円が２件、６０００円が１件である。そこで、未処理のレコード群Ｄ２の分析結果と未処理のレコード群Ｄ２のうちの選択条件１に合致する部分データの分析結果との乖離の度合いの下限値は、４０００＋４０００＋６０００＝１４０００と算出される。したがって、テーブルＤの分析結果と選択条件１に合致する部分データの分析結果との乖離の度合いの下限値は、上記式（８）のユークリッド距離を参照し、次式（１１）に示すように、２５００００＋（４０００＋４０００＋６０００）＝２６４０００と算出される。
【００５５】
【数１１】
2017037511.tif 000013
【００５６】
クエリ木処理部５２２は、複数の各選択条件に合致する各部分データの分析結果と全体データの分析結果との乖離の度合いの下限値と上限値とを比較することにより、乖離の度合いが最大となり得ない選択条件を特定する。例えば、ある選択条件に合致する部分データの乖離の度合いの下限値が、他の選択条件に合致する部分データの乖離の度合いの上限値より大きい場合には、後者の乖離の度合いは最大とはなり得ない。上記の例では、選択条件２に合致する部分データの乖離の度合いの上限値が、選択条件１に合致する部分データの乖離の度合いの下限値を下回ることから、選択条件２に合致する部分データの乖離の度合いは最大値とはなり得ないことがわかる。この場合に、クエリ木処理部５２２は、以降のレコードに対する複数選択処理において、特定された選択条件２についての処理を中止する。
【００５７】
このように、乖離判定処理によれば、レコードごとの複数選択処理がテーブルＤの全てのレコードに対して完了する前に、未処理のレコード群Ｄ２に対して複数選択処理を行った場合に、各選択条件に合致する部分データの分析結果と全体データの分析結果との乖離の度合いが最大となり得るか否かがわかる。そこで、クエリ木処理部５２２は、各選択条件に合致する部分データの分析結果と全体データの分析結果との乖離の度合いが最大となり得ない選択条件について、以降のレコードの複数選択処理を中止する。これにより、分析処理を高速化して、全体データの分析結果との乖離の度合いが高い部分データを選択する選択条件を探索することができる。
【００５８】
［分析処理］
次に、図９および図１０のフローチャートを参照して、分析装置１における分析処理手順について説明する。まず、図９は、複数選択処理手順を示すフローチャートである。図９のフローチャートは、例えば、データ分析者により入力部２を介して分析開始の指示入力があったタイミングで開始となる。
【００５９】
クエリ木処理部５２２は、まず、キャッシュメモリに記憶されたクエリ木を読み込んで（ステップＳ１）、記憶部４の分析命令ｑの対象のテーブルＤを参照し、複数選択処理が未処理のレコードの有無を確認し（ステップＳ２）、未処理のレコードがある場合には（ステップＳ２，Ｙｅｓ）、当該未処理のレコードを読み込む（ステップＳ３）。このレコードの各属性Ａの値ｌが、選択条件を表すクエリ木のパスに一致すれば、クエリ木処理部５２２が、当該属性Ａの値ｌをもつ複数選択処理が処理済みのレコード群に対して分析命令を実行する（ステップＳ４）。また、クエリ木処理部５２２は、分析結果をパスに対応づけて適当なメモリ領域に記憶させる。
【００６０】
一方、ステップＳ２の処理で、未処理のレコードがない場合には（ステップＳ２、Ｎｏ）、クエリ木処理部５２２は、一連の複数選択処理を終了させる。このようにして、クエリ木処理部５２２は、テーブルＤの全てのレコードについて、複数選択処理を行う。
【００６１】
図１０は、乖離判定処理手順を示すフローチャートである。図１０のフローチャートは、例えば、上記の複数選択処理がテーブルＤから検索された全てのレコードに対して完了する前に、データ分析者により入力部２を介して乖離判定の指示入力があったタイミングで開始となる。
【００６２】
クエリ木処理部５２２は、まず、全体データについてのヒストグラムを読み込む（ステップＳ１１）。具体的に、分析命令ｑの対象の属性Ａの値ｌの分布を示すヒストグラムと、各部分データの選択条件で指定されている属性Ａの値ｌの分布を示すヒストグラムとが読み込まれる。
【００６３】
次に、クエリ木処理部５２２は、複数選択処理が未処理のレコード群Ｄ２の各属性Ａの値ｌのヒストグラムを導出する（ステップＳ１２）。具体的に、クエリ木処理部５２２は、まず、レコードごとの複数選択処理が処理済みのレコード群Ｄ１の各属性Ａの値ｌの分布を示すヒストグラムを作成する。そして、全体データのヒストグラムから、該処理済みのレコード群Ｄ１のヒストグラムを減算することにより、未処理のレコード群Ｄ２の各属性Ａの値ｌのヒストグラムを導出する。
【００６４】
次に、クエリ木処理部５２２は、レコードごとの複数選択処理が未処理のレコード群Ｄ２の各属性Ａの値ｌのヒストグラムを用いて、各選択条件に合致する部分データの分析結果と全体データの分析結果との乖離の度合いの上限値および下限値を算出する。そして、乖離の度合いが最大となり得ない選択条件について、以降のレコードに対する複数選択処理をスキップする（ステップＳ１３）。
【００６５】
以上、説明したように、本実施形態の分析装置１では、複数クエリ生成部５１が、属性の異なる複数の選択条件の指定を受け付け、該選択条件ごとにクエリを生成する。また、クエリ木処理部５２２が、記憶部４に格納されるレコードごとに、複数クエリ生成部５１によって生成された複数のクエリに対応する各選択条件に合致するかをそれぞれ判定し、選択条件ごとに、該選択条件に合致するレコードを分析する複数選択処理を行う。
【００６６】
このように、クエリ木処理部５２２は、テーブルＤのレコードごとに、複数の属性Ａの異なる選択条件により指定された複数の選択処理のクエリを一度に実行した後に分析命令ｑを実行し、各選択条件に合致する部分データの分析結果を得る。これにより、テーブルＤへのアクセス回数を削減して分析処理を高速化することができる。
【００６７】
また、クエリ木処理部５２２は、上記のレコードごとの複数選択処理がテーブルＤの全てのレコードに対して完了する前に、各選択条件に合致する部分データの分析結果と全体データＤの分析結果との乖離の度合いを算出し、該乖離の度合いが最大となり得ない選択条件について、以降のレコードに対する複数選択処理を中止する乖離判定処理を行う。
【００６８】
乖離の度合いを算出する際、クエリ木処理部５２２は、全体データＤの統計情報と、レコードごとの複数選択処理がテーブルＤの全てのレコードに対して完了する前に取得した、各選択条件に合致する処理済みのレコードＤ１の統計情報とを用いて、各選択条件に合致する未処理のレコードＤ２の統計情報を導出し、該未処理のレコードＤ２の統計情報を用いて乖離の度合いを算出する。
【００６９】
このように、クエリ木処理部５２２は、各選択条件に合致する部分データの分析結果と全体データの分析結果との乖離の度合いが最大となり得ない選択条件を判定し、当該選択条件について、以降のレコードの複数選択処理を中止する。これにより、分析処理を高速化して、全体データの分析結果との乖離の度合いが高い部分データを選択する選択条件を探索することができる。
【００７０】
このように、本実施形態の分析装置１によれば、分析対象のデータが格納されるテーブルＤから部分データを取得するための複数の選択処理で指定される各選択条件の属性Ａが異なる場合にも、テーブルＤへのアクセス回数を削減して分析処理を高速化することができる。
【００７１】
［他の実施形態］
［プログラム］
上記実施形態に係る分析装置１が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、係るプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、分析装置１と同様の機能を実現する分析プログラムを実行するコンピュータの一例を説明する。
【００７２】
図１１に示すように、分析プログラムを実行するコンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００７３】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１０４１に接続される。ディスクドライブ１０４１には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１０５１およびキーボード１０５２が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１０６１が接続される。
【００７４】
ここで、図１１に示すように、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ１０３１やメモリ１０１０に記憶される。
【００７５】
また、分析プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュール１０９３として、ハードディスクドライブ１０３１に記憶される。具体的には、上記実施形態で説明した分析装置１が実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ１０３１に記憶される。
【００７６】
また、分析プログラムによる情報処理に用いられるデータは、プログラムデータ１０９４として、例えば、ハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００７７】
なお、分析プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、分析プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００７８】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【００７９】
１  分析装置
２  入力部
３  出力部
４  記憶部
５  制御部
５１  複数クエリ生成部
５２  複数クエリ実行部
５２１  クエリ木構築部
５２２  クエリ木処理部
【図１】
2017037511.tif 000014
【図２】
2017037511.tif 000015
【図３】
2017037511.tif 000016
【図４】
2017037511.tif 000017
【図５】
2017037511.tif 000018
【図６】
2017037511.tif 000019
【図７】
2017037511.tif 000020
【図８】
2017037511.tif 000021
【図９】
2017037511.tif 000022
【図１０】
2017037511.tif 000023
【図１１】
2017037511.tif 000024