(57)【特許請求の範囲】
【請求項１】
複数の項目にそれぞれ対応する複数の要素を含むレコードが複数登録される表形式データを入力データとして処理する表形式データ処理装置であって、
複数の前記表形式データを統合するうえで不適切なデータを可視化するための集計の規則に基づいてグループに分類した、所定の項目に対応する前記要素の件数を、前記グループごとに集計し、集計結果を出力する集計部と、
前記入力データから、前記集計結果における前記グループのいずれかに分類された要素を含むレコードを抽出して出力する出力部と、
出力されたレコードに含まれる要素について変更の要求を受け、当該要素を変更する修正部と、
を有する表形式データ処理装置。
【請求項２】
前記集計の規則に基づく分類は、前記要素を記述する表現形式に基づく分類である
請求項１に記載の表形式データ処理装置。
【請求項３】
複数の表形式データ間における項目の対応付けを示すデータに基づいて、複数の表形式データの和集合を生成する縦結合部
をさらに有し、
前記集計部は、前記表形式データの和集合を前記入力データとする
請求項１又は２に記載の表形式データ処理装置。
【請求項４】
複数の項目にそれぞれ対応する複数の要素を含むレコードが複数登録される表形式データを入力データとして処理する表形式データ処理方法であって、
複数の前記表形式データを統合するうえで不適切なデータを可視化するための集計の規則に基づいてグループに分類した、所定の項目に対応する前記要素の件数を、前記グループごとに集計し、集計結果を出力する集計ステップと、
前記入力データから、前記集計結果における前記グループのいずれかに分類された要素を含むレコードを抽出して出力するステップと、
出力されたレコードに含まれる要素について変更の要求を受け、当該要素を変更するステップと、
をコンピュータが実行する表形式データ処理方法。
【請求項５】
複数の項目にそれぞれ対応する複数の要素を含むレコードが複数登録される表形式データを入力データとして処理する表形式データ処理プログラムであって、
複数の前記表形式データを統合するうえで不適切なデータを可視化するための集計の規則に基づいてグループに分類した、所定の項目に対応する前記要素の件数を、前記グループごとに集計し、集計結果を出力する集計ステップと、
前記入力データから、前記集計結果における前記グループのいずれかに分類された要素を含むレコードを抽出して出力する出力ステップと、
出力されたレコードに含まれる要素について変更の要求を受け、当該要素を変更する修正ステップと、
をコンピュータに実行させる表形式データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表形式データ処理プログラム、方法及び装置に関する。
【背景技術】
【０００２】
顧客情報、営業情報、その他のあらゆる情報を管理するため、例えばＲＤＢ（Relational Database）が利用されている。ＲＤＢを利用する場合、正規化したテーブルを作成することにより、情報を一元的に管理し、不整合、損失、冗長を低減することができる。なお、１又は複数のテーブルから同一の実体に関するレコードを求めるため、「名寄せ」と呼ばれる処理を行うこともある。名寄せすることにより、例えば、同一人物が有する複数の口座を取りまとめて扱うことができるようになるため、集計結果がより精確になる。【０００３】
また、利用者が、セルと自動実行データとの関連付けの登録・削除・更新を行うことによって、内部データを意識することなく表計算プログラムを自動実行させる技術が提案されている（例えば、特許文献１）。また、設計書に基づいて、コンピュータプログラムのソースコードを自動生成するという技術も提案されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−７３５８９号公報
【特許文献２】特開２００９−２２３８４３号公報
【特許文献３】特開２００５−１３５２２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＲＤＢを利用するためには、テーブルの設計、レコードの登録及びメンテナンス等が必要である。さらに、サーバの構築、データ操作言語やＲＤＢＭＳ（Relational Database Management System）の使用等、専門的な技術が必要になる場合もある。そこで、ＲＤＢを利用することなく簡易的にデータを管理するため、ＣＳＶ（Comma Separated Values）に代表されるテキストで記録された表形式データ（「Delimiter-Separated Values」、「Character-Separated Values」等とも呼ばれる）を利用する場合も少なくない。【０００６】
しかしながら、上記のような表形式データを表計算ソフト等で処理する場合、ＲＤＢＭＳによって実行するようにテーブルを結合したり値を集計したりといったデータ操作をするためには、手間と時間がかかるという問題がある。また、取引先ごと、支社ごと、部署ごと等でそれぞれ異なるデータ構造の情報資産を保有している場合に、これらを統合して集計等するときには専用のシステムを開発する必要があった。【０００７】
そこで、本発明は、デリミター（Delimiter）区切りで表現された表形式データの操作を支援するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る表形式データ処理装置は、複数の項目にそれぞれ対応する複数の要素を含むレコードが複数登録される表形式データを処理する装置であって、ユーザの操作に基づき、複数の表形式データにそれぞれ含まれる項目を対応付けて１つの表形式データを生成する縦結合処理を行う縦結合部と、ユーザの操作に基づき、生成された１つの表形式データに含まれる項目をキーとして当該１つの表形式データに含まれるレコードを集約する集約処理を行う集約部と、項目の構成が同一の表形式データに対して、縦結合処理及び集約処理を実行するための再実行情報として、項目の対応付けとキー項目とを少なくとも記憶装置に記憶させる制御部とを有する。【０００９】
このようにすれば、表形式データの構成をユーザの操作に基づいて再構築することができる。また、同様の構成を有する表形式データに対し、同様の操作を実行するための情報を記憶させておくことができる。したがって、表形式データの操作を支援するための技術を提供することができる。【００１０】
また、表形式データ処理装置は、ユーザの操作に基づき、同一概念の関係、又は上位概念及び下位概念の関係にある語句の登録を受け付ける辞書登録部をさらに有し、集約部は、キーとされた項目の要素が同一概念の関係にあるレコード、又は上位概念及び下位概念の関係にあるレコードを集約するようにしてもよい。このようにすれば、レコードを集約する際にユーザが設定した辞書に基づいて名寄せを行うことができるようになる。【００１１】
また、表形式データ処理装置は、ユーザの操作に基づき、再実行情報と、当該再実行情報に従って処理を実行する時刻とを少なくとも含むスケジュール情報を記憶装置に記憶させるスケジュール設定部と、スケジュール情報に基づいて、スケジュール情報に設定された時刻に再実行情報が規定する縦結合処理及び集約処理を行うバッチ処理部とをさらに有するようにしてもよい。このようにすれば、処理をスケジュールしておくことができるようになる。【００１２】
また、表形式データ処理装置は、縦結合処理及び集約処理の実行順序をグラフィカルに表示するとともに、縦結合処理を実行するための設定である項目の対応付け、又は集約処理を実行するための設定であるキー項目、又は縦結合処理もしくは集約処理に入力される表形式データの項目の構成もしくは出力される表形式データの項目の構成を表示する表示部をさらに有するようにしてもよい。このようにすれば、ユーザは、実行される表形式データの操作を視覚的に確認することができる。【００１３】
本発明の他の側面に係る表形式データ処理装置は、複数の項目に対応する複数の要素を含むレコードが複数登録される表形式データについて、入力される表形式データである入力テーブルに含まれるレコードを集約し、出力する表形式データである出力テーブルを生成する。具体的には、複数の入力テーブルにそれぞれ含まれる項目と、出力テーブルに含まれる項目との対応付けの指定を受け付ける設定処理部と、出力テーブルに含まれる項目の一覧を表示する一覧領域と、集約に用いるキー項目を表示するキー指定領域とを表示する表示制御部と、一覧領域に表示された項目をキー指定領域へドラッグするユーザの操作により、キー項目の指定を受け付けるキー指定部と、指定されたキー項目の値が所定の条件を満たす入力テーブルのレコードを集約し、出力テーブルを生成する出力部とを有する。【００１４】
このようにすれば、ユーザはテキストでクエリを入力することなく、データ操作の要求を入力することができる。すなわち、表形式データの操作を支援するための技術を提供することができる。【００１５】
また、表形式データ処理装置は、キー項目の各々について、レコードを集約するための条件の指定を受け付けるキー設定部と、条件が指定されたキー項目の表示態様を、条件の指定が完了したことを示す所定の表示態様に変更する第１表示変更部とをさらに有するようにしてもよい。このようにすれば、キー項目に対してデータ操作の要求に必要な設定が完了したか否かをユーザが視覚的に認識できるようになる。【００１６】
また、表形式データ処理装置は、表示ステップにおいて、集計対象の項目を表示する集計項目領域をさらに表示し、一覧領域に表示された項目を集計項目領域へドラッグするユーザの操作により、集計項目の指定を受け付ける集計項目指定部と、指定された集計項目に対して、集計方法の指定を受けつける集計方法指定部と、集計項目領域において、集計方法が指定された集計対象の項目の表示態様を、集計方法の指定が完了したことを示す所定の表示態様に変更する第２表示変更部とをさらに有するようにしてもよい。このようにすれば、ユーザはテキストでクエリを入力することなく、集計に関するデータ操作の要求を入力することができる。また、集計項目に対して必要な設定が完了したか否かをユーザが視覚的に認識できるようになる。【００１７】
また、表形式データ処理装置は、集計項目指定部が、集計項目として、新たな項目の生成の要求を受け付けるとともに、集計項目領域において、集計項目を、順序を表す所定の方向に沿って一列に表示し、集計方法指定部が、新たな項目の集計方法として、一覧領域の項目及び集計項目領域において当該新たな項目よりも順序が先の集計項目の少なくともいずれかを用いて、当該新たな項目の要素を決定する計算式又は条件式の指定を受け付けるようにしてもよい。このようにすれば、ユーザは、順序が先の項目に係る集計結果を用いてさらに集計を行うための要求を入力できる。段階を追って入力することにより、ユーザは、複雑な集計の要求も容易に入力することができる。【００１８】
また、表形式データ処理装置は、キー指定部において、指定されたキー項目を、順序を表す所定の方向に沿って一列に表示するとともに、ユーザのドラッグ操作に応じてキー項目の順序を変更し、出力部において、キー項目の値が所定の条件を満たす、入力テーブルのレコードを、キー項目の順序にしたがって複数のキーによるソートを行い、出力テーブルを生成するようにしてもよい。このようにすれば、ユーザは、キー項目の指定を容易に行うことができる。【００１９】
また、本発明の他の側面に係る表形式データ処理装置は、複数の項目に対応する複数の要素を含むレコードが複数登録される表形式データについて、入力される表形式データである入力テーブルに含まれるレコードを集約し、出力する表形式データである出力テーブルを生成する。具体的には、入力テーブルに基づいて、項目の順序に対応付けられている要素を抽出し、表形式データにおけるレコードの順序と対応付けて項目ごとに保持する項目別データを生成する項目別データ生成部と、項目別データに含まれる要素を集約し、集約後の項目別データから出力テーブルを生成する出力テーブル生成部とを有する。【００２０】
このようにすれば、表形式データを項目ごとの単位で表す項目別データに分解して扱うことができる。項目別データに含まれる要素を集約するだけでなく、出力テーブルに出力する項目に応じて項目別データを結合することができる。すなわち、項目別データは、複雑な処理を行うのに適している。なお、集約処理としては、例えばテーブルの結合や集計を行うことができる。【００２１】
また、表形式データ処理装置は、項目別データを用いて、所定の条件を満たす複数の要素に対応する、レコードの順序の集合を生成する順序集合生成部をさらに有し、出力テーブル生成部は、集合に属する順序に基づいて項目別データに含まれる要素を集約するようにしてもよい。このようにすれば、レコードの順序（換言すれば、順番を示す番号）の集合を用いて集約を行うことができるようになる。ここで、順序の集合を生成するためには、所定の条件を満たす、各要素が属すべき集合にレコードの順序を分類すればよい。集約のためにレコードを検索するような必要がなく、レコードの順序の集合を用いることで高速に処理を行うことができる。【００２２】
また、表形式データ処理装置は、複数の表形式データ間における項目の対応付けを表すデータに基づいて、複数の表形式データの項目別データの和集合を生成する縦結合部をさらに有し、順序集合生成部は、項目別データの和集合を用いて、レコードの順序の集合を生成するようにしてもよい。このようにすれば、複数の表形式データを対象として、データ操作を行うことができるようになる。【００２３】
また、表形式データ処理装置は、集合に属する順序に基づいて集約される要素に異なる値が存在する場合、集約後の項目別データには、異なる値を結合した要素を登録するようにしてもよい。このようにすれば、所定の条件を満たすレコードを１つに集約して表示することができるようになる。【００２４】
また、表形式データ処理装置は、集約後の項目別データを用いて、第２の所定条件を満たす複数の要素に対応する、レコードの順序の集合を生成する第２順序集合生成部をさらに有し、出力テーブル生成部において、第２順序集合生成部が生成した集合に属する順序に基づいて集約後の項目別データに含まれる要素をさらに集約し、集約後の項目別データから出力テーブルを生成するようにしてもよい。このようにすれば、例えば結合や集計のような集約処理を行った後の項目別データに対して、さらに集約処理を行うことができる。すなわち、段階を追って複雑なデータ操作を行うことができる。【００２５】
また、本発明の他の側面に係る表形式データ処理装置は、複数の項目にそれぞれ対応する複数の要素を含むレコードが複数登録される表形式データを入力データとして処理する。具体的には、所定の規則に基づいてグループに分類した、所定の項目に対応する要素の件数を、グループごとに集計し、集計結果を出力する集計部と、入力データから、集計結果におけるグループのいずれかに分類された要素を含むレコードを抽出して出力する出力部と、出力されたレコードに含まれる要素について変更の要求を受け、当該要素を変更する修正部とを有する。【００２６】
当該処理は、本発明におけるデータプロファイリング処理に相当する。このようにすれば、誤りや漏れ、重複等の不適切なデータを統計的手法（集計）によって可視化（出力）することができる。すなわち、不適切なデータの検出及び修正を支援することができる。【００２７】
また、所定の規則に基づく分類は、要素を記述する表現形式に基づく分類であってもよい。このようにすれば、特にスキーマの定義されていないＤＳＶ形式等の入力データに登録され得る不適切な要素の存在を、ユーザは容易に発見することができる。具体的には、所定の規則に基づく分類は、要素が日付を表すか否か、一意であるか否か、空であるか否か、数値であるか否か、若しくは所定の文字列を含むか否かによって、又は要素ごと若しくは要素のデータパターンごとに行うようにしてもよい。【００２８】
また、複数の表形式データ間における項目の対応付けを示すデータに基づいて、複数の表形式データの和集合を生成する縦結合部をさらに有し、集計部は、表形式データの和集合を入力データとするようにしてもよい。このようにすれば、本発明における縦結合後の表形式データを対象として、データプロファイリング処理を行うことができる。【００２９】
なお、上記課題を解決するための手段の内容は、本発明の課題や技術的思想を逸脱しない範囲で可能な限り組み合わせることができる。また、上記課題を解決するための手段の内容をコンピュータが実行する表形式データ処理方法や、上記課題を解決するための手段の内容を実行するステップをコンピュータに実行させる表形式データ処理プログラムを提供することもできる。さらに、当該プログラムを保持する記録媒体を提供するようにしてもよい。
【発明の効果】
【００３０】
本発明によれば、デリミター（Delimiter）区切りで表現された表形式データの操作を支援するための技術を提供することができる。
【図面の簡単な説明】
【００３１】
【図１】システムの構成の一例を示す機能ブロック図である。
【図２】表形式データ処理装置の一例を示す機能ブロック図である。
【図３】コンピュータの装置構成の一例を示す機能ブロック図である。
【図４】ファイル読込処理の一例を示す処理フローである。
【図５Ａ】表形式データ（ＣＳＶファイル）を説明するための図である。
【図５Ｂ】表形式データの行リストを説明するための図である。
【図５Ｃ】Ｋｅｙ−Ｖａｌｕｅ形式のマップを説明するための図である。
【図６】縦結合設定処理の一例を示す処理フローである。
【図７Ａ】縦結合の設定データを説明するための図である。
【図７Ｂ】縦結合の設定データを説明するための図である。
【図８】項目別リスト生成処理の一例を示す処理フローである。
【図９】項目別リストを生成するためのオブジェクトの一例を示す図である。
【図１０Ａ】項目別リストを説明するための図である。
【図１０Ｂ】項目別リストを説明するための図である。
【図１１】縦結合処理の一例を示す処理フローである。
【図１２Ａ】中間的に生成される項目別リストを説明するための図である。
【図１２Ｂ】中間的に生成される項目別リストを説明するための図である。
【図１２Ｃ】縦結合後の項目別リストを説明するための図である。
【図１３】出力処理の一例を示す処理フローである。
【図１４Ａ】行別リストを説明するための図である。
【図１４Ｂ】出力する表形式データの行リストを説明するための図である。
【図１４Ｃ】出力する表形式データ（ＣＳＶファイル）を説明するための図である。
【図１５】横結合設定処理の一例を示す処理フローである。
【図１６】横結合の条件を設定する画面を説明するための図である。
【図１７】横結合の条件を設定する画面を説明するための図である。
【図１８】横結合の条件を設定する画面を説明するための図である。
【図１９】集計設定処理の一例を示す処理フローである。
【図２０】集計処理の条件を設定する画面を説明するための図である。
【図２１】集計処理の条件を設定する画面を説明するための図である。
【図２２】集計処理の条件を設定する画面を説明するための図である。
【図２３】集計処理の条件を設定する画面を説明するための図である。
【図２４】集計処理の条件を設定する画面を説明するための図である。
【図２５】集計処理の条件を設定する画面を説明するための図である。
【図２６】対照群生成処理の一例を説明するための処理フローである。
【図２７】対照群生成処理の一例を説明するための処理フローである。
【図２８Ａ】対照群を説明するための図である。
【図２８Ｂ】対照群を説明するための図である。
【図２９Ａ】ソートを説明するための図である。
【図２９Ｂ】ソートを説明するための図である。
【図２９Ｃ】ソートを説明するための図である。
【図２９Ｄ】ソートを説明するための図である。
【図３０】横結合・集計処理の一例を説明するための処理フローである。
【図３１】新規属性の条件を設定する画面を説明するための図である。
【図３２】新規属性の条件を設定する画面を説明するための図である。
【図３３】新規属性の条件を設定する画面を説明するための図である。
【図３４】新規項目生成処理の一例を示す処理フローである。
【図３５Ａ】集計処理を説明するための図である。
【図３５Ｂ】集計処理を説明するための図である。
【図３６】表形式データ処理装置の一例を示す機能ブロック図である。
【図３７】実施形態に係るジョブの概要を説明するための図である。
【図３８】縦結合処理の入力データの一例を示す表である。
【図３９】縦結合処理の入力データの一例を示す表である。
【図４０】縦結合処理の出力データの一例を示す表である。
【図４１】縦結合の設定画面（縦結合列編集画面）の一例を示す図である。
【図４２】縦結合の設定画面（縦結合ベースファイル選択画面）の一例を示す図である。
【図４３】縦結合の設定画面（表示属性抽出設定画面）の一例を示す図である。
【図４４】横結合の入力データ（縦結合の出力データ）の一例を示す表である。
【図４５】縦結合の入力データの一例を示す表である。
【図４６】縦結合の入力データの一例を示す表である。
【図４７】横結合の出力データの一例を示す表である。
【図４８】横結合の設定画面（横結合画面）の一例を示す図である。
【図４９】横結合の設定画面（横結合キー設定画面）の一例を示す図である。
【図５０】横結合の入力データの一例を示す表である。
【図５１】横結合の出力例を示す表である。
【図５２】横結合の他の出力例を示す表である。
【図５３】横結合の他の出力例を示す表である。
【図５４】横結合の他の出力例を示す表である。
【図５５】横結合の他の出力例を示す表である。
【図５６】横結合の他の出力例を示す表である。
【図５７】横結合の他の出力例を示す表である。
【図５８】横結合の他の出力例を示す表である。
【図５９】横結合の他の出力例を示す表である。
【図６０】ユーザ辞書の記載例を示す図である。
【図６１】ユーザ辞書における語句の関係を説明するための模式図である。
【図６２】他のユーザ辞書の記載例を示す表である。
【図６３】他のユーザ辞書の記載例を示す表である。
【図６４】集計処理の出力データの一例を示す表である。
【図６５】集計処理の設定画面（集計画面）の一例を示す図である。
【図６６】集計処理の設定画面（集計キー設定画面）の一例を示す図である。
【図６７】集計処理の設定画面（集計属性設定画面）の一例を示す図である。
【図６８】集計処理の設定画面（集計追加属性画面）の一例を示す図である。
【図６９】集計処理の設定画面（計算画面）の一例を示す図である。
【図７０】集計処理の設定画面（条件画面）の一例を示す図である。
【図７１】集計処理の設定画面（関数処理画面）の一例を示す図である。
【図７２】グループ化処理の入力データの一例を示す表である。
【図７３】グループ化処理の出力データの一例を示す表である。
【図７４】グループ化処理の設定画面（グループ化画面）の一例を示す図である。
【図７５】グループ化解除処理の出力データの一例を示す表である。
【図７６】グループ化解除処理の設定画面（グループ化キー設定画面）の一例を示す図である。
【図７７】ナンバリング処理の設定画面の一例を示す図である。
【図７８】検索条件の設定画面の一例を示す図である。
【図７９】ＸＭＬファイルの内容の一例を示す図である。
【図８０】バッチ処理の概要を説明するための図である。
【図８１】バッチ処理の設定画面の一例を示す図である。
【図８２】新規ジョブ実行処理の一例を示す処理フロー図である。
【図８３】ジョブの設定画面一例を示す図である。
【図８４】ジョブの設定画面の他の例を示す図である。
【図８５】ジョブの設定画面の他の例を示す図である。
【図８６】ジョブの設定画面の他の例を示す図である。
【図８７】ジョブの設定画面の他の例を示す図である。
【図８８】バッチ定義処理の一例を示す処理フロー図である。
【図８９】結合処理の設定画面の一例を示す図である。
【図９０】表形式データ処理装置の一例を示す機能ブロック図である。
【図９１】データプロファイリング処理の一例を示す処理フローである。
【図９２】データ品質ツール設定画面の一例を示す図である。
【図９３】データ品質ツール画面の一例を示す図である。
【図９４】データプロファイリング設定画面の一例を示す図である。
【図９５】データプロファイリング画面の一例を示す図である。
【発明を実施するための形態】
【００３２】
以下、図面を参照して、一実施形態に係る表形式データ処理プログラム、表形式データ処理装置、及び表形式データ処理方法について説明する。実施形態の構成は例示であり、本発明に係るプログラム、装置、方法は実施形態の構成には限定されない。
【００３３】
＜＜内部処理とユーザインターフェースに係る実施形態＞＞
＜システム構成＞
図１は、表形式データを処理するためのシステムの一例を示す機能ブロック図である。本実施形態に係るシステムは、表形式データ処理装置１と、ユーザ端末２とを含む。また、表形式データ処理装置１とユーザ端末２とは、ネットワーク３を介して接続されている。
【００３４】
表形式データ処理装置１は、例えば、表形式データに対し本実施形態で説明する処理を行うサーバである。また、ユーザ端末２は、例えば、インターネットに接続する機能を有するコンピュータである。ユーザは、例えば、ユーザ端末２が有するインターネットブラウザを介して、表形式データ処理装置１に本実施形態で説明する処理の実行を命じたり、表形式データ処理装置１から受信した処理の結果を確認したりすることができる。ネットワーク３は、例えばインターネットやイントラネット等のようなネットワークシステムである。なお、表形式データ処理装置１とユーザ端末２とは、専用線で接続されていてもよい。また、図１では１つのユーザ端末２を示しているが、複数のユーザ端末が接続されていてもよい。一方、複数の表形式データ処理装置１がネットワーク上に存在し、分散して処理を行う構成としてもよい。
【００３５】
＜機能構成＞
図２は、表形式データ処理装置１の一例を示す機能ブロック図である。本実施形態に係る表形式データ処理装置１は、データ記憶部１０１と、設定処理部１０２と、データ分割部１０３と、表示制御部１０４と、縦結合部１０５と、対照群生成部１０６と、横結合部１０７と、集計部１０８と、出力データ生成部１０９とを有する。
【００３６】
データ記憶部１０１は、例えば、本実施形態で処理の対象となる表形式データ、処理の要求を示す設定データ、処理結果として生成される表形式データ、その他処理において中間的に生成されるデータを保持する。表形式データ処理装置１は、例えば、カンマやタブ、スペース等の区切記号（「デリミター」とも呼ぶ）によってフィールド（「列」、「項目」、「要素」又は「属性」とも呼ぶ）が区切られ、改行によってレコード（「行」とも呼ぶ）が区切られたテキストデータを処理対象とする。本実施の形態では、ユーザが転送したＣＳＶデータが、予め表形式データ処理装置１のデータ記憶部１０１に記憶されているものとする。
【００３７】
設定処理部１０２は、例えば、結合する複数の表形式データの指定、レコードを集約する条件、集計の方法のようなデータ操作の要求を、ネットワーク３を介してユーザ端末２から受け付け、データ記憶部１０１へ記憶させる。データ分割部１０３は、表形式データを、レコード別（行ごと）に分割したり、項目別（列ごと）に分割したりして、データ記憶部１０１へ記憶させる。表示制御部１０４は、ユーザがデータ操作の要求を入力するためのＧＵＩ（Graphical User Interface）を生成したり、結果を表示するための画面を生成したりする。
【００３８】
縦結合部１０５は、例えば複数の表形式データに含まれるレコードを１つの表形式データに統合する処理（「縦結合処理」とも呼ぶ）を行う。対照群生成部１０６は、集約するレコードを行番号（「レコード番号」とも呼ぶ）の集合として表す対照群を生成する処理を行う。なお、行番号とは、例えば、ＣＳＶデータの１行ごとに先頭から付される通し番号であり、行番号により、表形式データにおいてレコードを一意に特定することができる。横結合部１０７は、例えばキー項目の値が所定の条件を満たす、複数の表形式データのレコードを１レコードに結合する処理（「横結合処理」とも呼ぶ）を行う。集計部１０８は、データ記憶部１０１に記憶された設定に基づいて、値を数値として集計したり、値を文字列として１つのフィールドに統合したりする処理を行う。出力データ生成部１０９は、結合された項目別データから行別データを生成し、ＣＳＶデータとして出力する。
【００３９】
＜装置構成＞
図３は、コンピュータの一例を示す装置構成図である。表形式データ処理装置１及びユーザ端末２は、図３に示すようなコンピュータである。図３に示すコンピュータ１０００は、ＣＰＵ（Central Processing Unit）１００１、主記憶装置１００２、補助記憶装置１００３、通信ＩＦ（Interface）１００４、入出力ＩＦ（Interface）１００５、ドライブ装置１００６、通信バス１００７を備えている。ＣＰＵ１００１は、プログラム（「ソフトウェア」又は「アプリケーション」とも呼ぶ）を実行することにより本実施の形態に係る処理等を行う。主記憶装置１００２は、ＣＰＵ１００１が読み出したプログラムやデータをキャッシュしたり、ＣＰＵの作業領域を展開したりする。主記憶装置は、具体的には、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等である。補助記憶装置１００３は、ＣＰＵ１００１により実行されるプログラムや、本実施の形態で用いる設定情報などを記憶する。補助記憶装置１００３は、具体的には、ＨＤＤ（Hard-disk Drive）やＳＳＤ（Solid State Drive）、フラッシュメモリ等である。主記憶装置１００２や補助記憶装置１００３は、表形式データ処理装置１のデータ記憶部１０１として働く。通信ＩＦ１００４は、他のコンピュータとの間でデータを送受信する。表形式データ処理装置１及びユーザ端末２は、通信ＩＦ１００４を介してネットワーク３に接続される。通信ＩＦ１００４は、具体的には、有線又は無線のネットワークカード等である。入出力ＩＦ１００５は、入出力装置と接続され、ユーザから入力を受け付けたり、ユーザへ情報を出力したりする。入出力装置は、具体的には、キーボード、マウス、ディスプレイ、タッチパネル等である。ドライブ装置１００６は、磁気ディスク、光磁気ディスク、光ディスク等の記憶媒体に記録されたデータを読み出したり、記憶媒体にデータを書き込んだりする。そして、以上のような構成要素が、通信バス１００７で接続されている。なお、これらの構成要素はそれぞれ複数設けられていてもよいし、一部の構成要素（例えば、ドライブ装置１００６）を設けないようにしてもよい。また、入出力装置がコンピュータと一体に構成されていてもよい。また、ドライブ装置１００６で読み取り可能な可搬性の記憶媒体や、フラッシュメモリのような可搬性の補助記憶装置１００３、通信ＩＦ１００４などを介して、本実施の形態で実行されるプログラムが提供されるようにしてもよい。そして、ＣＰＵ１００１がプログラムを実行することにより、上記のようなコンピュータを図２に示した表形式データ処理装置１として働かせる。また、ユーザ端末２は、例えば、ＣＰＵ１００１が実行するインターネットブラウザを介して表形式データ処理装置１へ処理を要求したり、受信した処理結果を表示したりする。
【００４０】
＜ファイル読込処理＞
次に、表形式データ処理装置１が実行する処理を、処理フローを用いて説明する。図４は、ファイル読込処理の一例を示す処理フローである。まず、表形式データ処理装置１の設定処理部１０２は、ＣＳＶファイルの入力を受け付ける（図４：ステップＳ１）。具体的には、設定処理部１０２は、ユーザ端末２からＣＳＶファイルを受信し、データ記憶部１０１に記憶させる。例えば、図５に示すようなＣＳＶファイルが入力される。
【００４１】
図５Ａは、本実施形態に係る表形式データの処理を説明するための図である。図５ＡのＣＳＶファイルは、１行目にカンマ区切りで複数の項目名を有し、２行目以降にカンマ区切りで複数のフィールドを含むレコードを複数有している。また、カンマで区切られた項目名及びフィールドは、それぞれカンマで区切られた順序で対応しており、１つのＣＳＶファイルには、項目名及び各レコードのフィールドが同数存在する。
【００４２】
また、設定処理部１０２は、項目名及びレコードの開始行の入力を受け付ける（Ｓ２）。具体的には、ユーザは、ＣＳＶファイルごとに項目名が登録されている行、及びレコードが登録されている行の開始位置を、ユーザ端末２を介して指定する。一方、設定処理部１０２は、項目名が登録されている行、及びレコードが登録されている行の開始位置を、ＣＳＶファイルと対応付けてデータ記憶部１０１に記憶させる。図５Ａの例では、１行目が項目名の開始位置であり、２行目がレコードの開始位置である。
【００４３】
その後、データ分割部１０３は、ＣＳＶファイルの各行を要素とするリストを生成する（Ｓ３）。具体的には、データ分割部１０３は、例えばＣＳＶファイルの先頭から１行ずつ読み出し、１行目から順に新たな要素としてリストに追加する。ここでは、例えば、図５Ｂに示す表形式データの行リストに示すようなデータが生成される。図５Ｂの行リストでは、リストの各要素が実線で区切られ、各要素にはＣＳＶデータの各レコードが登録されている。
【００４４】
また、データ分割部１０３は、生成された表形式データの行リストを、表形式データのファイル名と対応付けて、データ記憶部１０１へ記憶させる（Ｓ４）。例えば、Ｋｅｙ（キー）をファイル名とし、Ｖａｌｕｅ（値）に行リストを登録した、Ｋｅｙ−Ｖａｌｕｅ形式のデータ構造（いわゆるマップ）で記憶するようにしてもよい。
【００４５】
その後、例えば設定処理部１０２は、未処理のＣＳＶファイルが存在するか判断する（Ｓ５）。未処理のＣＳＶファイルが存在する場合（Ｓ５：ＹＥＳ）、処理はＳ１に戻る。一方、未処理のＣＳＶファイルが存在しない場合（Ｓ５：ＮＯ）、ファイル読込処理を終了する。本実施形態では、ファイル読込処理で読み込まれた１又は複数のＣＳＶファイルを用いて、表形式データを結合したり、集計したりする。
【００４６】
＜縦結合設定処理＞
次に、複数の表形式データに含まれるレコードの和集合を生成する縦結合処理を説明する。図６は、縦結合設定処理の一例を示す処理フローである。
【００４７】
まず、設定処理部１０２は、ユーザ端末２から、複数の表形式データに含まれる項目のうち、対応する項目の入力を受け付ける（図６：Ｓ１１）。ユーザは、結合する複数の表形式データを指定するとともに、結合する表形式データに含まれ、結合後の表形式データにおいて同一の列（項目）に表示する項目の対応付けを指定する。ここでは、同じ実体を示す項目が対応付けられる。例えば、あるＣＳＶファイルにおける「氏名」という項目と、別のＣＳＶファイルにおける「名前」という項目との対応付けが入力される。
【００４８】
また、本ステップでは、１つの表形式データに含まれる複数の項目を結合し、１つの項目として扱うようにしてもよい。設定処理部１０２は、ある表形式データに含まれる複数のフィールドの結合と、他の表形式データに含まれる１のフィールド又は複数のフィールドの結合との対応付けの入力を受け付ける。例えば、あるＣＳＶファイルにおける「苗字」という項目及び「名前」という項目の結合と、他のＣＳＶファイルにおける「氏名」という項目との対応付けが入力される。
【００４９】
図７Ａは、本ステップで入力される対応付けを説明するための図である。図７Ａに示す表の１行目は、項目の通し番号を示している。また、表の２行目は、縦結合後の表形式データの出力項目名を示す。結合後の表形式データの項目名は、ユーザによって入力されるものとする。また、３行目以降の各行は、異なるＣＳＶファイルにおける項目名を示す。そして、同じ列に登録されている項目名は、本ステップにおいて対応付けられた項目名を示す。例えば、４行目に示すＣＳＶファイル「ＡＡＡ」における「苗字」及び「名前」という項目の組合せと、５行目に示すＣＳＶファイル「ＢＢＢ」における「氏名」という項目とが対応付けられている。なお、ＣＳＶファイル名が「共通」の行は、登録されていないＣＳＶファイル（図７Ａの例では、「ＡＡＡ」及び「ＢＢＢ」以外のＣＳＶファイル）にも共通して適用される設定である。
【００５０】
このように、対応する項目がある場合には、ユーザの操作により本ステップで対応付けられる。なお、複数の表形式データには、必ずしも対応する項目があるわけではない。また、本ステップでは、対応する項目をユーザが入力するものとして説明したが、例えば異なる表形式データに含まれる同一の項目名を予め対応付けて提示し、ユーザが適宜修正できるようにしてもよい。
【００５１】
次に、設定処理部１０２は、入力された縦結合の設定データをデータ記憶部１０１に記憶させる（Ｓ１２）。設定処理部１０２は、図７Ａを用いて説明した項目の対応付けに基づいて、例えば、縦結合後の出力項目名に対し、当該出力項目名に対応する複数のＣＳＶファイル名及び項目名を対応付けて登録する。例えば、図７Ｂに示すような、縦結合後の出力項目名のリストを生成して、データ記憶部１０１に記憶させる。
【００５２】
図７Ｂの例では、実線で区切られた、出力項目を表す要素の中に、ＣＳＶファイル名及び項目名が入れ子状に登録されている。なお、ＣＳＶファイル名が空（ＣＳＶファイル名に何も登録されていない）の項目名は、特定のＣＳＶファイルに限らず、出力項目に対応付けられていることを示す。以上で、縦結合設定処理を終了する。縦結合設定処理は、縦結合を行うＣＳＶファイルの組合せについて、予め実行される。
【００５３】
＜項目別リスト生成処理＞
次に、縦結合処理等の前処理として実行される項目別リスト生成処理を説明する。図８は、項目別リスト生成処理の一例を示す処理フローである。
【００５４】
まず、データ分割部１０３は、処理対象の表形式データの行リストを１つ取得する（図８：Ｓ２１）。ここでは、データ分割部１０３は、例えば結合するＣＳＶファイルの行リストを１つデータ記憶部１０１から読み出す。
【００５５】
次に、データ分割部１０３は、行リストから項目名の行（図５Ｂの例では、１行目）にカンマ区切りで登録されている項目名の数を計数する（Ｓ２２）。項目名及びレコードの開始行は、図４のＳ２で指定された情報をデータ記憶部１０１から読み出して用いる。本ステップでは、データ分割部１０３は、処理対象の表形式データに含まれる列（項目名）の数を求める。
【００５６】
その後、データ分割部１０３は、計数された項目名の数だけ項目別リストを生成し、初期化する（Ｓ２３）。例えば、項目別リストに値を登録等するためのクラスを定義しておき、図９に示すようなオブジェクトを項目名の数だけ生成するようにしてもよい。図９のオブジェクトには、値を追加したり項目名を追加したりするためのメソッド（関数）が定義されている。また、本ステップでは、項目別リストに項目名を追加する。これにより、項目名によって項目別リストを識別することができるようになる。なお、項目別リストは、例えば表形式データ中の順序を示す通し番号で識別するようにしてもよい。図９のオブジェクトは一例であり、表形式データの項目ごとに要素を保持するリストを生成できれば、本実施形態は特定のプログラミング言語等には限定されない。
【００５７】
また、データ分割部１０３は、表形式データの行リストから、レコードの登録された要素を１つ読み出す（Ｓ２４）。例えば、図５Ｂに示した行リストから、２行目の要素が読み出される。ここでは、ＣＳＶファイルの１行分に相当するデータ（すなわち、レコード）が読み出される。
【００５８】
次に、データ分割部１０３は、読み出したデータから、カンマで区切られた複数の値を分解し、複数の項目別リストにそれぞれ追加する（Ｓ２５）。ここでは、データ分割部１０３は、ＣＳＶファイルの１行に含まれる、複数の項目に対応する値を、項目の数だけ生成された項目別リストの各々に新たな要素として登録する。
【００５９】
そして、データ分割部１０３は、行リストに未処理の要素が存在するか判断し（Ｓ２６）、未処理の要素が存在する場合（Ｓ２６：ＹＥＳ）は、Ｓ２４の処理に戻る。一方、未処理の要素が存在しない場合（Ｓ２６：ＮＯ）、データ分割部１０３は、表形式データの行リストに未処理のものが存在するか判断する（Ｓ２７）。未処理の行リストが存在する場合（Ｓ２７：ＹＥＳ）、データ分割部１０３は、Ｓ２１の処理に戻る。一方、未処理の行リストが存在しない場合（Ｓ２７：ＮＯ）、データ分割部１０３は、項目別リスト生成処理を終了する。
【００６０】
項目別リスト生成処理では、表形式データに含まれる項目（列）ごとに、各レコード（行）の値を１行目から順に要素として保持するリストが生成される。図５Ｂに示した行リストの場合、例えば、図１０Ａに示すような項目別リストが生成される。図１０Ａには、「No.」、「ID」、「L_Name」、「F_Name」、「Sex」、「Station」及び「Expense」の各項目名に対応する６つの項目別リストが示されている。各項目別リストには、表形式データにおけるレコードの順に対応する順序で、値が要素として保持される。
【００６１】
＜縦結合処理＞
次に、複数の表形式データに含まれるレコードの和集合を生成する縦結合処理を説明する。なお、本実施形態では、図１０Ａに示した項目別リストと、他の表形式データから生成された図１０Ｂに示す項目別リストとが予めデータ記憶部１０１に記憶されているものとする。図１１は、縦結合処理の一例を示す処理フローである。
【００６２】
まず、縦結合部１０５は、縦結合の設定データに基づいて、結合する表形式データを１つ特定する（図１１：Ｓ３１）。また、縦結合部１０５は、縦結合の設定データに基づいて、出力する項目の数だけ出力用の項目別リストを生成し、初期化する（Ｓ３２）。例えば、縦結合部１０５は、図７Ｂに示した設定データを読み出し、要素の数だけ出力用の項目別リストを生成する。項目別リストの生成及び初期化は、図８のＳ２３と同じ処理である。
【００６３】
また、縦結合部１０５は、設定データから出力項目を１つ取得し、項目名を特定する（Ｓ３３）。また、縦結合部１０５は、Ｓ３１で特定された表形式データの項目別リストに、Ｓ３３で取得した出力項目に対応する項目が存在するか判断する（Ｓ３４）。
【００６４】
対応する項目が存在する場合（Ｓ３４：ＹＥＳ）、縦結合部１０５は、Ｓ３１で取得された項目別リストを、出力用の対応する項目別リストに登録する（Ｓ３５）。ここで、縦結合の設定データ（例えば、図７Ｂ）において、複数の項目名が「＋」で結合されている場合、出力用の項目別リスト１つに複数の項目別リストの要素を結合して登録する。一方、対応する項目が存在しない場合（Ｓ３４：ＮＯ）、レコードの数だけ要素に「空」を登録した、出力用の項目別リストを登録する（Ｓ３６）。出力項目に対応する項目が処理対象のファイルには存在しないため、ここでは、空の項目別リストが追加される。このとき、各要素内の値は、所定の区切記号（例えば、カンマやスペース等）で結合される。
【００６５】
その後、縦結合部１０５は、処理対象の表形式データに、未処理の項目別リストが存在するか判断する（Ｓ３７）。未処理の項目別リストが存在する場合（Ｓ３７：ＹＥＳ）、Ｓ３３の処理に戻る。一方、未処理の項目別リストが存在しない場合（Ｓ３７：ＮＯ）、縦結合部１０５は、結合する表形式データに未処理のものが存在するか判断する（Ｓ３８）。未処理の表形式データが存在する場合（Ｓ３８：ＹＥＳ）、Ｓ３１の処理に戻る。一方、未処理の表形式データが存在しない場合（Ｓ３８：ＮＯ）、Ｓ３９の処理に遷移する。なお、結合後の項目に対応する項目別データが存在しない場合は、レコードの数だけ要素に「空」を登録した、出力用の項目別リストを生成するようにしてもよい。
【００６６】
Ｓ３７までの処理によって、例えば図１０Ａに示した項目別リストから、図１２Ａに示すような出力用の項目別リストが生成される。図１２Ａの例では、縦結合の設定データに基づいて、結合される項目別リストの「L_Name」及び「F_Name」の要素が、出力用の項目別リストの「Name」にスペース区切りで結合されて登録されている。また、出力用の項目別リストとして、結合される項目別リストには存在しない「Office」を生成している。「Office」の項目別リストには、レコードの数だけ「空」が登録されている。また、Ｓ３８までの処理によって、図１２Ａに示すような出力用の項目別リストが、結合する表形式データの分だけ生成される。例えば、図１０Ｂに示した項目別リストから、図１２Ｂに示すような出力用の項目別リストが生成される。図１２Ｂの例では、結合する２つの表形式データの項目のうち、図１０Ａに示した「L_Name」及び「F_Name」の項目の結合と、図１０Ｂに示した「Name」の項目とが、１つの項目「Name」に集約されている。
【００６７】
その後、縦結合部１０５は、生成された出力用の項目別リストを、項目ごとに結合する（Ｓ３９）。結合される複数の表形式データから生成された出力用の項目別リスト（図１２Ａ及び図１２Ｂ）が、例えば図１２Ｃに示すように結合される。図１２Ｃでは、一方の項目別リストの要素と、他方の項目別リストの要素との和集合が生成されている。このとき、縦結合の設定データに基づいて、対応する項目は１つの項目別リスト（図１２Ｃでは、「Name」）に登録される。以上で、縦結合処理を終了する。
【００６８】
＜出力処理＞
次に、結合後の項目別データを表形式データとして出力する処理について説明する。図１３は、出力処理の一例を示す処理フローである。
【００６９】
出力データ生成部１０９は、結合された出力用の項目別リストを読み出し、出力用の行別リストを生成する（図１３：Ｓ４１）。例えば、まず、各レコードの値を要素として登録する行別リストを、レコードの数だけ生成及び初期化する。次に、出力用の項目別リストを読み出し、各要素をレコードの順序（すなわち、行番号）に対応する行別リストに新たな要素として登録する。このような処理を出力用の項目別リストのすべてについて行い、行別リストを生成する。例えば、図１２Ｃに示した項目別リストから、図１４Ａに示すような行別リストが生成される。図１４Ａの例では、各要素が実線で囲われ、横方向に隣接する要素が、行別リストを表している。
【００７０】
また、出力データ生成部１０９は、生成された出力用の行別リストを用いて、出力する表形式データの行リストを生成する（Ｓ４２）。生成される行リストの要素は、出力用の行別リストに含まれる要素の間に区切記号を追加して１行に連結した値である。ＣＳＶファイルを出力する場合、出力データ生成部１０９は、区切記号としてカンマを各要素の間に追加する。例えば、図１４Ａに示すような行別リストから、図１４Ｂに示すような行リストが生成される。
【００７１】
次に、出力データ生成部１０９は、生成された行リストを用いて、表形式データを生成する（Ｓ４３）。本ステップで生成される表形式データは、カンマ等の区切記号でフィールドが区切られ、改行でレコードが区切られたテキストデータである。ここでは、出力データ生成部１０９は、Ｓ４２において生成された行リストの要素の各々を１行として、１つのファイルに結合する。例えば、図１４Ｂに示した行リストから、図１４Ｃに示すようなＣＳＶファイルが生成される。なお、ＣＳＶファイルの他、既存の表計算ソフトで読込可能なファイルを生成するようにしてもよい。
【００７２】
以上のように、ファイル読込処理、縦結合設定処理、項目別リスト生成処理、及び縦結合処理によれば、データ項目の異なる表形式データの和集合を生成することができる。また、例えばユーザが予め項目の対応付けを指定することにより、対応付けられた項目を、結合後の表形式データにおいて同一の列にそろえる（すなわち、集約する）ことができる。このような処理は、本実施形態において中間的に生成される項目別データを用いることで、効率的に処理することができる。
【００７３】
＜横結合設定処理＞
次に、横結合処理及び集計処理について説明する。本実施形態に係る横結合処理とは、キー項目の値が所定の条件を満たす、複数のレコードを１つのレコードに統合する処理である。また、本実施形態に係る集計処理とは、キー項目の値が所定の条件を満たす、複数のレコードを集計する処理である。まず、横結合処理で用いられるキー項目を設定するための横結合設定処理について説明する。
【００７４】
図１５は、横結合設定処理の一例を示す処理フローである。本実施形態では、先に説明した縦結合後の表形式データを用いて、複数のレコードを１つのレコードに統合する処理を行う。よって、例えば、図７Ａに示したような縦結合の設定データが予めデータ記憶部１０１に記憶されているものとする。
【００７５】
まず、表示制御部１０４は、出力項目の一覧を生成してユーザ端末２へ送信し、ユーザ端末２の表示装置に表示させる（図１５：Ｓ５１）。本ステップでは、表示制御部１０４は、縦結合の設定データから出力項目を読み出し、ユーザがキー項目を指定するための一覧を生成する。例えば、各項目をパネル状にして表示し、ユーザがクリックしたり又は所定の領域へドラッグアンドドロップしたりしてキー項目を選択できるようにする。
【００７６】
図１６に、画面の一例を示す。図１６の画面は、項目の一覧を表示するための項目一覧表示領域２００１と、指定されたキー項目の一覧を表示するためのキー項目表示領域２００２と、重複値の処理を選択するための重複値処理選択領域２００３と、同一のフィールドに値を結合して表示する際の区切記号を選択するための区切記号選択領域２００４とを含む。項目一覧表示領域２００１には、縦結合後の表形式データの項目の一覧が、項目ごとパネル状に表示されている。
【００７７】
また、設定処理部１０２は、ユーザ端末２からキー項目の指定を受け付ける（Ｓ５２）。本ステップでは、ユーザが画面上で項目のパネルに対して所定の操作を行うことにより、設定処理部１０２はキー項目の指定を受け付ける。所定の操作とは、パネルのキー項目表示領域へのドラッグや、パネルのクリック等である。例えば、図１６に示した画面において、項目一覧表示領域２００１の各パネルをドラッグアンドドロップ可能とし、パネルがキー項目表示領域２００２にドロップされた場合、設定処理部１０２は当該パネルに対応する項目をキー項目として受け付ける。また、表示制御部１０４は、画面上において、ドラッグされた項目のパネルの表示を、キー項目表示領域に移動させる。
【００７８】
キー項目は複数指定できるようにしてもよい。このとき、キー項目表示領域２００２において、指定された順に上から下へパネルが追加される。なお、パネルが追加される方向は上から下には限られず、その他の所定の方向であってもよい。また、ユーザがドラッグすることにより、キー項目表示領域におけるパネルの順序を入れ替えることができるようにしてもよい。ここで、キー項目の順序は、結合後のレコードをまとめる際の優先度を示す。すなわち、結合後のレコードは、キー項目の順序に基づいて、例えば、上位のキー項目の値が同一のレコードは下位のキー項目の値でソートされるように、複数キーによるソートができる。
【００７９】
また、選択されたキー項目には、レコードを集約するための条件を設定する。すなわち、例えば、「完全一致」、「前方一致」、「後方一致」又は「中間一致」のような、名寄せを行う条件を設定する。さらに、当該キー項目についてデータクレンジング（標準化）を行うか否かを指定できるようにしてもよい。
【００８０】
図１７は、キー項目の設定を行うための画面の一例である。図１７の画面には、キー項目の項目名と、「名寄せ判断」の選択肢３００１と、「データクレンジング処理」を行うか否かの選択肢３００２と、設定を登録するための「登録」ボタン３００３が表示されている。例えば、図１６のキー項目一覧に表示されたパネルをクリックすることにより、図１７に示すような、当該パネルが示すキー項目の設定画面が表示される。
【００８１】
「名寄せ判断」の選択肢３００１には、名寄せを行う条件が選択肢として表示されている。本実施形態において「名寄せ」とは、表形式データに含まれる同一の実体に係るレコードをまとめる処理をいう。本実施形態では、キー項目の値の少なくとも一部が一致するレコードを集約する。名寄せを行うことで、例えば同一人物に関するレコードを特定することができ、集計結果がより精確になる。
【００８２】
また、「データクレンジング処理」は、キー項目の値の記述形式を標準化する処理である。例えば電話番号を示す値が、「01-2345-6789」、「01(2345)6789」、「0123456789」等のように異なる記述形式で登録されている場合がある。このような値を標準化することにより、より精度の高い名寄せを行うことができるようになる。例示した電話番号の他、郵便番号、日付、法人名、数値（桁区切りの有無や単位の有無等）、氏名の異体字、住所等について、データクレンジングを行うことにより、記述形式の差異を吸収できる。データクレンジング処理については既存の技術を適用することができる。
【００８３】
データクレンジングを併用した名寄せにより、例えば、（１）異体字で記述された「斉藤」、「斎藤」、「齋藤」、「齊藤」のいずれか、且つ（２）記述形式の異なる「東京都千代田区飯田橋９９−９９−９９ＸＸハイツ１０１号室」、「東京都千代田区飯田橋９９−９９−９９−１０１」、「東京都千代田区飯田橋９９丁目９９番９９号ＸＸハイツ１０１号室」、「千代田区飯田橋９９−９９−９９−１０１」等のいずれか、且つ（３）記述形式の異なるコード番号「１０００５２３」、「１，０００，５２３」、「壱百萬五百二十三」等のいずれかという条件を満たす、（１）〜（３）の様々な組合せを含むレコードを、同一人物に関するレコードとして扱うことができるようになる。
【００８４】
また、設定処理部１０２は、キー項目の設定が完了した場合、キー項目表示領域２００２の表示を更新する（Ｓ５３）。ここでは、キー項目のパネルが、条件の指定が完了したことを示す所定の表示態様に変更される。表示態様としては、背景色、文字色、書体、大きさ、又はこれらの変化パターン（背景色の点滅等）等が挙げられる。例えば、図１６に示したキー項目に対して条件の指定が完了した場合、図１８に示すようにキー項目のパネルの色を変更する。図１８の画面では、条件の指定が完了したパネルの色が、「キー項目」のタイトルの背景色と同一の色に変更されている。なお、図１６及び図１８では、便宜上ハッチングのパターンで色を表している。同一のパターンで塗りつぶされた領域は、同一の色で塗りつぶされているものとする。
【００８５】
その後、設定処理部１０２は、キー項目の入力が終了したか判断する（Ｓ５４）。例えば、ユーザの操作により、図１８の「データ出力」ボタンが押下されると、設定処理部１０２は、キー項目の入力が終了したものと判断する。入力が終了していない場合（Ｓ５４：ＮＯ）、例えばＳ５２の処理に戻り、設定処理部１０２は、さらにキー項目の指定を受け付ける。一方、入力が終了した場合（Ｓ５４：ＹＥＳ）、設定処理部１０２は、データ記憶部１０１に設定を記憶させ、横結合設定処理を終了する（Ｓ５５）。本ステップでは、横結合の設定データとして、「キー項目」及び「名寄せの条件」が設定される。さらに、「データクレンジング処理の要否」や、「重複する値の処理」、「区切記号の種類」等を設定してもよい。
【００８６】
＜集計設定処理＞
次に、集計処理で用いられるキー項目及び集計項目を設定するための集計設定処理について説明する。図１９は、集計設定処理の一例を示す処理フローである。本実施形態では、縦結合後の表形式データを用いて、レコードの値を集計する。よって、図７Ａに示したような縦結合の設定データが予めデータ記憶部１０１に記憶されているものとする。
【００８７】
まず、表示制御部１０４は、出力項目の一覧を生成してユーザ端末２へ送信し、出力項目の一覧をユーザ端末２の表示装置に表示させる（図１９：Ｓ６１）。本ステップの処理は、図１５のＳ５１と同様である。
【００８８】
図２０に、画面の一例を示す。図２０の画面は、項目の一覧を表示するための項目一覧表示領域４００１と、出力される表形式データに新しい項目を追加するための新規項目のパネル４００２と、指定されたキー項目の一覧を表示するためのキー項目表示領域４００３と、集計項目の一覧を表示するための集計項目表示領域４００４とを含む。項目一覧表示領域には、縦結合後の表形式データの項目の一覧が、項目ごとパネル状に表示されている。
【００８９】
また、設定処理部１０２は、ユーザ端末２からキー項目の指定を受け付ける（Ｓ６２）。本ステップは、図１５のＳ５２とほぼ同様であり、ユーザが画面上で項目のパネルに対して所定の操作を行うことによって、設定処理部１０２はキー項目の指定を受け付ける。また、集計設定処理では、集計するレコードの条件として、キー項目の集計方法を選択させる。集計方法は、例えば、「完全一致」、「年別」、「月別」、「日別」、「曜日別」等の選択肢からユーザに指定させる。
【００９０】
図２１は、キー項目の設定を行うための画面の一例である。図２０の画面には、キー項目の項目名５００１と、「キー項目の集計方法」の選択肢５００２とが表示されている。例えば、図２０のキー項目一覧に表示されたパネルをクリックすることにより、図２１に示すような、当該パネルが示すキー項目の設定画面が表示される。
【００９１】
なお、「完全一致」が選択された場合、キー項目の値が完全一致するレコードが集約されて、後述する「集計項目」の値が求められる。また、「年別」、「月別」、「日別」、「曜日別」等の選択肢は、キー項目が日付を表す場合に有効である。それぞれ、所定の期間を単位として集計処理が行われる。
【００９２】
また、設定処理部１０２は、キー項目の設定が完了した場合、キー項目表示領域の表示を更新する（Ｓ６３）。本ステップは、図１５のＳ５３と同様であり、キー項目のパネルが、条件の指定が完了したことを示す所定の表示態様に変更される。例えば、図２０に示したキー項目に対して条件の指定が完了した場合、図２２に示すようにキー項目のパネルの色を変更する。なお、図２０及び図２２でも、便宜上ハッチングのパターンで色を表している。なお、キー項目の指定は、複数受け付けるようにしてもよい。キー項目を複数受け付ける場合の処理は、Ｓ５４（図１５）と同様である。
【００９３】
また、設定処理部１０２は、集計項目の指定を受け付ける（Ｓ６４）。ここでは、ユーザが画面上で項目のパネルに対して所定の操作を行うことによって、設定処理部１０２は集計項目の指定を受け付ける。例えば、図２２に示した画面において、項目一覧表示領域４００１の各パネルをドラッグアンドドロップ可能とし、パネルが集計項目表示領域４００４にドロップされた場合、設定処理部１０２は当該パネルを集計項目として受け付けるようにする。また、表示制御部１０４は、例えば、図２３に示すように、画面上において、ドラッグされた項目のパネルを、集計項目表示領域４００４に移動させる。また、集計項目として、縦結合後の表形式データには存在しない項目を新たに生成することもできる。この場合、ユーザは、例えば、図２２の左下に存在する「新規」のパネル４００２を集計項目表示領域４００４へドラッグする。新規項目については、後に詳述する。
【００９４】
また、集計項目も、複数指定できるようにしてもよい。このとき、集計項目表示領域４００４において、指定された順に上から下へパネルが追加される。なお、パネルが追加される方向は上から下には限られず、その他の所定の方向であってもよい。また、ユーザがドラッグすることにより、集計項目表示領域４００４におけるパネルの順序を入れ替えることができるようにしてもよい。ここで、本実施形態では集計項目の順序に基づいて集計処理を行う。よって、下位の集計項目では、上位の集計項目の結果を用いて集計処理を行うことができる。
【００９５】
また、集計項目には、項目の集計方法を設定する。例えば、値を区切記号で結合した文字列を生成する「結合」や値の出現回数を計数する「頻度」等の「文字集計」、又は「合計」や「平均」、「中央値」、「最頻値」、「最大値」、「最小値」、「分散」、「標準偏差」等の「数値集計（要約統計量）」がユーザによって選択される。
【００９６】
図２４は、集計項目の設定を行うための画面の一例である。図２４の画面には、集計項目の項目名６００１と、「項目の集計方法」の選択肢６００２とが表示されている。例えば、図２３の集計項目表示領域に表示されたパネルをクリックすることにより、図２４に示すような、当該パネルが示すキー項目の設定画面が表示される。
【００９７】
また、設定処理部１０２は、集計項目の設定が完了した場合、集計項目表示領域の表示を更新する（Ｓ６５）。本ステップは、Ｓ６３と同様であり、集計項目のパネルが、条件の指定が完了したことを示す所定の表示態様に変更される。例えば、図２３に示したキー項目に対して条件の指定が完了した場合、図２５に示すように集計項目のパネルの色を変更する。なお、図２３及び図２５でも、便宜上ハッチングのパターンで色を表している。以上のような集計項目の指定も、複数受け付けるようにしてもよい。
【００９８】
その後、設定処理部１０２は、キー項目及び集計項目の入力が終了したか判断する（Ｓ６６）。例えば、ユーザの操作により、図２５の「データ出力」ボタンが押下されると、設定処理部１０２は、キー項目の入力が終了したものと判断する。入力が終了していない場合（Ｓ６６：ＮＯ）、例えばＳ６２の処理に戻り、設定処理部１０２は、さらにキー項目の指定を受け付ける。なお、Ｓ６４の処理に戻り、設定処理部１０２は、集計項目の指定を受け付けるようにしてもよい。図１９の処理フローでは、キー項目の指定及びキー項目表示領域の表示更新（Ｓ６２及びＳ６３）と、集計項目の指定及び集計項目表示領域の表示更新（Ｓ６４及びＳ６５）とを便宜的に連続する処理として説明したが、それぞれ独立した処理である。したがって、ユーザの操作に基づき、任意の順序で、それぞれ任意の回数実行される。一方、入力が終了した場合（Ｓ６６：ＹＥＳ）、設定処理部１０２は、データ記憶部１０１に設定を記憶させ（Ｓ６７）、集計設定処理を終了する。Ｓ６７では、集計処理の設定データとして、例えば、「キー項目」及び「キー項目の集計方法」、並びに「集計項目」及び「項目の集計方法」が設定される。
【００９９】
＜対照群生成処理＞
横結合処理又は集計処理を行う場合、上でも述べた通り、まず縦結合処理を行う。すなわち、図１４Ｃに示したような、複数の表形式データの和集合を処理対象とする。また、横結合処理又は集計処理においても、処理対象の表形式データに対して図８に示した項目別リスト生成処理を行い、項目別リストを生成する。項目別リスト生成処理については、図８に示した通りであるため、説明を省略する。例えば、図１４Ｃに示した表形式データから、図１２Ｃに示したような項目別リストが生成される。
【０１００】
また、横結合処理及び集計処理の処理過程で、項目別リストを用いて集約するレコードを特定するためのデータである「対照群」が、中間的に生成される。本実施形態の対照群とは、キー項目の値が所定の条件を満たすレコード（行）を、行番号の集合で表したものである。対照群生成処理では、例えば、キー項目の値が完全一致するレコードの行番号の集合や、日付形式で記述されたキー項目の値が所定の期間内に属するレコードの行番号の集合が生成される。そして、表形式データ処理装置１は、後述する横結合処理又は集計処理において、対照群を用いてレコードを集約する。
【０１０１】
図２６及び２７は、対照群生成処理の一例を示す処理フローである。対照群生成部１０６は、横結合の設定データ又は集計処理の設定データをデータ記憶部１０１から読み出し、キー項目の項目別リストを１つ取得する（図２６：Ｓ７１）。例えば、図１４Ｃに示した表形式データのうち、「Ｎａｍｅ」がキー項目に指定されている場合、図１２Ｃに示した項目別リストのうち、左から３番目（項目名：Ｎａｍｅ）の項目別リストが取得される。
【０１０２】
また、対照群生成部１０６は、値と行番号のリストとを対応付けて保持する、Ｋｅｙ−Ｖａｌｕｅ形式のマップを生成する（Ｓ７２）。Ｋｅｙには、キー項目の値が登録され、Ｖａｌｕｅには、行番号を要素として保持するリストが登録される。
【０１０３】
次に、対照群生成処理部１０６は、クレンジング処理を行う（Ｓ７３）。本ステップは、例えば、横結合の設定データ又は集計処理の設定データにおいて、クレンジング処理を行う旨の指定がされている場合に行われる。本ステップでは、電話番号、郵便番号、日付、法人名、数値（区切記号の有無や単位の有無等）、氏名の異体字、住所等について、値の記述形式を変更して統一する。これにより、名寄せのような、レコードを集約する処理の精度が向上する。
【０１０４】
また、対照群生成部１０６は、キー項目の項目別リストから要素を１つ取得する（Ｓ７４）。本ステップでは、キー項目の値が、レコードの登録順（行番号順）に１つずつ読み出される。そして、対照群生成処理部１０６は、読み出された要素の値が対照群に存在するか判断する（Ｓ７５）。ここでは、対照群生成処理部１０６は、読み出された要素の値が属すべき集合がすでに生成されているか判断する。図１２Ｃの例では、例えば「Ｎａｍｅ」の値が読み出され、値が同一の集合がすでに存在するか判断される。読み出された要素の値が対照群に存在しない場合（Ｓ７５：ＮＯ）、対照群生成部１０６は、読み出された要素の値と関連付けて、当該要素の行番号をリストに登録する（Ｓ７６）。一方、読み出された要素の値が対照群に存在する場合（Ｓ７５：ＹＥＳ）、対照群生成部１０６は、合致する値と関連付けられた行番号のリスト（すなわち、集合）に、当該要素の行番号を追加する（Ｓ７７）。
【０１０５】
その後、対照群生成部１０６は、キー項目の項目別リストに未処理の要素が存在するか判断する（Ｓ７８）。未処理の要素が存在する場合（Ｓ７８：ＹＥＳ）、Ｓ７４の処理に戻る。キー項目を集約する条件が「完全一致」であり、図１２Ｃの左から３番目に示した「Ｎａｍｅ」の項目別リストについて処理を行う場合、１行目から３行目までは同一の値が対照群に存在しないため、新たな行番号の集合が生成される。４行目の「Fujita Tomoko」は１行目と同一である。よって、Ｓ７４において４行目が取得された場合、Ｓ７５において合致する値が対照群に存在すると判断される。同様に５行目は、２行目と同一の集合に追加される。図１２Ｃの左から３番目の項目別データからは、図２８Ａに示すような対照群が生成される。
【０１０６】
また、対照群生成部１０６は、未処理のキー項目が存在するか判断する（Ｓ７９）。未処理のキー項目が存在する場合（Ｓ７９：ＹＥＳ）、処理は図１６のＳ７１に戻る。一方、未処理のキー項目が存在しない場合（Ｓ７９：ＮＯ）、対照群生成部１０６は、対照群は１種類であるか判断する（Ｓ８０）。なお、ここまでの処理で、キー項目の数だけ対照群が生成されている。また、対照群の生成において、図２８Ａに示したような値と行番号の集合との組み合わせを保持していたが、ここでは値との対応付けを削除し、行番号の集合のみを処理の対象とする。
【０１０７】
対照群が複数存在する場合（Ｓ８０：ＮＯ）、対照群生成部１０６は、２つの対照群を取得する（Ｓ８１）。例えば、対照群に含まれる集合の数が少ない順に２つの対照群を取得する。また、対照群生成部１０６は、取得した２つの対照群の積集合を生成する（Ｓ８２）。そして、対照群生成部１０６は、取得した２つの対照群を、生成した積集合で置換する（Ｓ８３）。その後、Ｓ８０の処理に戻る。一方、Ｓ８０において対照群が１種類であると判断された場合（Ｓ８０：ＹＥＳ）、対照群生成部１０６は、対照群生成処理を終了する。
【０１０８】
以上の対照群生成処理により、対照群生成部１０６は、図２８Ｂに示すような、値とは対応付けされていない行番号の集合を、データ記憶部１０１に記憶させる。なお、後述する横結合処理や集計処理では、行番号の集合がわかればレコードを集約することができる。
【０１０９】
また、出力する表形式データにおいてレコードをソートする場合は、対照群生成処理において行番号の集合をソートしておく。仮に、「英字」及び「数字」という２つのキー項目を有する表形式データから、図２９Ａに示すような行番号の集合が生成されたとする。ここでは、「英字」の値が「Ａ」、「Ｂ」及び「Ｃ」である行番号の集合が、「英字」の昇順にソートされている。また、「数字」の値の昇順に行番号の集合をソートすると、図２９Ｂのような行番号の集合が生成されたものとする。図２９Ｂでは、「数字」の値が「０」及び「１」である行番号の集合が生成されている。このようなデータに対して、キー項目が「英字」、「数字」の順に、複数キーでのソートを行う場合、図２９Ｃに示すような積集合が生成される。図２９Ｃの例では、「英字」及び「数字」の値が、「Ａ」且つ「１」、「Ｂ」且つ「１」、「Ｃ」且つ「０」である行番号の集合が生成されている。なお、キー項目が「数字」、「英字」の順に、複数キーでのソートを行う場合は、図２９Ｄに示すような積集合が生成される。図２９Ｄの例では、「数字」及び「英字」の値が、「０」且つ「Ｃ」、「１」且つ「Ａ」、「１」且つ「Ｂ」である行番号の集合が生成されている。このようにソートされた順序を保持しておけば、行番号の集合と値との対応付けを削除しても、行番号の集合とその順序に基づいてレコードをソートしつつ集約することができる。
【０１１０】
以上のように、対照群生成処理では、最終的に１つの対照群が生成され、データ記憶部１０１に記憶される。対照群の積集合を求めることにより、複数のキー項目が指定された場合でも、複数のキー項目によって特定されるレコードの集合ごとにレコードを集約することができるようになる。
【０１１１】
＜横結合処理・集計処理＞
対照群が生成された後、横結合処理又は集計処理が行われる。横結合処理は横結合部１０７によって実行され、集計処理は集計部１０８によって実行されるものとする。
【０１１２】
図３０は、横結合・集計処理の一例を示す処理フローである。まず、横結合部１０７又は集計部１０８は、出力用の項目別リストを生成し、初期化する（図３０：Ｓ９１）。ここでは、横結合の設定データ又は集計処理の設定データに基づいて、出力項目の数だけ項目別リストを生成する。
【０１１３】
また、横結合部１０７又は集計部１０８は、処理対象の項目別リストを１つ取得する（Ｓ９２）。横結合処理の場合、図１２Ｃに示したような、縦結合後の項目別リストから項目別リストを１つ取得する。集計処理の場合、キー項目及び集計項目に対応する項目別リストから、１つ取得する。また、横結合部１０７又は集計部１０８は、対照群から集合を１つ取得する（Ｓ９３）。ここでは、図２８Ａに示したような対照群から行番号の集合を１つ取得する。
【０１１４】
そして、横結合部１０７又は集計部１０８は、値を結合するか判断する（Ｓ９４）。ここでは、横結合を行う場合、又は項目の集計方法として「結合」が指定されている場合、値を結合すると判断される。一方、項目の集計方法として、「合計」、「平均」、「中央値」、「最頻値」、「最大値」、「最小値」、「分散」、「標準偏差」等が指定されている場合、値を結合しないと判断される。
【０１１５】
値を結合する場合（Ｓ９４：ＹＥＳ）、横結合部１０７又は集計部１０８は、Ｓ９３で取得した集合に含まれる行番号に対応する要素を、Ｓ９２で取得した項目別リストから取得し、例えば所定の区切記号で結合する（Ｓ９５）。なお、図１６の重複値処理選択領域に示したように、横結合処理においてはキー項目が所定の条件を満たすレコードを１つのレコードにまとめる場合、重複を除いて値を結合するようにしてもよいし、重複を許して値を結合するようにしてもよい。また、横結合処理において、キー項目が所定の条件を満たすレコードを１つのレコードにまとめるのではなく、例えば出現頻度の順にソートするようにしてもよい。
【０１１６】
一方、Ｓ９４において値を結合しないと判断された場合（Ｓ９４：ＮＯ）、集計部１０８は、値を算出する（Ｓ９６）。ここでは、横結合部１０７又は集計部１０８は、Ｓ９３で取得した集合に含まれる行番号に対応する要素を、Ｓ９２で取得した項目別リストから取得し、項目の集計方法に基づいて、合計したり平均を算出したりする。
【０１１７】
Ｓ９５又はＳ９６の後、横結合部１０７又は集計部１０８は、結合した値又は集計した値を出力用の項目別リストに新たな要素として登録する（Ｓ９７）。そして、横結合部１０７又は集計部１０８は、対照群に未処理の集合が存在するか判断する（Ｓ９８）。未処理の集合が存在する場合（Ｓ９８：ＹＥＳ）、Ｓ９３の処理に戻る。一方、未処理の集合が存在しない場合（Ｓ９８：ＮＯ）、横結合部１０７又は集計部１０８は、未処理の項目が存在するか判断する（Ｓ９９）。横結合処理の場合、図１２Ｃに示したような、縦結合後の項目別リストに、未処理の項目別リストが存在するか判断する。集計処理の場合、キー項目及び集計項目に対応する項目別リストに、未処理のものが存在するか判断する。未処理の項目が存在する場合（Ｓ９９：ＹＥＳ）、Ｓ９２の処理に戻る。一方、未処理の項目が存在しない場合（Ｓ９９：ＮＯ）、横結合部１０７又は集計部１０８は、横結合・集計処理を終了する。
【０１１８】
以上のように、本実施形態では対照群を用いて集約するレコードを特定する。上でも述べたように、対照群の生成は、キー項目の値の各々について、すでに生成された集合（対照群の集合のいずれか）に属するか否かを判断することにより行われる。キー項目の値の各々について、キー項目の他の値の各々と比較するような処理を行う必要がないため、対照群の生成は比較的高速に行うことができる。また、対照群を生成した後は、各集合と当該集合に属するレコードの値との関連付けは保持する必要がない。すなわち、対照群の各集合は、行番号のみを保持している。このような対照群を記憶するために必要なメモリの容量は比較的少なくなる。
【０１１９】
＜新規項目生成処理＞
次に、集計処理において新しい項目の生成が指示された場合の処理について説明する。例えば、図２３に示した画面において集計項目表示領域に「新規」のパネルが追加された場合、図１９のＳ６４において、設定処理部１０２は、値の係数、計算式の入力、又は条件式の入力をユーザ端末２から受け付ける。図３１は、新規項目の設定画面の一例を示す図である。例えば、図２３において、集計項目表示領域に「新規」パネルが追加され、追加された当該パネルがクリックされると、ユーザ端末２の表示部には、図３１に示すような画面が表示される。
【０１２０】
図３１の例では、新規項目の名称７００１と、「キーカウント」、「計算」及び「条件」の各ボタン７００２とが表示されている。「キーカウント」が押下されると、キー項目含まれる同一の値ごとに個数が計数される。「計算」が押下されると、ユーザ端末２には、計算式を入力するための画面が表示される。図３２は、計算式を入力するための画面の一例を示す図である。図３２の画面には、集計項目の一覧を表示するための領域８００１と、演算式又は固定値を入力するためのテンキー８００２と、計算式を項目のパネル及びテンキーのパネルで表示するための計算式の表示領域８００３と、計算式を文字列で確認するための確認用計算式の表示領域８００４とを有する。集計項目の一覧には、図２５等の集計項目表示領域に追加されたパネルが表示されている。また、本実施形態では、当該新規項目よりも上位に登録されている項目を用いて計算式を作成することができる。すなわち、上位に登録されている他の新規項目の計算結果を用いて、さらに新規項目を定義することができる。
【０１２１】
また、「条件」が押下されると、ユーザ端末２には、条件式を入力するための画面が表示される。図３３は、条件式を入力するための画面の一例を示す図である。図３３の例では、集計項目の一覧９００１と、条件を定義する領域９００２と、条件に合致する場合の出力値を設定する領域９００３と、条件に合致しない場合の出力値を設定するための領域９００４とが表示されている。ユーザは、例えば、集計項目と任意の値との大小関係が指定された条件を満たす場合と満たさない場合とについて、出力する値を設定することができる。また、条件式は「ＡＮＤ」（論理積）又は「ＯＲ」（論理和）で接続して複数定義することができる。条件式の場合も、当該新規項目よりも上位に登録されている集計項目を用いてさらに条件式を作成することができる。
【０１２２】
新規項目を設定する場合、集計項目の設定データには、「項目の集計方法」として、頻度を係数する項目、計算式又は条件式が設定される。
【０１２３】
図３４は、新規項目生成処理の一例を示す処理フローである。まず、集計部１０８は、集計処理の設定データを読み出し、新規項目を１つ取得する（図３４：Ｓ１０１）。また、集計部１０８は、新規項目の集計処理が条件式又は計算式であるか判断する（Ｓ１０２）。条件式又は計算式である場合（Ｓ１０２：ＹＥＳ）、集計部１０８は、対照群の集合を１つ取得する（Ｓ１０３）。
【０１２４】
そして、集計部１０８は、条件式の判断又は計算式の算出を行う（Ｓ１０４）。また、集計部１０８は、条件式の判断結果又は計算式の算出結果を出力用の項目別リストに新たな要素として登録する（Ｓ１０５）。そして、集計部１０８は、未処理の集合が対照群に存在するか判断し（Ｓ１０６）、未処理の集合が存在する場合（Ｓ１０６：ＹＥＳ）、Ｓ１０３の処理に戻る。一方、未処理の集合が存在しない場合（Ｓ１０６：ＮＯ）、Ｓ１１１の処理に遷移する。一方、Ｓ１０２において、条件式又は計算式でないと判断された場合（Ｓ１０２：ＮＯ）、集計部１０８は、対照群の集合を１つ取得する（Ｓ１０７）。そして、集計部１０８は、対照群の集合に含まれる値の数を計数する（Ｓ１０８）。そして、集計部１０８は、出力用の項目別リストに新たな要素として登録する（Ｓ１０９）。
【０１２５】
その後、未処理の集合が存在するか判断する（Ｓ１１０）。未処理の集合が存在する場合（Ｓ１１０：ＹＥＳ）、Ｓ１０７の処理に戻る。一方、未処理の集合が存在しない場合（Ｓ１１０：ＮＯ）、又はＳ１０６において未処理の集合が存在しないと判断された場合（Ｓ１０６：ＮＯ）、集計部１０８は、未処理の新規項目が存在するか判断する（Ｓ１１１）。未処理の新規項目が存在する場合（Ｓ１１１：ＹＥＳ）、Ｓ１０１の処理に戻る。一方、未処理の新規項目が存在しない場合（Ｓ１１１：ＮＯ）、集計部１０８は、新規項目生成処理を終了する。
【０１２６】
例えば、図１２Ｃの項目別リストのうち、「Ｎａｍｅ」をキー項目として横結合する場合、図２８Ｂに示す対照群が生成される。図２８Ｂの対照群に基づいて項目別リストの要素を集約すると、１行目及び４行目の要素、２行目及び５行目の要素、並びに３行目の要素が横結合後の項目別リストの要素になる。図３５Ａに、横結合後の項目別データの例を示す。図３５Ａの各項目別リストのうち、１行目の要素は、図１２Ｃの１行目及び４行目の要素を集約したものである。同様に、図３５Ａの２行目の要素は、図１２Ｃの２行目及び５行目の要素を集約したものである。図３５Ａの３行目の要素は、図１２Ｃの３行目の要素に相当する。
【０１２７】
また、横結合後の項目別リストにおいて、重複する値をフィールド内に残す場合は、図３５Ｂのような項目別リストが生成される。図３５Ｂの例では、「Ｎａｍｅ」の項目別リストの１行目及び２行目の要素に、それぞれ同一の値が２つずつ保持されている。キー項目以外の項目についても、結合後の項目別リストにおいて１つの要素に複数の値を結合して登録してもよいし、重複を除いて登録してもよい。さらに、重複を除いた上で当該値が出現した頻度を示す数値を登録するようにしてもよい。
【０１２８】
また、図示は省略するが、集計処理を行う場合は、キー項目及び集計項目について項目別リストが生成される。そして、対照群の集合ごとに、設定された集計方法に基づいて集計される。
【０１２９】
以上のようにして、横結合後の項目別リスト、又は集計処理後の項目別リストがすべて生成される。これらの項目別リストを表形式データとして出力するためには、図１３を用いて説明した出力処理を行う。
【０１３０】
＜変形例＞
本実施形態では、項目別リスト生成処理によって、表形式データを項目別リストに分解して扱う。上記の説明では、縦結合処理から出力処理を行うパターン、及び縦結合後の表形式データを用いて横結合・集計処理から出力処理を行うパターンについて説明した。しかし、本実施形態に係る処理のパターンはこれらに限られない。例えば項目別リストを用いて、縦結合処理、横結合処理、集計処理の順に処理を行ったり、このようにして生成した複数の表形式データを用いてさらに縦結合処理を行ったりすることができる。
【０１３１】
本実施形態では、表形式データ処理装置１が、ネットワーク３を介して各ユーザ端末２へサービスを提供するという構成を説明したが、このような態様には限られない。例えば、表形式データ処理プログラムをインストールしたユーザ端末２が、ネットワーク３への接続を行うことなく、本実施の形態に係る処理を実行するようにしてもよい。この場合、例えば、表形式データ処理装置は入力Ｉ／Ｆを介してユーザからのデータ操作の指示を受け付ける。また、表形式データ処理装置は、出力Ｉ／Ｆを介してモニタ等の出力装置に結果を出力する。
【０１３２】
また、本実施形態で示した処理フローは例示であり、処理結果が変わらない限りにおいて処理の順序を変更したり、並列に処理を行うようにしてもよい。画面の例についても適宜レイアウト等を変更することができる。
【０１３３】
＜＜バッチ処理に係る実施形態＞＞
本実施形態に係る装置は、いわゆる表形式データを処理する。表形式データとは、例えば、カンマやタブ、スペース等の区切記号（すなわち、「デリミター」）によって要素（「フィールド」、「列」、「項目」、「属性」又は「値」とも呼ぶ）が区切られ、改行によってレコード（「行」とも呼ぶ）が区切られたテキストデータである。本実施形態では、表形式データのうち、先頭から所定数の行をタイトル行として扱う。すなわち、先頭から所定数の行に含まれる要素を、フィールド名（「列名」、「項目名」、「属性名」等とも呼ぶ）として扱う。このとき、空の行があれば自動的に削除等するようにしてもよい。また、その他の行をデータレコードとして扱う。そして、データレコードに含まれる要素（「値」とも呼ぶ）を結合処理や集計処理等の対象とする。
【０１３４】
具体的には、本実施形態に係るプログラムは、表形式データに含まれる要素を配列（リスト）に保持し、後述する様々な処理を行う。また、本実施の形態に係る表形式データは、１つの要素としてさらに入れ子状に配列を保持する場合もある。すなわち、表形式データの１つのフィールドに、複数の値を保持できる構成とする。また、本実施の形態では、要素を基本的に文字列として扱う。ただし、集計処理等においては要素が数値、日時等であるか判断し、所定の形式でない要素を検出した場合はエラーメッセージを出力するようにしてもよい。
【０１３５】
＜機能構成＞
図３６は、表形式データを処理する表形式データ処理装置の一例を示す機能ブロック図である。本実施形態に係る表形式データ処理装置４は、データ記憶部４０１と、入出力部４０２と、制御部４０３と、縦結合部４０４と、横結合部４０５と、集計部４０６と、グループ化部４０７と、検索部４０８と、外部連携部４０９と、バッチ処理部４１０とを有する。
【０１３６】
データ記憶部４０１は、例えば、本実施形態で処理の対象となる表形式データ、処理の内容を示すスクリプトデータ、処理結果として生成される表形式データ、その他処理において中間的に生成されるデータを保持する。また、本実施形態に係る処理を実行するための設定も記憶される。本実施の形態では、ＣＳＶデータが、表形式データ処理装置４のデータ記憶部４０１に予め記憶されているものとする。
【０１３７】
入出力部４０２は、データ記憶部４０１に記憶されている表形式データをユーザの指定に基づいて読み出したり、処理結果として生成される表形式データをデータ記憶部４０１に書き出したりする。制御部４０３は、ユーザの操作に基づき、縦結合処理、横結合処理、集計処理、グループ化処理、検索処理、外部連携処理等といった処理（プロセスとも呼ぶ）を１つ以上用いて、プロセスを順に実行する処理であるジョブを定義する。なお、ジョブの定義に基づいて、縦結合部４０４、横結合部４０５、集計部４０６、グループ化部４０７、検索部４０８、外部連携部４０９等が処理を実行する。また、ジョブの定義は、一連の処理を実行するためのスクリプトとして、例えばＸＭＬ（Extensible Markup Language）形式で保存される。なお、ここではプログラムのソースコード自体でなく、本実施形態に係るプログラムが読み込む設定データを「スクリプト」と呼んでいる。
【０１３８】
縦結合部４０４は、１以上の表形式データに含まれるレコードを１つの表形式データに統合する処理（「縦結合処理」と呼ぶ）を行う。また、縦結合処理を実行するための設定をユーザの操作によって受け付ける。横結合部４０５は、例えばキー項目の値が所定の条件を満たす、複数の表形式データのレコードを１レコードに結合する処理（「横結合処理」と呼ぶ）を行う。また、横結合処理を実行するための設定をユーザの操作によって受け付ける。
【０１３９】
集計部４０６は、設定に基づいて、値を数値として集計したり、値を文字列として１つのフィールドに統合したりする処理を行う。グループ化部４０７は、表形式データに含まれる値を所定のグループに分け、クロス集計を行う。また、クロス集計された状態の表形式データを、条件に従って分割する処理（グループ化解除）を行う。なお、横結合部４０５、集計部４０６、グループ化部４０７を総称して本発明における集約部とも呼ぶ。
【０１４０】
検索部４０８は、所定の検索条件に基づいて表形式データからレコードを抽出する。外部連携部４０９は、本実施形態に係る処理を行うプログラム以外のアプリケーションプログラムを起動させる。バッチ処理部４１０は、制御部４０３が定義したジョブを１つ以上用いて、ジョブを順に実行する処理であるバッチ処理を定義する。なお、バッチ処理の定義に基づいて、所定の日時に所定のジョブが所定の順序で起動される。なお、機能の詳細については、後述する。
【０１４１】
＜装置構成＞
表形式データ処理装置４も、図３に示すようなコンピュータである。図３に示すコンピュータ１０００は、ＣＰＵ（Central Processing Unit）１００１、主記憶装置１００２、補助記憶装置１００３、通信ＩＦ（Interface）１００４、入出力ＩＦ（Interface）１００５、ドライブ装置１００６、通信バス１００７を備えている。ＣＰＵ１００１は、プログラム（「ソフトウェア」又は「アプリケーション」とも呼ぶ）を実行することにより本実施の形態に係る処理を行う。主記憶装置１００２は、ＣＰＵ１００１が読み出したプログラムやデータをキャッシュしたり、ＣＰＵの作業領域を展開したりする。主記憶装置は、具体的には、ＲＡＭ（RandomAccess Memory）やＲＯＭ（Read Only Memory）等である。補助記憶装置１００３は、ＣＰＵ１００１により実行されるプログラムや、本実施の形態で用いる設定情報などを記憶する。補助記憶装置１００３は、具体的には、ＨＤＤ（Hard-disk Drive）やＳＳＤ（Solid State Drive）、フラッシュメモリ等である。主記憶装置１００２や補助記憶装置１００３は、表形式データ処理装置４のデータ記憶部４０１として働く。通信ＩＦ１００４は、他のコンピュータとの間でデータを送受信する。通信ＩＦ１００４は、具体的には、有線又は無線のネットワークカード等である。表形式データ処理装置４は、通信ＩＦ１００４を介してネットワークに接続されていてもよい。入出力ＩＦ１００５は、入出力装置と接続され、ユーザから操作を受け付けたり、ユーザへ情報を提示したりする。入出力装置は、具体的には、キーボード、マウス、ディスプレイ、タッチパネル等である。ドライブ装置１００６は、磁気ディスク、光磁気ディスク、光ディスク等の記憶媒体に記録されたデータを読み出したり、記憶媒体にデータを書き込んだりする。そして、以上のような構成要素が、通信バス１００７で接続されている。なお、これらの構成要素はそれぞれ複数設けられていてもよいし、一部の構成要素（例えば、通信ＩＦ１００４、ドライブ装置１００６等）を設けないようにしてもよい。また、入出力装置がコンピュータと一体に構成されていてもよい。また、ドライブ装置１００６で読み取り可能な可搬性の記憶媒体や、フラッシュメモリのような可搬性の補助記憶装置１００３、通信ＩＦ１００４などを介して、本実施の形態で実行されるプログラムが提供されるようにしてもよい。そして、ＣＰＵ１００１がプログラムを実行することにより、図３に示したコンピュータを図３６に示した表形式データ処理装置４として働かせる。
【０１４２】
＜機能の詳細＞
次に、表形式データ処理装置４の機能について説明する。図３７は、本実施形態に係るジョブの概略図である。表形式データ処理装置４は、フォーマット（すなわち、列や列の名称といった表形式データの構成）の異なる複数の表形式データから、指定した条件のデータを抽出し、縦横自在に結合を行うことができる。また、横方向の結合をする際、データクレンジングを行うことにより、結果の精度を上げることができる。結合処理の他、集計や検索等も行うことができ、設定したスケジュールでこれらの処理を連携させて実行することもできる。なお、作成する表形式データは新たなファイルとして出力し、入力された表形式データは更新しない方が、例えばユーザが試行錯誤しつつ処理を繰り返す上では好ましい。これらの機能の設定は、例えばＸＭＬ形式で保存することができる。
【０１４３】
＜縦結合＞
縦結合とは、例えばデータフォーマットの異なる複数の表形式データ（入力データ）に含まれるレコードを統合し、新たな表形式データ（出力データ）を生成する処理である。図３８及び図３９は、縦結合処理の入力データの一例である。図３８は、「社員交通費清算.csv」というファイル名の表形式データであり、８件のレコードを含んでいる。図３９は、「営業経費.csv」というファイル名の表形式データであり、８件のレコードを含んでいる。図３８及び図３９の列名及び順序は異なっているが、２つの表形式データは内容的に対応する項目を一部に含んでいる。また、図４０は、縦結合処理の出力データの一例である。図４０の表形式データは、図３８の８件及び図３９の８件に対応するレコードを含んでいる。すなわち、縦結合部４０４は、入力データに含まれるレコードを縦方向に結合（積み重ね）する。さらに、図４０においては、所定の列同士が対応付けられている。また、図３８における列「名前」は、図３９における列「lastName」及び列「FirstName」の結合と対応付けられている。なお、入力される表形式データは複数でなく１つであってもよい。この場合、出力される表形式データの列名を変更することはできるが、データレコードの要素は入力データと変わらない。なお、縦結合処理は、縦結合部４０４によって実行される。
【０１４４】
図４１は、縦結合の設定画面（縦結合列編集画面）の一例を示す図である。図４１のテーブルは、「ＣＳＶファイル名」の列と、各ＣＳＶファイルに含まれる列の対応付けを示す列（「番号」、「日付」、「名前」・・・）とを含んでいる。図４１の上段に表示されている列の名称（「番号」、「日付」、「名前」・・・）は、出力ファイルの列名を表している。すなわち、図４１において同一の列に表示されている各ＣＳＶファイルの列は、出力ファイルにおいて対応付けられている。なお、出力ファイルの列名は、ユーザが変更することができる。また、図４１に示す列の順序は、出力ファイルにおける列の順序を表している。「名前」の列のように、一方のＣＳＶファイルにおける複数の列の結合を、他方のＣＳＶファイルにおける１つの列に対応付けることもできる。また、他方のＣＳＶファイルのいずれの列とも対応付けられない列が存在してもよく、入力ファイルの少なくとも一部の列は出力ファイルに出力されなくてもよい。また、３つ以上のＣＳＶファイルを対応付けることも可能である。
【０１４５】
また、図４１に示した縦結合列編集画面において「ベースファイル選択」ボタンが押下されると、図４２に示すような縦結合ベースファイル選択画面が表示される。図４２の画面では、「ＣＳＶファイル名」の列に、読み出されたＣＳＶファイルの名称が表示される。また、「データサイズ」の列には、ＣＳＶファイルのファイルサイズが表示される。「日付」の列には、ＣＳＶファイルの更新日が表示される。「選択」の列のチェックボックスには、縦結合の基準とするＣＳＶファイルにユーザがチェックを入れる。本実施形態では、基準とするＣＳＶファイルの属性名を用いて所定の優先順位に従い、出力データの属性名を設定するものとする。
【０１４６】
また、図４１の画面において「編集」ボタンが押下されると、操作メニューが表示される。操作メニューは、「編集」、「削除」、「右側に移動」、「左側に移動」、「右側に属性を追加」、「左側に属性を追加」、「キャンセル」といったメニューを含む。ユーザが「編集」を選択すると、図４３に示すような表示属性抽出設定画面が表示される。表示属性抽出設定画面については、後述する。「削除」を選択すると、当該列が削除される。「右側に移動」を選択すると、当該列が右隣りと入れ替わる。「左側に移動」を選択すると、当該列が左隣りと入れ替わる。「右側に属性を追加」を選択すると、当該列の右側に新たな列が１つ追加される。「キャンセル」を選択すると、メニューの選択が中止される。
【０１４７】
また、縦結合列編集画面では、設定の状態に応じてフィールドの色が変更されるようにしてもよい。例えば、薄紫色は、新しい属性名と同一であり、表示属性抽出設定画面で個別に属性指定をしていない状態を示す。また、クリーム色は、表示属性抽出設定画面で個別に属性指定を行った状態を示す。さらに、オレンジ色は、表示属性抽出設定画面でＣＳＶファイル選択を解除した状態を示す。そして、白色は、表示属性抽出設定画面で新しい属性名と一致する属性名がＣＳＶファイル中に存在しない状態を示す。なお、プロセス復元をした場合は、新規プロセス作成時に薄紫色であったパネルは、クリーム色となる。
【０１４８】
また、図４１の操作メニューから「編集」が選択された場合、図４３に示すような表示属性抽出設定画面が表示される。図４３の画面は、「新しい属性名」のテキストボックス、「ＣＳＶファイル名」の欄、「ＣＳＶファイルの属性名」のチェックボックス、「ＣＳＶファイルの内容」の行、設定を保存する「設定」ボタンが含まれている。「新しい属性名」のテキストボックスには、属性名が表示される。新しい属性名は、ユーザが修正できる。「ＣＳＶファイル名」の欄には、ＣＳＶファイル名が表示される。「ＣＳＶファイルの属性名」のチェックボックスは、個別に属性の関連付けを行う場合にユーザがチェックする。なお、例えば、「都道府県」及び「市区町村」の２つの属性を結合して１つの属性としたい場合、「都道府県」と「市区町村」とにチェックをする。「ＣＳＶファイルの内容」の行には、ＣＳＶファイルのデータレコードの１行目が表示される。表示属性抽出設定画面には、以上のような情報が、ＣＳＶファイルの数だけ表示される。また、縦結合の設定として、列同士の対応付け等、図４１から図４３を用いてユーザが設定した内容がデータ記憶部４０１に記憶される。
【０１４９】
＜横結合＞
横結合とは、所定の列に含まれる要素の集合に基づいてレコードを統合（集約とも呼ぶ）し、新たな表形式データを生成する処理である。具体的には、例えば縦結合等で得られた１つの表形式データを処理対象として、ユーザが指定したキー属性の値に基づきレコードを横方向に結合する。後述するデータクレンジング機能を用いることで、住所や名前といった要素の集合を特定する際に、表記の揺れを吸収して処理を行うことが可能である。また、データ欠損、重複データの確認、データ品質のチェック等を行うこともできる。
【０１５０】
図４４は、横結合の処理対象となる表形式データ（入力データ）の一例である。図４４は、図４５及び図４６に示すような表形式データを用いて縦結合処理したものである。図４４では、図４５の「会社名」及び図４６の「会社」という項目が１つの列に揃えられている。その他の項目は、対応付けされておらず、図４４の一部のフィールドは空になっている。横結合では、キー属性の値が同一である複数のレコードを１レコードにまとめ（「名寄せ」とも呼ぶ）、キー以外の属性については複数のレコードに含まれていた値を１つのフィールドにデリミター又は改行で区切って列挙するようにしてもよい。この場合、１つのフィールド内に同一の値が複数存在するときは、重複を除くようにしてもよいし、重複を除かないようにしてもよい。また、横結合では、いわゆるマスタデータにあたる表形式データを用いて、他の表形式データに存在しない項目のフィールドを補完（「自動補完」とも呼ぶ）するようにしてもよい。図４４の属性「会社」をキー属性として、キー属性の値が同一（完全一致）のレコードを１行にまとめると、図４７のようになる。図４７の例では、キー属性の値が同一のレコードを基準として、図４６にない「社員数」の列を、いわゆるマスタデータである図４５の要素で補完している。なお、補完の処理は、縦結合を行う際、補完元となる属性を左側に配置しておくものとし、表型データ上の優先レコード（マスタデータ）を判別する。また、マスタデータがキー属性で一意に特定される場合に、優先レコードの内容から補完を実行可能とする。最後に、優先レコードは削除される。なお、横結合のキー属性は、標準化（データクレンジング）を行うようにしてもよい。例えば、値に含まれる法人名が「株式会社」、「（株）」、「カ）」等である場合に、同一として扱うことができる。また、「完全一致」の他、「前方一致」、「後方一致」、「中間一致」等の場合に同一であると判断するようにしてもよい。
【０１５１】
図４８及び図４９は、横結合の設定を行う画面の一例を示す図である。図４８の画面（横結合画面とも呼ぶ）は、「属性一覧」と、「キー属性」と、「重複する値の処理」と、「値の間の接続因子」とを指定するための領域を含む。「属性一覧」の領域には、入力ファイルである表形式データに含まれる属性の一覧が表示される。表示されている属性のパネルを「キー属性」の領域へドラッグアンドドロップすることにより、ユーザは「キー属性」を指定できる。なお、キー属性の領域に複数のキー属性が表示されている場合、ユーザはパネルをドラッグしてキー属性の順序を入れ替えることもできる。
【０１５２】
また、キー属性の指定の詳細は、図４９のような画面（横結合キー設定画面とも呼ぶ）を介して行う。図４９の画面は、「名寄せ判断」と、「データクレンジング処理」とを指定するための領域を含む。「名寄せ判断」は、「完全一致」、「中間一致」、「前方一致」又は「後方一致」から、ユーザがいずれかをクリックすることで選択される。ここで、キー属性を複数指定する場合、各パネルの名寄せ判断の設定に関わらず、「完全一致」として動作するものとする。また、データクレンジングを行う場合は、ユーザは「標準化（データクレンジング）をする」のチェックボックスにチェックし、プルダウンメニューからデータクレンジングの種類を選択する。図４９の例では、「法人名」が選択されている。
【０１５３】
また、図４８に示すように、ユーザは「重複する場合の処理」について、「１行にまとめ且つ重複を除く」、「１行にまとめ且つ重複を除かない」、「１行にまとめず頻度でソートする」、「１行にまとめず自動補完する」のいずれかをクリックして選択できる。さらに、１行にまとめる場合は、「値の間の接続因子」について、キー属性以外の属性について１つのフィールドにまとめられる複数の要素を区切る記号を選択する。選択肢としては、「カンマ」、「スラッシュ」、「改行」及び「スペース」がある。図４８及び図４９を用いて説明したような項目が、横結合処理の設定情報としてデータ記憶部４０１に記憶される。なお、図４８や図４９の設定画面において、パネルの色が設定の状態を表すようにしてもよい。例えば、水色は、未設定の状態を表す。また、紫色は、横結合キー設定画面において設定済の状態を表す。また、横結合の設定として、図４８及び図４９の画面を介してユーザが指定した内容が、データ記憶部４０１に記憶される。
【０１５４】
ここで、図５０から図５９を用いて、「重複する値の処理」及び「値の間の接続因子」別の出力例を説明する。例えば、図５０に示すような社員の交通費清算のデータを入力データとし、「血液型」をキー属性として横結合するものとする。重複を除き且つ値の間の接続因子をカンマとする出力例は、図５１のようになる。同様に、重複を除き且つ接続因子をスラッシュとする出力例は、図５２のようになる。また、重複を除き且つ接続因子を改行とする出力例は、図５３のようになる。重複を除き且つ接続因子をスペースとする出力例は、図５４のようになる。また、重複を除かず且つ接続因子をカンマとする出力例は、図５５のようになる。同様に、重複を除かず且つ接続因子をスラッシュとする出力例は、図５６のようになる。また、重複を除かず且つ接続因子を改行とする出力例は、図５７のようになる。そして、重複を除かず且つ接続因子をスペースとする出力例は、図５８のようになる。さらに、１行にまとめず且つ頻度ソートを行う場合の出力例は、図５９のようになる。
【０１５５】
＜クレンジング及びユーザ定義辞書＞
横結合や後述する集計、グループ化において、標準化（データクレンジング）を行うことができる。標準化は、揺れのある表記に対して名寄せを行う。例えば、「名寄せ判断」が「完全一致」を選択した場合に指定する。データクレンジングの方法として、電話番号、郵便番号、日付、法人名、数値、和文解析、英文解析、氏名、住所、ユーザ辞書のいずれかを選択することができる。
【０１５６】
電話番号は、「03-1234-5678」、「03(1234)5678」、「0312345678」といった表記の違いを同一であるものとして扱う。郵便番号は「〒273-0039」、「273-0039」、「2730039」といった表記の違いを同一であるものとして扱う。日付は、GGGGyyMMdd（平成250110,H250110）、yyMMdd（130110）、yyyyMMdd（20130110）、GGGGyy年MM月dd日（平成25年01月10日,H25年01月10日）、yyyy年MM月dd日（2013年01月10日）、GGGGyy/MM/dd（平成25/01/10,H25/01/10）、yy/MM/dd（13/01/10）、yyyy/MM/dd（2013/01/10,2013/1/10 9:06:39）、yy-MM-dd（13-01-10）、GGGGyy-MM-dd（平成25-01-10,H25-01-10）、yyyy-MM-dd（2013-01-10）、yy年MM月dd日（13年01月10日）といった表記の違いを同一であるものとして扱う。法人名は、（株）、機種依存文字によるマーク及び株式会社、（有）、機種依存文字によるマーク及び有限会社、（医）及び医療法人、（社）及び社団法人、（財）及び財団法人、（合）及び合資会社、（宗）及び宗教法人、（学）及び学校法人、（相）及び相互会社、（資）及び合資会社、（名）及び合名会社、（独）及び独立行政法人、（特）及び特別認可法人、（福）及び福祉法人、並びに一般、公益、協議会及び連合会の有無といった表記の違いを同一であるものとして扱う。数値は、\12,300、12300、12,300、壱万弐千参百、一万二千三百といった表記の違いを同一であるものとして扱う。和文解析は、「△△太郎です」、「△△  太郎」、「あいう△△太郎」といった文を解析して名前等を抽出する。英文解析は、SankakuTaro、Sankaku Taro、sankaku taroといった英文における標記の違いを同一であるものとして扱う。氏名は、齋藤たろう、齊藤たろう、斉藤たろう、斎藤たろうといった感じの異体字を同一であるものとして扱う。住所は、「千葉県船橋市印外○丁目□番×号△△△ハイツB-567号室」、「船橋市印外○-□-×-567」、「千葉県船橋市印外○-□-×-567」、「千葉県船橋市印外○丁目□番×号B-567号室」、「千葉県船橋市印外○丁目□番×号567号室」といった表記の違いを同一であるものとして扱う。
【０１５７】
ユーザ辞書は、ユーザが定義する辞書ファイルに表記のゆれや同義語をあらかじめ設定して用いる。表記のゆれや同義語をあらかじめ設定することにより、あいまいな値を正規化して扱うことができる。また、一括して文字を置換するための辞書（一括文字置換辞書）も選択できる。ユーザ辞書は、間柄（親子間関係）と同義語による名寄せを行う辞書である。正規表現ユーザ辞書は、正規表現による名寄せを行うための辞書である。置換用ユーザ辞書は、登録した内容をもとに、文字置換を一括で行うための辞書である。名寄せ関連の辞書は、例えば、順位１：間柄と同義語、順位２：正規表現のような優先順位をつけて適用される。
【０１５８】
ユーザ辞書は、例えば図６０のように、テキストエディタなどで内容を編集できるものとする。図６０は、間柄と同義語のユーザ辞書の記載例である。図６０では、語句を模式的にアルファベットで示している。間柄（親子間関係）の入力は、例えば、語句を半角スラッシュ「/」で区切って入力する。スラッシュの左側に親の語句、スラッシュの右側に子の語句を入力する。同義語の入力は、例えば、語句を半角カンマ「,」で区切って入力する。また、先頭に「#」を付した行は、コメントとして扱い、処理には用いない。
【０１５９】
図６１に、図６０のユーザ辞書を図化した語句の関係の一例を示す。なお、図６１における円形で囲われたアルファベットは、１つの語句を表している。例えば、「Ｃ」「Ｄ」「Ｐ」は同義語、「Ｃ」は親「Ａ」と、「Ｐ」は親「Ｏ」と間柄（親子間関係）である。なお、間柄と同義語は、自動的に連携するものとする。具体的には、図６０において「Ｋ」は直接的には「Ｉ」との親子間関係が定義されているのみである。自動的に連携することにより、最上位概念を取得する場合、「Ｋ」を指定すると、「Ｋ」−「Ｉ」−「Ｈ」−「Ｇ」−「Ｑ」−「Ｏ」の順に辿り、最上位の語句「Ｏ」を取得することができる。また、「Ｃ」及び「Ｐ」のように複数の同義語が別々の親と紐付いている場合、同義語「Ｃ」「Ｄ」「Ｐ」は自然順序で並べ替えられ、一番近い親と紐付く。自然順序とは、例えば、文字であればアルファベット順、数値であれば値の小さい順である。なお、図６０のようなユーザ辞書において、同義語のうち一番左に定義されている語句に紐づけるようにしてもよい。図６０のようなユーザ辞書が設定されている場合、図６１の語句「Ｄ」は、同義語「Ｃ」と紐づけられる。さらに、語句「Ｃ」は、親「Ａ」と紐づけられる。また、ある語句の下位概念を取得する場合、例えば当該語句の下位に接続されたすべての子及びそれらの同義語を取得するものとする。具体的には、「Ｈ」を指定すると「Ｉ」、「Ｋ」、「Ｊ」、「Ｍ」、「Ｌ」を取得できる。このように、各語句は、最上位の親、もしくは所定の優先順位に基づく同義語、又は下位に接続されたすべての子及びそれらの同義語と紐づけられるものとする。
【０１６０】
本実施形態では、例えば、間柄として組織内の部署の構成を定義することで、部署ごとに名寄せや後述する集計を行うことができる。また、間柄として、製品を構成する部品を階層的に定義することで、製品の構成要素ごとに名寄せや集計を行うこともできる。新旧製品についてこのような集計結果の結果を比較することで、新旧製品の部品の互換性をチェックすることもできる。なお、同義語とは、同一概念（同概念）の関係を意味する。また、間柄とは、上位概念及び下位概念の関係を意味する。本実施の形態では、ユーザが設定した辞書に基づいて自由度の高い名寄せ等を行うことができるようになる。
【０１６１】
また、図６２は、正規表現のユーザ辞書の入力例である。「.?」は、０又は１個の文字の存在を示す。よって、「パ.?ツ」には、「パーツ」、「パ−ツ」、「パツ」等が該当する。なお、「パーーツ」は該当しない。「.*」は、０個以上の文字の存在を示す。よって、「.*前田.*」には、「あいう前田」、「前田」、「前田か」等が該当する。一般的な正規表現が使用できるものとし、上記以外の表現については説明を省略する。
【０１６２】
また、図６３は、置換のユーザ辞書の入力例である。図６３の例では、語句を「/」で区切って入力している。「/」の左側の語句は、置換後の語句を表し、「/」の右側の語句は、置換元の語句を表す。なお、置換基の語句は、「,」で複数入力できる。図６３のようなユーザ辞書を利用すると、「ＪＡＰＡＮ」という語句は、「ＪＸＰＸＰ」に置換される。
【０１６３】
＜集計＞
集計とは、１つの表形式データを処理対象として、キー属性を含む所定の条件に基づいて値群を要約統計量値として出力する機能である。集計処理後は、キー属性の値が設定した条件を満たすレコードごとに集計属性が集計（すなわち、集約）される。また、求められた値又は元の値群に対して四則演算を行い、さらに所定の条件に基づく計算結果を出力することもできる。また、関数を用いてデータの加工を行うこともできる。さらに、数値の集計以外に、条件に該当するデータを計数（カウント）したり、条件に該当するデータに印をつけることもできる。
【０１６４】
例えば、図４０に示した縦結合処理の出力データが、集計処理の入力データであるものとする。また、図６４は、集計処理の出力データの一例である。図４０の「駅名」及び「日付」をキー属性として、「値」、「給与」をそれぞれ合算し、集計の対象となったレコード数（該当数）、所定の条件式を満たすか否かによるフラグ（問題）を年月ごとに集計すると、図６４のようになる。
【０１６５】
また、図６５から図７１は、集計処理の設定をするための画面の一例を示す図である。図６５の集計の設定画面（集計画面）は、「属性一覧」、「新規属性」、「キー属性」、「集計属性」を設定するための領域を含む。「属性一覧」の領域には、入力データに含まれる属性の一覧が表示される。「新規属性」の領域には、入力データにない項目を設定する場合にユーザがドラッグする「新規」パネルが表示される。「キー属性」の領域は、キー属性として用いる属性を表すパネルをユーザがドラッグアンドドロップするための領域であり、設定されているキー属性が表示される。なお、キー属性に設定されたパネルは並べ替え可能としてもよい。また、キー属性の設定後はパネルが二段表示となり、上段には属性名が表示され、下段には、後述する集計キー設定画面の集計方法の内容が表示される。「集計属性」の領域は、集計の対象となる属性を表すパネルをユーザがドラッグアンドドロップするための領域であり、設定されている集計属性が表示されている。ユーザは、「集計属性」の領域に「新規」パネルをドラッグアンドドロップすることにより、集計属性に新規属性を追加することができる。新規属性とは、レコード数、算術演算の結果、条件判定の結果、所定の関数処理の結果等、新たな属性として追加したものである。なお、先（集計属性領域の上方）に設定されている新規属性を用いて、後（集計属性領域の下方）の新規属性を定義することもできる。
【０１６６】
図６６は、キー属性を設定するための画面（集計キー設定画面）の一例である。なお、図６６の画面は、ユーザが選択したキー属性について、集計方法を選択するための領域を含む。集計方法としては、「完全一致」、「ユーザ辞書」、「年別」、「月別」、「日別」、「週別・年単位」「週別・月単位」及び「曜日別」の選択肢が示されており、ユーザはいずれかをクリックすることで選択できる。なお、「年別」から「曜日別」は、値が日付の場合に有効となる。
【０１６７】
図６７は、集計属性を設定するための画面（集計属性設定画面）の一例である。図６７の画面は、ユーザが選択した集計属性について、文字集計の種類又は数値集計の種類を選択するための領域を含む。文字集計の種類には、「結合」及び「頻度」がある。結合は、値をカンマ区切りで出力する機能である。頻度は、値の出現回数をカッコ内に出力する機能である。数値集計の種類には、「合計」、「平均」、「最大」、「最小」、「中央値」、「最頻値」、「分散」及び「標準偏差」がある。合計は、全ての数値を足し合わせた値を算出する機能である。平均は、合計の算術平均を算出する機能である。最大は、最大値を特定する機能である。最小は、最小値を特定する機能である。中央値は、有限個のデータを大きさの順に並べたとき中央に位置する値を特定する機能である。最頻値は、標本群で最も頻繁に出現する値を特定する。分散は、標本分散を算出する。標準偏差は、標本標準偏差を算出する。ユーザはいずれかをクリックすることにより、集計の種類を選択することができる。なお、集計属性には、「新規」パネルを登録することもできる。
【０１６８】
図６８は、集計属性として新規属性を設定するための画面（集計追加属性画面）の一例である。すなわち、図６８の画面は、図６５の画面において集計属性に追加された新規属性の設定をする際に表示される。図６８の画面は、新規属性の名称を入力するための領域と、新規属性の種類を選択するための領域とを含む。新規属性の名称には、ユーザが文字列を入力する。そして、入力された文字列が、出力データの属性名に設定される。新規属性の種類には、「カウント」、「計算」、「条件」及び「関数処理」の選択肢がある。カウントは、キー属性画面で指定した属性の個数を出力する機能である。すなわち、「カウント」が選択された場合、図６６の「集計キー設定」画面で設定された条件を満たすレコード群に含まれるレコード数を計数し、当該新規項目の値とする。計算は、計算結果を出力する機能であり、後述する計算画面で詳細を設定する。条件は、設定された判定条件の判定結果を出力する機能であり、後述する条件画面で詳細を設定する。関数処理は、設定した関数処理の結果を出力する機能であり、後述する関数処理画面で詳細を設定する。なお、図６８の設定画面において、パネルの色が設定の状態を表すようにしてもよい。例えば、水色は、未設定の状態を表す。また、紫色は、横結合キー設定画面において設定済の状態を表す。黄色は、新規属性が未設定の状態を示す。
【０１６９】
図６９は、「計算」の設定をするための画面（計算画面）の一例である。図６９の画面は、集計属性の一覧を表示する領域と、四則演算の設定をするためのテンキー領域とを含む。ユーザはこれらを組み合わせて、当該新規属性の値を算出するための計算式を定義することができる。集計属性には、集計画面集計属性名が表示される。ここでは、設定済みの属性（紫色のパネル）が表示される。また、自パネルより前の新規属性も表示され、計算に用いることができる。演算式の値には、計算式用の数値や演算子を選択する。入力は、集計属性のパネルから選択したり、テンキー領域からドラッグアンドドロップしたりすることにより行う。また、確認用計算式には、計算式の値がテキスト表示される。なお、計算式に誤りがある場合、赤字等で強調表示するようにしてもよい。
【０１７０】
また、図７０は、「条件」の設定をするための画面（条件画面）の一例である。図７０の画面は、集計属性の一覧を表示する領域と、条件式を設定するための領域と、条件に合致する場合に当該新規属性に表示する値及び条件に合致しない場合に当該新規属性に表示する値を入力する領域とを含む。ユーザは、任意の集計属性が所定の条件を満たすか否かを判定するための条件式を設定することができる。条件式は、ＡＮＤ（論理積）又はＯＲ（論理和）で複数接続することもできる。集計属性には、集計画面 の集計属性名が表示される。ここでは、設定済みの属性（紫色のパネル）が表示される。また、新規属性は、自パネルより前の属性が表示される。条件式を設定するための領域には、集計時の条件式を入力する。属性には、条件のもととなる集計属性を選択する。値には、条件の値を入力する。区分には、判定条件を１つ選択する。選択肢として、「一致する」、「を含む」、「以上」、「以下」、「大なり」、「小なり」、「一致しない」、「含まない」、「正規表現」が選択できる。また、「ＡＮＤ」ボタンが押下されると、新たなＡＮＤ条件式の行が追加される。「ＯＲ」ボタンが押下されると、新たなＯＲ条件式の行が追加される。条件に合致の欄には、条件式に合致した値の行に出力する値を、入力又は集計属性から選択する。条件に合致しないの欄には、条件式に合致しない値の行に出力する値を入力または、集計属性から選択する。
【０１７１】
図７１は、「関数処理」を設定するための画面（関数処理画面）の一例である。図７１の画面は、「集計属性」の一覧を表示する領域と、「対象属性」を指定するための領域と、「データ処理関数名」を選択するための領域とを含む。ユーザは、集計属性のパネルを対象属性を設定するための領域にドラッグアンドドロップすることができる。また、ユーザがデータ処理関数名を選択すると、選択されたデータ処理関数名に応じて引数を入力するための領域が表示される。集計属性には、集計画面の集計属性名が表示される。ここでは、設定済みの属性（紫色のパネル）が表示される。また、新規属性は、自パネルより前の属性が表示される。対象属性には、関数処理を行う属性を指定する。データ処理関数名には、関数の分類を選択する。図６５から図７１を用いて説明したような項目が、集計処理の設定情報としてデータ記憶部４０１に記憶される。
【０１７２】
選択肢として、次のような関数がある。「alphabetic」は、アルファベットの文字（A-Zとa-z）のみ抽出する関数である。「left」は、左端から指定された文字数分の文字を取得する関数である。「lefta」は、左端から検索文字を検索し、その文字までの文字を取得する関数である。「leftb」は、左端か検索文字を検索し、その位置までの文字を取得する関数である。「length」は、文字の長さを取得する関数である。「lower」は、英字の大文字を小文字にする関数である。「middle」は、左から指定された位置と文字数を取得する関数である。「multibytechar」は、マルチバイト文字のみ抽出する関数である。「number」は、文字列のうち1文字ずつ判定し数値のみ抽出する関数である。「repeat」は、指定された属性の値(数値)から指定された文字を繰り返して登録する関数である「replace」は、指定された文字を置換する関数である。「replacedic」は、置換辞書の内容をもとに指定された文字を置換する関数である。「right」は、右端から指定された文字を取得する関数である。「righta」は、右端から検索文字を検索し、その文字までの文字を取得する関数である。「rightb」は、右端から検索文字検索し、その位置までの文字を取得する関数である。「substitute」は、左から指定された位置と文字数を置換する関数である。「normalizeaddress」は、あいまいな住所を標準化する関数である。「normalizecompany」は、会社名を標準化する関数である。「normalizedate」は、日付をスラッシュ(/)で区切る関数である。「normalizedateISO」は、日付を正規化する関数である。「jnounphrase」は、文章から一般的な名詞のみを抽出する関数である。「normalizename」は、名前を正規化する関数である。「normalizenumber」は、漢数字（旧漢字も含みます）を含めた数字を標準化する関数である。「normalizepostcode」は、郵便番号を標準化する関数である。「municipalities」は、住所から市区町村名を取得する関数である。「postaddress」は、郵便番号から住所を取得する関数である。「prefectures」は、住所から都道府県名を取得する関数である。なお、本実施形態において、集計結果出力時の属性名は、『属性名』＋『_（アンダーバー）』＋『下記表の「集計結果の属性名」』とする。
【０１７３】
＜グループ化＞
グループ化とは、表型データを任意の形で分類し集計する機能である。具体的には、所定の列の要素に基づいてレコードを分類して集計（いわゆる「クロス集計」）する機能である。グループ化部４０７は、ユーザが設定したキー属性とグループ化属性に基づいて、集計を行う。キーとなる列の要素には、後述するデータクレンジング機能を用いることができる。
【０１７４】
図７２は、グループ化処理の入力データの一例である。また、図７３は、グループ化処理の出力データの一例である。図７２のような表形式データのうち、「機器名」及び「シリアル番号」をキー属性に設定し、「データ取得日」をグループ属性に設定し、「出力枚数」を値に設定すると、キー属性が同一のレコードごとに、且つデータ取得日ごとにグループ化され、出力枚数の値が集計される。
【０１７５】
また、図７４は、グループ化処理の設定をするための画面（グループ化画面）の一例である。図７４は、「属性一覧」を表示するための領域と、キー属性を設定するための領域と、グループ属性を設定末ための領域と、値の設定をするための領域と、数値集計をするための領域とを含む。属性一覧には、属性名が表示される。キー属性には、グループ化する際のキー属性を指定する。なお、パネルは並べ替え可能である。また、設定後は二段表示となり、上段には属性名が表示され、下段にはグループ化キー設定画面の名寄せ判断及びデータクレンジング処理の内容が表示される。図７４を用いて説明したような項目が、グループ化処理の設定情報としてデータ記憶部４０１に記憶される。
【０１７６】
＜グループ化解除＞
グループ化解除とは、指定したキー列に従い、統合的なデータをレコードに分割する機能である。このとき、要素の名称を値として用いることができる。また、ユーザが指定したキー属性とグループ化解除属性とに従ってレコードを分割する。
【０１７７】
図７２に示したデータが、グループ化解除処理の入力データであるものとする。また、図７５は、グループ化解除処理の出力データの一例である。図７２のような表形式データのうち、「データ取得日」をキー属性に設定し、「機器名」及び「シリアル番号」をグループ化解除属性に設定すると、図７５のように、グループ化解除属性の属性名を値とするレコードに分割される。
【０１７８】
図７６は、グループ化解除処理の設定をするための画面（グループ化キー設定画面）の一例である。図７６は、「属性一覧」を表示するための領域と、「キー属性」を設定するための領域と、「グループ化解除属性」を設定するための領域とを含む。属性一覧には、属性名が表示される。キー属性には、グループ化解除する際のキー属性を指定する。なお、パネルは並べ替え可能である。グループ化解除属性には、グループ化解除する際の属性を指定する。全移動が指定されると、属性一覧のパネルをグループ化解除属性に全て移動する。本実施形態において、グループ化解除結果出力時の属性名は、キー属性の属性名、「sub」、「value」とする。図７６を用いて説明したような項目が、グループ化解除処理の設定情報としてデータ記憶部４０１に記憶される。
【０１７９】
＜ナンバリング＞
ナンバリングとは、レコードに連続番号（「連番」とも呼ぶ）を振るための属性を追加する機能である。複数のファイルを結合した場合であっても、レコードを一意に特定できる連番を追加することができる。例えば、図７２の「Ｎｏ」のように連番を追加することができる。図７７は、ナンバリングを設定するための画面の一例である。図７７は、属性名を入力するための領域を含む。ユーザは、連番を振るための属性に任意の名称を付けることができる。
【０１８０】
＜検索＞
検索とは、データフォーマットの異なる複数の表形式データや結合後の表形式データから、指定された検索条件にもとづいて、レコードを抽出する機能である。抽出されたレコードをソート（並べ替え）することも可能である。
【０１８１】
図７８は、検索条件を設定するための画面の一例である。図７８の画面は、検索条件式を入力するための領域と、ソート条件を設定するための領域と、属性一覧を表示する領域と、検索条件式生成オプションの領域（検索キーワードの条件式への入力を支援するための領域及び検索範囲の条件式への入力を支援するための領域）とを含む。キーワード検索の条件には、論理積（ＡＮＤ）、論理和（ＯＲ）、否定（ＮＯＴ）を使用することができる。範囲検索の条件には、所定の属性に対し、「完全一致」、「中間一致」、「前方一致」、「後方一致」、「以上」、「以下」、「大なり」、「小なり」、「一致しない」、「含まない」が選択できる。また、ソート条件として、所定の属性に対し「昇順」又は「降順」が指定できる。
【０１８２】
＜外部連携＞
外部連携とは、表形式データ処理装置が保持している他のプログラムを起動する機能である。例えば、本実施形態に係る処理によって出力されるデータを読み込んで用いる他のプログラムに、処理を引き継ぐことができる。プログラムファイルには、外部プログラムの絶対パスを入力する。起動オプションとして、コマンドラインオプションを入力できるようにしてもよい。また、起動後の待機時間（秒）を指定できるようにしてもよい。
【０１８３】
＜ファイル操作＞
また、ＣＳＶファイルの削除、出力、分割を行うこともできる。ファイル分割とは、表形式データを所定の大きさに分割する機能である。例えば、入力される表形式データを物理的に分割することにより、入力データのサイズを小さくすることができ、本実施形態に係る処理を行う際のコンピュータの負荷を低減させることができる。
【０１８４】
＜設定内容の保存・変更＞
設定内容の保存及び復元とは、１以上のプロセスの実行順序及び各プロセスを実行するための設定を定義した設定内容をＸＭＬファイルに保存する処理、並びに保存したファイルを開く処理である。本実施形態では、ＸＭＬファイルに保存される情報により、項目の構成が同一の表形式データに対して、上記のような処理を再度実行することができる。なお、ＸＭＬファイルを再実行情報とも呼ぶ。なお、保存したファイルを開き、定義されたプロセスを実行することができると共に、定義を修正することも可能である。本実施形態では、ＸＭＬファイルに保存される一連のプロセスをジョブとも呼ぶ。
【０１８５】
また、復元時には、各プロセスの出力属性及び入力属性に不整合がないかチェックするようにしてもよい。例えば、ＣＳＶファイルの属性が増減していたり、属性名が変更されている場合には、不整合を検知して画面上で警告表示をするようにしてもよい。
【０１８６】
＜ＸＭＬファイルの内容＞
図７９にＸＭＬファイルの内容の一例を示す。<Set>タグは、データセット項目であり、タグ内には入力ＣＳＶファイルについて記述する。<Process>タグは、プロセスセット項目であり、タグ内には実行する処理について記述する。具体的には検索、縦結合、横結合、集計を設定する。その他、データ宣言部を含んでいてもよい。以下、図７９において使用されていないタグも含め、ＸＭＬファイルで用いられる要素名及び属性名並びにその内容の一例を説明する。
【０１８７】
<Search>タグは、検索項目であり、タグ内にはファイル内検索の条件を記述する。<OneColumnJoin>タグは、縦結合項目であり、タグ内には縦結合に関する設定を記述する。<FullColumnJoin>タグは、横結合項目であり、タグ内には横結合に関する設定を記述する。<Summarization>タグは、集計項目であり、タグ内には集計に関する設定を記述する。<Runtime>タグは、外部連携項目であり、タグ内には外部プログラムの起動について記述する。<Numbering>タグは、ナンバリング項目であり、タグ内にはナンバリングに関する設定を記述する。<Group>タグは、グループ化項目であり、タグ内にはグループ化に関する設定を記述する。<Ungroup>タグは、グループ化解除項目であり、タグ内にはグループ化解除に関する設定を記述する。<Out>タグは、データアウト項目であり、タグ内には出力ＣＳＶファイルについて記述する。<Comment>タグは、コメント項目であり、タグ内には、コメント（文字列）を記載する。
【０１８８】
Searchタグには、ＸＭＬ要素（エレメント）として、検索条件を示す論理式（Fml）が記述される。ソートする場合には、ソート（Sort）要素に昇順（asc）又は降順（desc）が記述される。
【０１８９】
OneColumnJoinタグには、縦結合の設定を表す要素が記述される。ターゲット（Target）は、データセットで指定したファイル内容である。フィールド（Field）は、出力する属性の数だけ記述される。フィールド要素（Cell）には属性名が記述され、さらにファイル名（filename）属性（アトリビュート）に、フルパスのファイル名が記述される。結合（Unite）は、属性の連結が連結する属性の数だけ記述される。結合するセル要素（UCell）には、連結する属性名が記述され、さらにファイル名（filename）属性に、フルパスのファイル名が記述される。新しいフィールド（New）は、出力する属性内容が記述される。フィールド（Field）は、ターゲット（Target）の数だけ記述される。フィールド要素（Cell）には、データアウトの属性名が記述される。
【０１９０】
次に、横結合に関連するタグについて説明する。横結合（FullColumnJoin）は、横結合を示すタグである。キー（Key）には、キー属性が記述され、さらに名寄せ判断（match）属性には、完全一致、前方一致、後方一致、中間一致のいずれかを示す識別情報が記述される。また、クレンジング（cleansing）属性には、使用しない、電話番号、郵便番号、日付、法人名、数値、日本語解析、英字解析、氏名、住所、ユーザ辞書のいずれかが記述される。結合（Add）要素には、重複する値の処理（jointype）属性として、重複除外（一行）、重複（一行）、頻度ソート、自動補完のいずれかを示す識別情報、及び値の間の接続因子（delimiter）属性として、改行、スラッシュ、カンマ、スペースのいずれかを示す識別情報が記述される。
【０１９１】
次に、集計する際の各要素について説明する。Summarizationは集計を示すタグである。また、Keyは、キー要素を示し、キーの数だけ記述され、さらにaggregate属性には、名寄せ判断を示し、完全一致、年別、月別、日別、週別（年単位）、週別（月単位）、曜日別、ユーザ辞書のいずれかを示す識別情報が記述される。Statistic要素は属性集計を示し、出力する属性の数だけ記述される。さらに、flag属性はフラグであり、0-99までの数値で重複しない値が入力される。また、collect属性は集計内容を示し、結合、頻度、合計、平均、中央値、最頻値、最大値、最小値、分散、標準偏差のいずれかを示す識別情報が設定される。また、StatisticNew要素は新規属性集計を示す。また、出力する属性の数だけ属性名が記述され、collect属性は、集計内容であり、カウント、計算、条件、分岐（未使用）、ナンバリング（廃止）、関数処理のいずれかを示す識別情報が設定される。また、fml属性は集計式を示す。集計式の中の括弧において、角括弧内の数字は、フラグで設定した番号、波括弧内の数字は、新規属性集計の０から始まる登録順番を表す。集計式の記述は、集計内容が「計算」の場合、四則演算の式を記述する。集計内容が「条件」の場合、条件式を記述する。集計内容が「関数処理」の場合、関数を記述する。
【０１９２】
Runtimeは、外部連携を示すタグである。File要素には、外部プログラムの絶対パスを記述する。さらに、option属性には、コマンドラインオプションを記述する。Wait属性には、外部プログラム起動後の待ち時間をミリ秒単位で記述する。外部プログラムが終了するまで待機する設定値を設けてもよい。
【０１９３】
Numberingは、ナンバリングを示すタグである。ＸＭＬ要素のうち、Fieldにはフィールド、Cellにはフィールド要素（属性名）を記述する。
【０１９４】
Groupは、グループ化を示すタグである。Key要素は、キーを示す。さらに、match属性には、名寄せ判断として、完全一致、前方一致、後方一致、中間一致のいずれかを示す識別情報が記述される。また、cleansing属性には、クレンジングの種類として、使用しない、電話番号、郵便番号、日付、法人名、数値、日本語解析、英字解析、氏名、住所、ユーザ辞書のいずれかを示す識別情報が記述される。GroupLabel要素には、グループ化属性を示す属性名を記述される。GroupData要素には、グループ化値を示す属性名を記述される。StatisticNew要素には、グループ化集計を示す属性名をグループ化値の数だけ記述される。さらに、collect属性には、グループ化内容として、結合、頻度、合計、平均、中央値、最頻値、最大値、最小値、分散、標準偏差の何れかを示す識別情報を記述する。
【０１９５】
Ungroupは、グループ化解除を示すタグである。Key要素には、キー属性を記述する。Field要素には、属性の数だけ記述される。Unite要素は結合を示し、セル要素が１つの場合は記述されない。UCell要素には、結合するセル要素であるグループ化解除属性名を記述する。
【０１９６】
Outは、データアウトを示すタグである。Saveには、出力するファイルパスを記述する。codeには、文字コードを記述する。Deleteはファイル削除を示し、削除するフォルダ又はファイルパスを記述する。
【０１９７】
Commentは、それぞれのエレメントにコメントを例えば文章として記述するタグである。それぞれの前述のタグ内に処理内容及び担当者、日時などを記述しても良い。
【０１９８】
本実施形態における処理を再実行するための情報は、様々な形式で記憶させておくことが可能である。ＸＭＬファイルは、インターネットブラウザやテキストエディタ等で表示することができ、ユーザにとって確認しやすいものとなる。なお、本実施形態に係るタグの規格は一例であり、設定項目を保持することができる範囲で様々な変更を加えることができる。また、機能の追加に応じてタグの種類を増やしてもよい。
【０１９９】
＜バッチ処理＞
図８０に示すように、バッチ処理は、１以上のジョブを設定されたスケジュールで実行する処理である。図８０の例は、３つのＸＭＬファイルで定義された３つのジョブが連続して動作するバッチ処理を模式的に表している。なお、２以上のジョブによって出力される２以上のＣＳＶファイルを、後続の１つのジョブの入力ファイルとしてもよい。
【０２００】
図８１にバッチ処理の設定画面の一例を示す。バッチ処理では、作成したジョブ（ＸＭＬファイル）を、設定したスケジュール（曜日・時刻・期間）で起動する。図８１の画面は、バッチ処理フィールド、バッチ実行フィールド（スケジュールとオプション）から構成される。また、バッチ処理の設定を記憶させておき、本実施形態に係るプログラムの起動時に、設定されている内容を読み出す。また、複数のジョブを指定した場合、番号（Ｎｏ．）順に実行する。バッチ実行フィールドで指定する日時等は、表形式データ処理装置が備える時計機能を利用して判断される。開始時間には、バッチ実行開始時間を入力する。「バッチ開始」ボタンを押下すると、設定内容に従いバッチを実行する。また、「停止」ボタンを押下すると、実行中のバッチを停止する。スケジュールには、バッチを実行する曜日（日〜土）を指定する。開始日には、バッチ実行開始日を入力する。終了日には、バッチ実行終了日を入力する。メール送信をＯＮにすると、実行結果がエラーの場合に設定した宛先にメールで通知することができる。繰返しをＯＮにすると、繰返し実行とする。図８１を用いて説明した項目が、バッチ処理の設定情報としてデータ記憶部４０１に記憶される。
【０２０１】
＜新規ジョブ実行処理＞
図８２は、新規ジョブ実行処理の一例を示す処理フロー図である。また、図８３は、１つのジョブに含まれるプロセス（処理）の流れを、矢印で接続されたアイコンでグラフィカルに表示するプロセスフィールド画面である。例えば、表形式データ処理装置４は、図８３のような画面を介して、ユーザからジョブの設定及び実行の要求を受ける。図８３の画面は、メニューバーと、ジョブ作成用のボタンと、ジョブに含まれるプロセスを表示するプロセスフィールドとを含む。図８３の例では、４つのファイルが縦結合されて１つの表に統合され、さらに横結合及びＣＳＶファイル出力を実行する一連のプロセスがプロセスフィールドに表示されている。なお、プロセスフィールドに表示される各プロセスやＣＳＶファイル操作のアイコンを、「エレメント」とも呼ぶ。
【０２０２】
図８３の画面において、例えば、「ファイル」メニューから、ＸＭＬ形式で保存したファイルを開き、プロセスフィールドに復元することができる。また、メニューから時間起動の設定を行うバッチ処理画面を開くこともできる。さらに、メニューからキャッシュをクリアできるようにしてもよい。
【０２０３】
また、図８３の画面は、各処理の設定を行うためのボタンを有している。各ボタンは、画面上の左から順に、入力ファイルをプロセスフィールドに追加し、ファイル設定画面を表示する「ファイル設定」ボタン、縦結合のエレメントをプロセスフィールドに追加し、設定画面を表示する「縦結合」ボタン、横結合のエレメントをプロセスフィールドに追加し、設定画面を表示する「横結合」ボタン、集計のエレメントをプロセスフィールドに追加し、設定画面を表示する「集計」ボタン、グループ化のエレメントをプロセスフィールドに追加し、設定画面を表示する「グループ化」ボタン、グループ化解除のエレメントをプロセスフィールドに追加し、設定画面を表示する「グループ化解除」ボタン、ナンバリングのエレメントをプロセスフィールドに追加し、設定画面を表示する「ナンバリング」ボタン、検索のエレメントをプロセスフィールドに追加し、設定画面を表示する「検索」ボタン、外部連携のエレメントをプロセスフィールドに追加し、設定画面を表示する「外部連携」ボタン、プロセス実行時に、指定したＣＳＶファイルを削除するエレメントをプロセスフィールドに追加し、設定画面を表示する「ＣＳＶファイル削除」ボタン、指定したＣＳＶファイルを出力するエレメントをプロセスフィールドに追加し、設定画面を表示する「ＣＳＶファイル出力」ボタン、指定したＣＳＶファイルを分割するエレメントをプロセスフィールドに追加し、設定画面を表示する「ＣＳＶファイル分割」ボタン、作成したプロセスを実行する「実行」ボタン、復元するＸＭＬファイル選択画面を表示する「プロセス復元」ボタン、ＸＭＬファイル保存画面を表示する「プロセス保存」ボタン、操作結果イメージを別画面で表示する「イメージデータビューア」ボタン、プロセスフィールドの内容をリセットする「プロセスリセット」ボタンである。ユーザはこれらのボタンを押下することで、ジョブ（プロセスフィールド）にプロセスを追加したり、プロセスを実行したりすることができる。また、プロセスフィールド上でエレメントを右クリックすると、当該エレメントの処理設定をするための「編集」メニュー、当該エレメントをプロセスフィールドから削除するための「削除」メニュー等（コンテキストメニュー）が表示される。ここで、「編集」を選択した場合も、上で説明した各処理の設定画面が表示されるものとする。さらにエレメントはドラッグアンドドロップにより順序を変更することができる。また、エレメント間の入出力ファイルが整合しない場合は、エレメントの順序を変更できないようにするか、自動的にエレメント内部のデータの整合を取るような処理にしてもよい。
【０２０４】
また、図８３のプロセスフィールド画面において、各エレメントが実行する処理の内容を表示するようにしてもよい。例えば、各エレメントの周囲に表示を追加してもよいし、各エレメントにカーソルを合わせると表示が現れるようにしてもよい。表示の内容は、例えばＸＭＬに設定されるような内容の少なくとも一部を含むようにしてもよい。また、処理エレメント前後の表型データを表示してもよい。例えば、縦結合処理のエレメントであれば、属性の対応付けの少なくとも一部が表示される。また、横結合処理のエレメントであれば、キー属性、名寄せ判断及び重複する値の処理の少なくとも一部が表示される。また、集計処理のエレメントであれば、キー属性及び集計属性の少なくとも一部が表示される。さらに、ユーザが内容を修正及び保存できるようにしてもよい。また、その処理エレメントにコメントとして文章及び修正できるようにしてもよい。また、中間的に生成される表形式データの内容を表示できる機能（イメージデータビューアとも呼ぶ）を設けてもよい。ユーザは、各プロセスで生成される出力データを検証しつつ、ジョブの設定を行うことができる。図８４に、処理の内容及びイメージデータビューアを表示する画面の一例を示す。図８４の例では、各エレメントに吹き出しのアイコンが設けられており、ユーザがクリックしたりカーソルを重ねることで、予め記憶させられているコメントが表示されるものとする。また、吹き出しのアイコンをクリック等することによって、右下に示すような「コメント編集」ウィンドウを表示させ、ユーザがコメントを入力又は修正できるようにしてもよい。図８４の上には、「イメージデータビューア」ウィンドウが表示されている。ここには、例えば、編集中のジョブが最終的に出力する表形式データの内容が表示される。なお、ジョブに含まれるエレメントの各々について、入力ファイル又は出力ファイルの項目の構成又は表形式データの内容を表示できるようにしてもよい（図示せず）。
【０２０５】
このようにすれば、ユーザは「横結合」や「集計」といった処理の具体的な内容を理解することができる。本実施形態に係るジョブは設定の変更が容易であるところ、このような表示があれば、ユーザは最新の仕様を容易に理解することができる。したがって、例えば業務の担当者であるユーザが交代するような場合も、引継ぎがスムーズになる。さらに、ジョブの簡易的な仕様書又は設計書として、プロセスフィールドに含まれる各エレメントの内容及び入出力データのＣＳＶファイルの属性名等を印刷等できるようにしてもよい。
【０２０６】
表形式データ処理装置４の入出力部４０２は、表形式データの読み出しを行う（図８２：Ｓ２０１）。本ステップでは、入出力部４０２は、新規ジョブの処理対象として１以上の表形式データをデータ記憶部４０１から読み出す。表形式データ処理装置４の表示装置には、例えば、図８５に示すようなウィンドウが表示される。図８５の例では、表形式データ「社員交通費清算.csv」及び「営業経費.csv」が読み出され、下段のプロセスフィールドには２つのＣＳＶファイルのエレメントが表示されている。また、ＣＳＶファイルの内容が、上段のイメージデータビューアに表示されている。
【０２０７】
また、制御部４０３は、ユーザの操作を受けて縦結合の設定をデータ記憶部４０１に記憶させ、縦結合部４０４は、縦結合の処理を行う（Ｓ２０２）。結合結果は１つの表形式データで表すことができる。ここでは、一時的にメモリに保持される。また、縦結合処理はジョブの設定が完了してからジョブ全体の実行中に行われるようにしてもよい。ここでは、例えば、図８６に示すようなウィンドウが表示される。図８６の例では、プロセスフィールドに縦結合のエレメントが追加されている。また、イメージデータビューアには、縦結合の結果として生成される表形式データが表示されている。
【０２０８】
次に、制御部４０３は、ジョブの設定が完了したか判断する（Ｓ２０３）。なお、ユーザの操作を介して、設定の保存やジョブの実行、設定操作の終了が指示された場合、ジョブの設定が完了したと判断する。ジョブの設定が完了していないと判断された場合（Ｓ２０３：ＮＯ）、制御部４０３は、ユーザの操作を受けてその他のプロセスをジョブの後尾に追加する（Ｓ２０４）。ここでは、横結合、集計等、任意のプロセスが追加される。また、各プロセスは、前段階のプロセスの出力データを入力データとしてそれぞれの処理を行う。図８７に、横結合及びＣＳＶファイル出力のエレメントが追加された例を示す。図８７のイメージデータビューアには、出力されるＣＳＶファイルの内容が表示されている。
【０２０９】
一方、Ｓ２０３においてジョブの設定が完了したと判断された場合、制御部４０３は、ジョブに含まれるプロセスを再実行するための設定を定義したスクリプト（ＸＭＬファイル）を生成し、データ記憶部４０１に記憶させる（Ｓ２０５）。なお、ジョブの設定が完了した場合にはじめてジョブ全体を実行するようにしてもよいし、ジョブに含まれる任意のプロセスまでの処理を自由に実行できるようにしてもよい。
【０２１０】
このようにすれば、ユーザは、表形式データに対して所望の処理を行い、設定した形式に変換して出力することができるようになる。また、実行した処理を再現するためのスクリプトを保存できるため、例えば前回の処理後に発生した業務データに対して、前回と同様の処理を適用することができるようになる。表計算ソフトが備えるマクロ命令等よりも複雑な処理を容易に定義することができ、また、専用のシステムを開発するよりも処理の作成及び改修が容易になる。したがって、例えば、ユーザが試行錯誤しつつ統計的な分析を行いたい場合や、データ処理のコストを抑えたい場合に有用であるといえる。
【０２１１】
＜バッチ定義処理＞
また、１つ以上のジョブの実行予定を定義しておき、より複雑な処理を自動化することもできる。図８８は、いわゆるバッチ処理の設定を定義するバッチ定義処理の一例を示す処理フロー図である。例えば、表形式データ処理装置４は、図８１に示したような画面を介してユーザからバッチ定義の要求を受ける。
【０２１２】
まず、表形式データ処理装置４の制御部４０３は、ユーザの操作に応じて、ジョブ（ＸＭＬファイル）の追加を行う（図８８：Ｓ２１１）。ここでは、連続して実行する１以上のジョブが実行する順序で登録される。
【０２１３】
次に、制御部４０３は、ユーザの操作に応じて、バッチ処理を起動させるスケジュールを登録する（Ｓ２１２）。「バッチ処理」の内容についてすでに説明したように、曜日、時刻、期間等の条件や、エラーをメールで通知するための設定等が入力され、データ記憶部４０１に格納されるものとする。以上で、バッチ定義処理を終了する。
【０２１４】
バッチ処理は、設定された日時になると、バッチ処理部４１０によって実行される。バッチ処理を行うために、表形式データ処理装置４及び本実施に係るプログラムは予め起動させておくものとする。以上のようなバッチ処理によれば、個々のジョブよりも複雑な処理を実行することができる。また、例えば夜間等にユーザの操作を受けることなく処理を起動するようスケジュールしておくことができるようになる。
【０２１５】
＜変形例＞
本実施形態で説明した処理は、いわゆるクライアント−サーバ型のシステムによって提供されるようにしてもよい。すなわち、表形式データ処理装置４は、ネットワークを介して接続されたユーザ端末から要求を受け、本実施形態で説明した処理を実行して結果をユーザ端末へ返すようにしてもよい。ネットワークは、例えばインターネットやイントラネット等のようなコンピュータネットワークである。なお、表形式データ処理装置４とユーザ端末とを、専用線で接続してもよい。また、１つの表形式データ処理装置に複数のユーザ端末が接続されていてもよいし、複数の表形式データ処理装置４がネットワーク上に存在し、１又は複数のユーザ端末からの要求を分散して処理する構成としてもよい。
【０２１６】
また、例えばサーバ上で動作するいわゆるＳａａＳ（Software as a Service）のようなサービスの機能の１つとして提供されるようにしてもよい。本実施形態では、ＣＳＶファイル等の表形式データを処理対象としている。したがって、外部のＲＤＢＭＳ（Relational DataBase Management System：リレーショナルデータベース管理システム）が管理するデータベースから、例えばＣＳＶ形式でレコードをエクスポートすれば、本実施形態で説明した処理を実行できるようになる。また、本実施形態に係る処理によって出力された表形式データを所定の形式に変換し、外部装置のデータベース等に反映させられるようにしてもよい。
【０２１７】
また、本実施形態で示した処理フローは例示であり、処理結果が変わらない限りにおいて処理の順序を変更したり、並列に処理を行うようにしてもよい。画面の例についても、配置、デザイン等を適宜変更できる。
【０２１８】
＜＜縦結合及び横結合の連続処理に係る変形例＞＞
上述した縦結合及び横結合は、一連の処理として実行することもできる。例えば、縦結合の設定及び横結合の設定を予め記憶部に保持させておく。縦結合の設定は、入力データである複数の表形式データがそれぞれ有する項目間の対応付けを表すデータを含む。横結合の設定は、集約方法を規定するキー項目及び集計項目の指定等を含む。そして、表形式データの和集合の生成（縦結合）と、キー項目が所定の条件を満たすレコードの集約（横結合）とを連続して実行する。また、図７Ａや図４１を用いて説明した縦結合の設定画面においてさらにキー項目を指定させ、いわゆる外部結合（Left join、Right join、又はFull outer join）、または内部結合（Inner join）を実行できるようにしてもよい。
【０２１９】
図８９に、縦結合及び横結合を一連の処理として実行する場合の設定画面の一例を示す。図８９の設定画面は、表の２行目に、「名簿.csv」（以下、「名簿」と呼ぶ）という入力データに含まれる項目名の一覧が表示されている。また、表の３行目は、「会社情報.csv」（以下、「会社情報」と呼ぶ）という入力データに含まれる項目名の一覧が表示されている。なお、表の１行目には、便宜的に項目の通し番号を示している。そして、名簿の項目「勤務先」と会社情報の項目「会社名」とが対応付けられている。このとき、項目４の「編集」ボタンを押下すると、例えば矢印で示すようなメニューが表示されるものとする。そして、「結合キーに設定」又は「結合キーの解除」を選択することにより、当該項目をキー項目として設定したり解除したりすることができる。なお、キーに設定された項目は、図８９に示すように例えば背景色の表示態様を変更して識別可能としてもよい。また、メニューの中から「結合タイプ」として「外部結合」又は「内部結合」を選択することにより、例えば当該キー項目の値が完全一致するレコードについて各入力データの値を外部結合または内部結合する旨の設定を行うようにしてもよい。なお、縦結合及び横結合の処理内容は、上述の通りである。また、メニューのその他の項目については説明を省略する。
【０２２０】
＜＜データプロファイリングに係る実施形態＞＞
上記の実施形態に係る表形式データは、ＣＳＶファイル等であり、各項目についてデータ型が定義されているわけではない。よって、誤りや漏れ、重複等を有する品質の低い表形式データが入力される可能性があり、そのような場合は集約した結果も望ましいものとはならない。本実施形態では、統計的手法を用いて任意の項目に対応付けて保持されている値を可視化し、不適切なデータの検出及び修正を支援する。
【０２２１】
＜機能構成＞
図９０は、本実施形態に係る表形式データ処理装置の機能ブロック図の一例である。図９０の表形式データ処理装置５は、データ記憶部５０１と、データ入力部５０２と、指示受付部５０３と、統計処理部５０４と、チャート出力部５０５と、入力データ表示部５０６と、データ修正部５０７とを含む。データ記憶部５０１は、本実施形態において処理の対象となる表形式データや、本実施形態において修正された表形式データを保持する。データ入力部５０２は、ユーザによって入力データとなる表形式データの指定を受け付け、データ記憶部５０１から指定されたデータを読み出す。指示受付部５０３は、検証する項目（属性）及び検証方法の指定を受け付ける。また、統計処理部５０４は、指定された項目に対応付けて保持されている各レコードの値（要素）に対し、指定された検証方法に基づいて統計処理を行う。統計情報出力部５０５は、統計処理の結果をユーザに対して出力する。統計情報は、指定された検証方法に応じて円グラフ、棒グラフ、ヒストグラム、バブルチャート、ラインチャート、散布図等のチャートによって出力するようにしてもよい。入力データ表示部５０６は、統計処理の対象となった表形式データの内容を表示する。例えば、出力した統計情報に含まれる要素のグループをユーザが指定することにより、指定されたグループに該当するレコードをハイライト表示（強調表示）して、表形式データの内容が表示される。データ修正部５０７は、表示した表形式データに対しユーザから修正の指示を受け付け、値を修正する。ここでは、１件ごとに修正を行うようにしてもよいし、複数の要素に対して一括して修正を行うようにしてもよい。本実施形態に係る表形式データ処理装置５は、スタンドアローンで動作するものとして説明するが、表形式データ処理装置とユーザ端末とがネットワークを介して接続されたクライアント−サーバ型のシステムを形成するようにしてもよい。
【０２２２】
＜装置構成＞
表形式データ処理装置５も、図３に示すようなコンピュータである。図３に示すコンピュータ１０００は、ＣＰＵ１００１、主記憶装置１００２、補助記憶装置１００３、通信ＩＦ１００４、入出力ＩＦ１００５、ドライブ装置１００６、通信バス１００７を備えている。ＣＰＵ１００１は、プログラムを実行することにより本実施の形態に係る処理を行う。主記憶装置１００２は、ＣＰＵ１００１が読み出したプログラムやデータをキャッシュしたり、ＣＰＵの作業領域を展開したりする。主記憶装置は、具体的には、ＲＡＭやＲＯＭ等である。補助記憶装置１００３は、ＣＰＵ１００１により実行されるプログラムや、本実施の形態で用いる設定情報などを記憶する。補助記憶装置１００３は、具体的には、ＨＤＤやＳＳＤ、フラッシュメモリ等である。主記憶装置１００２や補助記憶装置１００３は、表形式データ処理装置５のデータ記憶部５０１として働く。通信ＩＦ１００４は、他のコンピュータとの間でデータを送受信する。通信ＩＦ１００４は、具体的には、有線又は無線のネットワークカード等である。表形式データ処理装置４は、通信ＩＦ１００４を介してネットワークに接続されていてもよい。入出力ＩＦ１００５は、入出力装置と接続され、ユーザから操作を受け付けたり、ユーザへ情報を提示したりする。入出力装置は、具体的には、キーボード、マウス、ディスプレイ、タッチパネル等である。ドライブ装置１００６は、磁気ディスク、光磁気ディスク、光ディスク等の記憶媒体に記録されたデータを読み出したり、記憶媒体にデータを書き込んだりする。そして、以上のような構成要素が、通信バス１００７で接続されている。なお、これらの構成要素はそれぞれ複数設けられていてもよいし、一部の構成要素（例えば、通信ＩＦ１００４、ドライブ装置１００６等）を設けないようにしてもよい。また、入出力装置がコンピュータと一体に構成されていてもよい。また、ドライブ装置１００６で読み取り可能な可搬性の記憶媒体や、フラッシュメモリのような可搬性の補助記憶装置１００３、通信ＩＦ１００４などを介して、本実施の形態で実行されるプログラムが提供されるようにしてもよい。そして、ＣＰＵ１００１がプログラムを実行することにより、図３に示したコンピュータを図９０に示した表形式データ処理装置５として働かせる。
【０２２３】
＜データプロファイリング処理＞
図９１は、データプロファイリング処理の一例を示す処理フロー図である。まず、表形式データ処理装置５のデータ入力部は、ユーザの指示を受けて表形式データを読み出す（図９１：Ｓ３０１）。本ステップでは、上述の実施形態で説明した１以上の表形式データの指定を受け付ける。ここで、例えば図７Ａや図４１に示した設定画面において項目間の対応付けが定義された２以上の表形式データを入力としてもよい。この場合、設定に基づいて縦結合を実施した後の表形式データの和集合に対し、データプロファイリング処理が行われる。
【０２２４】
次に、表形式データ処理装置５の指示受付部５０３は、ユーザの操作に基づき、検証処理の対象となる項目及び検証方法の指定を受け付ける（Ｓ３０２）。本ステップでは、表形式データ処理装置５に接続された表示装置に「データ品質ツール設定」画面を表示し、ユーザからの指定を受け付ける。図９２は、本ステップで表示する画面の一例である「データ品質ツール設定画面」を示す。まず、ユーザは、「抽出項目」のプルダウンメニューから実行する分析のカテゴリを選択する。ここでは、値が所定の表現形式（フォーマット）で記述されているか否かを判断するためのカテゴリを選択する。具体的には、カテゴリとして、「品質分析」、「検索分析」、「パターン分析」又は「品質管理グラフ」のいずれかを選択するものとする。図９２の例では、「パターン分析」が選択されている。
【０２２５】
ここで、カテゴリ「品質分析」の場合は、値が指定された内容であるか否かによってグループ分けし、各グループに含まれる値の件数を集計して、結果を表すチャート（グラフ等の視覚的表示）を出力する。品質分析は、具体的な分析方法として「日付データの抽出」、「一意データの抽出」、「欠損データの抽出」及び「数値データの抽出」を含む。「日付データの抽出」が選択された場合は、さらに引数として項目の指定を受け付ける。そして、指定された項目の値が日付データであるか否か判断し、それぞれの件数を例えば円グラフに表す。日付データであるか否かの判断は、上述したデータクレンジングにおいて日付と判断する、GGGGyyMMdd（平成250110,H250110）、yyMMdd（130110）、yyyyMMdd（20130110）、GGGGyy年MM月dd日（平成25年01月10日,H25年01月10日）、yyyy年MM月dd日（2013年01月10日）、GGGGyy/MM/dd（平成25/01/10,H25/01/10）、yy/MM/dd（13/01/10）、yyyy/MM/dd（2013/01/10,2013/1/10 9:06:39）、yy-MM-dd（13-01-10）、GGGGyy-MM-dd（平成25-01-10,H25-01-10）、yyyy-MM-dd（2013-01-10）、yy年MM月dd日（13年01月10日）といった形式に該当するか否かによって行う。また、「一意データの抽出」が選択された場合も、さらに引数として項目の指定を受け付ける。そして、指定された項目の値がそれぞれ一意であるか否か判断し、それぞれの件数を例えば円グラフで出力する。また、「欠損データの抽出」が選択された場合も、さらに引数として項目の指定を受け付ける。そして、値が空（「Ｎｕｌｌ」、「欠損」とも呼ぶ）であるか否かを判断し、それぞれの件数を例えば円グラフで出力する。また、「数値データの抽出」が選択された場合も、さらに引数として項目の指定を受け付ける。そして、指定された項目の値がそれぞれ数値であるか否かを判断し、それぞれの件数を例えば円グラフで出力する。なお、通貨記号その他の単位を含む場合に数値と判断するか否か定めておくようにしてもよいし、数値と判断するか否か選択できるようにしてもよい。
【０２２６】
また、カテゴリ「検索分析」の場合は、指定した値を検索して該当するか否かによってグループ分けし、各グループに含まれる値の件数を集計して結果を示すチャートを表示する。検索分析は、具体的な分析方法として「後方一致データの抽出」、「前方一致データの抽出」及び「正規表現での抽出」を含む。「後方一致データの抽出」が選択された場合は、さらに引数として項目の指定及び検索する文字列を受け付ける。そして、指定された項目の値が指定した文字列と後方一致するか否かを判断し、それぞれの件数を例えば円グラフに表す。「前方一致データの抽出」が選択された場合も、さらに引数として項目の指定及び検索する文字列を受け付ける。そして、指定された項目の値が指定した文字列と前方一致するか否かを判断し、それぞれの件数を例えば円グラフに表す。また、「正規表現での抽出」が選択された場合は、さらに引数として項目の指定及び検索対象を表す正規表現を受け付ける。そして、指定された項目の値が、指定した正規表現が表す値と一致するか否かを判断し、それぞれの件数を例えば円グラフに表す。正規表現は、例えば図６２に示した正規表現ユーザ辞書で用いた、一般的な正規表現を使用できるものとする。
【０２２７】
また、カテゴリ「パターン分析」の場合は、指定した項目に対応付けられている値をパターンによってグループ分けし、各グループに含まれる値の件数を集計して結果を示すチャートを表示する。パターン分析は、具体的な分析方法として「出現頻度」及び「データパターン化」を含む。「出現頻度」が選択された場合は、さらに引数として項目の指定を受け付ける。そして、指定された項目の値ごとにグループ分けし、それぞれの値の件数を例えば頻度によってソートした棒グラフで出力する。「データパターン化」が選択された場合も、さらに引数として項目の指定を受け付ける。そして、例えば、英字１文字を「Ｗ」、空白１つを「Ｓ」、数字１文字を「Ｄ」、マルチバイト文字１字を「Ａ」、その他の記号等はその値として、データをパターン化し、同一のパターンごとにグループ分けして各グループに含まれる値の件数を例えば件数によってソートした棒グラフで出力する。すなわち、データパターンとは、英字、数字、マルチバイト文字等に値を分類し、出現順及び出現回数を類型化したものである。
【０２２８】
また、カテゴリ「品質管理グラフ」は、指定した項目に対応付けられている値を所定の範囲ごとにグループ分けし、各グループに含まれる値の件数を集計して結果を示すチャートを表示する。検索分析は、具体的な分析方法として「ヒストグラム（日付）」、「ヒストグラム（単位）」、「ヒストグラム（分割）」、「バブルチャート」、「ラインチャート（時系列）」及び「散布図」を含む。「ヒストグラム（日付）」が選択された場合は、さらに引数として項目の指定を受け付ける。そして、Ｘ軸に期間、Ｙ軸に出現頻度を示すヒストグラムを出力する。なお、ビンの数と大きさは自動的に調整する。また、「ヒストグラム（単位）」が選択された場合は、さらに引数として項目及びビンの幅（ビン１つ当たりの範囲）の指定を受け付ける。そして、Ｘ軸に指定された項目の値、Ｙ軸に出現頻度を示すヒストグラムを出力する。なお、Ｘ軸のビンの数と大きさは、指定されたビンの幅に基づいて調整する。また、「ヒストグラム（分割）」が選択された場合は、さらに引数として項目の指定及びＸ軸方向のビンの数を受け付ける。そして、Ｘ軸に指定された項目の値、Ｙ軸に出現頻度を示すヒストグラムを出力する。また、「バブルチャート」が選択された場合は、さらに引数としてＸ軸、Ｙ軸、Ｚ軸それぞれの項目を受け付ける。そして、それぞれの項目の値に応じて、Ｘ座標及びＹ座標の位置にＺ軸の大きさのバブルチャートを出力する。また、「ラインチャート（時系列）」が選択された場合は、さらに引数としてＸ軸の項目（日付形式）及びＹ軸の項目の指定を受け付ける。そして、Ｘ軸に示す日時順に示すＹ軸の値の推移を表すラインチャートを出力する。また、「散布図」が選択された場合は、さらに引数としてＸ軸の項目及びＹ軸の項目を受け付ける。そして、それぞれの項目の値に応じて、Ｘ座標及びＹ座標の位置にプロットした散布図を出力する。なお、それぞれの場合において、欠損値は、例えば「ＮａＮ（Not a Number：非数）」と出力する。
【０２２９】
Ｓ３０２においてカテゴリを選択すると、プルダウンメニューの下部に具体的な分析方法を表す「プロファイル名」が表示され、ユーザはいずれかのプロファイル名を選択する。なお、図９２の例では、選択されたプロファイル名の背景をハッチングで強調している。すなわち、図９２の例では、「出現頻度」が選択されている。そして、いずれかのプロファイル名が選択されると、データ品質設定画面の下部に引数の入力欄が表示される。図９２の例では、項目名を選択するためのプルダウンメニューが表示されている。ユーザは、入力ファイルに含まれる項目名のいずれかを選択することができる。
【０２３０】
その後、表形式データ処理装置５の統計処理部５０４は、受け付けた処理の指示に基づいて統計処理を行う（Ｓ３０３）。図９２の例において、値が「男」又は「女」である性別を保持する項目が引数として指定された場合、各値（「男」及び「女」）について件数を集計する。そして、統計処理部５０４は、それぞれの件数を示す棒グラフを生成する。
【０２３１】
そして、表形式データ処理装置５の統計情報出力部５０５は、集計した統計情報を出力する（Ｓ３０４）。ここで、統計情報とは、Ｓ３０３で算出した集計値及びＳ３０３で生成した棒グラフ（すなわち、チャート）の少なくともいずれかを含むものとする。図９３は、統計情報を表示する「データ品質ツール」画面の一例である。図９３の左側には、入力ファイルにおいて指定された項目に対応付けられている値を、それぞれ集計した結果を示す横棒グラフが表示されている。具体的には、男女それぞれの頻度（件数）が横棒の長さによって視覚的に表示されている。また、図９３の右側上段には、集計結果の頻度を値ごとに示す表が表示されている。件数は左側の棒グラフと対応しており、男女それぞれの件数が数値で表示されている。なお、指定された項目の値について様々な統計量が算出され、画面の右側下段に表示されている。具体的には、統計量として、「合計」、「最大値」、「最小値」、「平均値」、「分散」、「標準偏差」、及び「ＮａＮ（非数の件数）」が算出される。図９３の例では、「ＮａＮ」が１９件であり、その他の統計量はすべてＮａＮとなっている。
【０２３２】
また、表形式データ処理装置５の入力データ表示部５０６は、Ｓ３０４で出力した統計情報の一部を指定する旨の入力を受け付け、対応する入力データを表示する（Ｓ３０５）。本ステップでは、図９３に示す画面において、右側上段の統計情報においていずれかの値又はいずれかの頻度を示す数値を指定すると、画面の右側中段に、入力ファイルにおいて該当するレコード番号の一覧が表示される。図９３の例では、右側上段の表において「女」が指定され、右側中段には性別の項目に「女」が登録されているレコードのレコード番号の一覧が表示されている。なお、統計情報の一部を指定する旨の入力は、画面左側の横棒のいずれかを指定することにより行ってもよい。図９３は出現頻度を分析した例であり、Ｓ３０２において指示された検証方法に基づき、Ｓ３０４及びＳ３０５では、各集計値及び様々なチャートが出力される。
【０２３３】
その後、表形式データ処理装置５のデータ修正部５０７は、ユーザから入力データの修正指示を受け付け、入力データを修正する（Ｓ３０６）。本ステップでは、例えば図９３の右側中段に表示された入力データのレコード番号のいずれかを選択することにより、例えば図３８に示したような入力データにおける選択したレコードを表示し、値を修正できるようにしてもよい。また、一括して修正を反映させる旨の指示を受け付けるようにしてもよい。一括して修正を行う場合は、例えば上述した関数処理を用いて値を修正することができる。上述したように、関数処理によれば、所定の種類の文字を抽出したり、値の表現形式を標準化したりすることができる。仮に、図９３の例において入力データの性別を示す項目に「男」及び「女」以外の値が登録されていた場合、当該値が図９３の左側の棒グラフ及び右側上段の表に現れる。当該値が不適切である場合、ユーザは容易に問題のあるレコードを特定し、修正することができる。なお、修正後の入力データは、上書きして記録するようにしてもよいし、名前を付けて別のファイルとして保存するようにしてもよい。保存したファイルは、上述した縦結合処理、横結合処理、集計処理等に用いることができる。
【０２３４】
また、入力データの一括修正は、例示した関数処理以外によって行うこともできる。例えば、所定の文字列又は欠損データを、指定された文字列等に置換できるようにしてもよい。また、検索条件にはいわゆる正規表現を利用できるようにしてもよい。例えば、ある項目に対応付けて登録されている要素に対し、「＊建設」のように後方一致で「建設」を検索し、索出された要素を「Ｍ建設」のような指定された文字列に置換できるようになる。
【０２３５】
以上により、データプロファイリング処理を終了する。なお、図９１に示したフローチャートは一例であり、入力データの表示や入力データの修正等、一部の処理を実行しなくてもよい。データプロファイリング処理によれば、誤りや漏れ、重複等の不適切なデータを統計的手法によって可視化することにより、検出及び修正を支援することができる。特に、本実施形態に係る表形式データはデリミタによってレコードに含まれる要素が列に区切られたＤＳＶ（Delimiter Separated Values）形式のデータである。例えばＲＤＢのようにスキーマ（メタデータ）が定義されているわけではないため、データ登録時のフォーマットチェックが困難である。すなわち、不適切なデータが登録されることもある。したがって、本実施形態に係るデータプロファイリング処理は、ＤＳＶ形式のような入力データを扱う場合に特に有用であるといえる。
【０２３６】
＜変形例＞
図９２及び図９３の例では対象の項目及び分析方法を１つずつ指定して処理を行ったが、複数の項目を対象として複数の分析を行うようにしてもよい。この場合、例えば、図９１のＳ３０２において、図９２の代わりに図９４のような画面を表示する。図９４は、複数の項目を対象として複数の分析を実行可能な「データプロファイリング設定」画面の一例である。図９４の例では、縦方向に分析方法を列挙し、横方向に表形式データに含まれる項目名の一覧が表示されている。そして、行と列とが交差する升目に設けられたチェックボックスにチェックを入れることにより、当該項目の値に対する当該分析方法による分析の実行を指定することができる。
【０２３７】
図９４の例において、「日付の抽出」以外のチェックボックスにチェックを入れて設定し、データプロファイリングを実行すると、図９１のＳ３０４では、例えば図９５のような結果（「データプロファイリング」画面）が表示される。図９５では、チェックを入れた項目と分析方法との組み合わせについて、集計値が表示されている。なお、図９５の例では、統計量である、合計、最大値、最小値、平均値、分散、標準偏差、ＮａＮ（非数の件数）も、各項目について算出される。このような画面において、件数を指定することにより図９３の右側中段に示したようなレコード番号のリストを表示するようにしてもよい。さらに、レコード番号のリストを選択することで、例えば図３８に示したような入力データを表示し、値を修正できるようにしてもよい。変形例に係るデータプロファイリング処理によっても、誤りや漏れ、重複等の不適切なデータを統計的手法によって可視化することにより、検出及び修正を支援することができる。
【符号の説明】
【０２３８】
１  表形式データ処理装置，１０１  データ記憶部，１０２  設定処理部，１０３  データ分割部，１０４  表示制御部，１０５  縦結合部，１０６  対照群生成部，１０７  横結合部，１０８  集計部，１０９  出力データ生成部
２  ユーザ端末
３  ネットワーク
４  表形式データ処理装置，４０１  データ記憶部，４０２  入出力部，４０３  制御部，４０４  縦結合部，４０５  横結合部，４０６  集計部，４０７  グループ化部，４０８検索部，４０９  外部連携部，４１０  バッチ処理部
５  表形式データ処理装置，５０１  データ記憶部，５０２  データ入力部，５０３  指示受付部，５０４  統計処理部，５０５  統計情報出力部，５０６  入力データ表示部，５０７  データ修正部
【図１】
0006623754.tif 000002
【図２】
0006623754.tif 000003
【図３】
0006623754.tif 000004
【図４】
0006623754.tif 000005
【図５Ａ】
0006623754.tif 000006
【図５Ｂ】
0006623754.tif 000007
【図５Ｃ】
0006623754.tif 000008
【図６】
0006623754.tif 000009
【図７Ａ】
0006623754.tif 000010
【図７Ｂ】
0006623754.tif 000011
【図８】
0006623754.tif 000012
【図９】
0006623754.tif 000013
【図１０Ａ】
0006623754.tif 000014
【図１０Ｂ】
0006623754.tif 000015
【図１１】
0006623754.tif 000016
【図１２Ａ】
0006623754.tif 000017
【図１２Ｂ】
0006623754.tif 000018
【図１２Ｃ】
0006623754.tif 000019
【図１３】
0006623754.tif 000020
【図１４Ａ】
0006623754.tif 000021
【図１４Ｂ】
0006623754.tif 000022
【図１４Ｃ】
0006623754.tif 000023
【図１５】
0006623754.tif 000024
【図１６】
0006623754.tif 000025
【図１７】
0006623754.tif 000026
【図１８】
0006623754.tif 000027
【図１９】
0006623754.tif 000028
【図２０】
0006623754.tif 000029
【図２１】
0006623754.tif 000030
【図２２】
0006623754.tif 000031
【図２３】
0006623754.tif 000032
【図２４】
0006623754.tif 000033
【図２５】
0006623754.tif 000034
【図２６】
0006623754.tif 000035
【図２７】
0006623754.tif 000036
【図２８Ａ】
0006623754.tif 000037
【図２８Ｂ】
0006623754.tif 000038
【図２９Ａ】
0006623754.tif 000039
【図２９Ｂ】
0006623754.tif 000040
【図２９Ｃ】
0006623754.tif 000041
【図２９Ｄ】
0006623754.tif 000042
【図３０】
0006623754.tif 000043
【図３１】
0006623754.tif 000044
【図３２】
0006623754.tif 000045
【図３３】
0006623754.tif 000046
【図３４】
0006623754.tif 000047
【図３５Ａ】
0006623754.tif 000048
【図３５Ｂ】
0006623754.tif 000049
【図３６】
0006623754.tif 000050
【図３７】
0006623754.tif 000051
【図３８】
0006623754.tif 000052
【図３９】
0006623754.tif 000053
【図４０】
0006623754.tif 000054
【図４１】
0006623754.tif 000055
【図４２】
0006623754.tif 000056
【図４３】
0006623754.tif 000057
【図４４】
0006623754.tif 000058
【図４５】
0006623754.tif 000059
【図４６】
0006623754.tif 000060
【図４７】
0006623754.tif 000061
【図４８】
0006623754.tif 000062
【図４９】
0006623754.tif 000063
【図５０】
0006623754.tif 000064
【図５１】
0006623754.tif 000065
【図５２】
0006623754.tif 000066
【図５３】
0006623754.tif 000067
【図５４】
0006623754.tif 000068
【図５５】
0006623754.tif 000069
【図５６】
0006623754.tif 000070
【図５７】
0006623754.tif 000071
【図５８】
0006623754.tif 000072
【図５９】
0006623754.tif 000073
【図６０】
0006623754.tif 000074
【図６１】
0006623754.tif 000075
【図６２】
0006623754.tif 000076
【図６３】
0006623754.tif 000077
【図６４】
0006623754.tif 000078
【図６５】
0006623754.tif 000079
【図６６】
0006623754.tif 000080
【図６７】
0006623754.tif 000081
【図６８】
0006623754.tif 000082
【図６９】
0006623754.tif 000083
【図７０】
0006623754.tif 000084
【図７１】
0006623754.tif 000085
【図７２】
0006623754.tif 000086
【図７３】
0006623754.tif 000087
【図７４】
0006623754.tif 000088
【図７５】
0006623754.tif 000089
【図７６】
0006623754.tif 000090
【図７７】
0006623754.tif 000091
【図７８】
0006623754.tif 000092
【図７９】
0006623754.tif 000093
【図８０】
0006623754.tif 000094
【図８１】
0006623754.tif 000095
【図８２】
0006623754.tif 000096
【図８３】
0006623754.tif 000097
【図８４】
0006623754.tif 000098
【図８５】
0006623754.tif 000099
【図８６】
0006623754.tif 000100
【図８７】
0006623754.tif 000101
【図８８】
0006623754.tif 000102
【図８９】
0006623754.tif 000103
【図９０】
0006623754.tif 000104
【図９１】
0006623754.tif 000105
【図９２】
0006623754.tif 000106
【図９３】
0006623754.tif 000107
【図９４】
0006623754.tif 000108
【図９５】
0006623754.tif 000109