(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」は１行目と同一である。よって、Ｓ７４において４行目が取得された場合、Ｓ７５に
おいて合致する値が対照群に存在すると判断される。同様に５行目は、２行目と同一の集合に追加される。図１２Ｃの左から３番目の項目別データからは、図２８Ａに示すような対照群が生成される。
【００９０】
また、対照群生成部１０６は、未処理のキー項目が存在するか判断する（Ｓ７９）。未処理のキー項目が存在する場合（Ｓ７９：ＹＥＳ）、処理は図１６のＳ７１に戻る。一方、未処理のキー項目が存在しない場合（Ｓ７９：ＮＯ）、対照群生成部１０６は、対照群は１種類であるか判断する（Ｓ８０）。なお、ここまでの処理で、キー項目の数だけ対照
群が生成されている。また、対照群の生成において、図２８Ａに示したような値と行番号の集合との組み合わせを保持していたが、ここでは値との対応付けを削除し、行番号の集合のみを処理の対象とする。
【００９１】
対照群が複数存在する場合（Ｓ８０：ＮＯ）、対照群生成部１０６は、２つの対照群を取得する（Ｓ８１）。例えば、対照群に含まれる集合の数が少ない順に２つの対照群を取得する。また、対照群生成部１０６は、取得した２つの対照群の積集合を生成する（Ｓ８２）。そして、対照群生成部１０６は、取得した２つの対照群を、生成した積集合で置換する（Ｓ８３）。その後、Ｓ８０の処理に戻る。一方、Ｓ８０において対照群が１種類であると判断された場合（Ｓ８０：ＹＥＳ）、対照群生成部１０６は、対照群生成処理を終了する。
【００９２】
以上の対照群生成処理により、対照群生成部１０６は、図２８Ｂに示すような、値とは対応付けされていない行番号の集合を、データ記憶部１０１に記憶させる。なお、後述する横結合処理や集計処理では、行番号の集合がわかればレコードを集約することができる。
【００９３】
また、出力する表形式データにおいてレコードをソートする場合は、対照群生成処理において行番号の集合をソートしておく。仮に、「英字」及び「数字」という２つのキー項目を有する表形式データから、図２９Ａに示すような行番号の集合が生成されたとする。ここでは、「英字」の値が「Ａ」、「Ｂ」及び「Ｃ」である行番号の集合が、「英字」の昇順にソートされている。また、「数字」の値の昇順に行番号の集合をソートすると、図２９Ｂのような行番号の集合が生成されたものとする。図２９Ｂでは、「数字」の値が「０」及び「１」である行番号の集合が生成されている。このようなデータに対して、キー項目が「英字」、「数字」の順に、複数キーでのソートを行う場合、図２９Ｃに示すような積集合が生成される。図２９Ｃの例では、「英字」及び「数字」の値が、「Ａ」且つ「１」、「Ｂ」且つ「１」、「Ｃ」且つ「０」である行番号の集合が生成されている。なお、キー項目が「数字」、「英字」の順に、複数キーでのソートを行う場合は、図２９Ｄに示すような積集合が生成される。図２９Ｄの例では、「数字」及び「英字」の値が、「０」且つ「Ｃ」、「１」且つ「Ａ」、「１」且つ「Ｂ」である行番号の集合が生成されている。このようにソートされた順序を保持しておけば、行番号の集合と値との対応付けを削除しても、行番号の集合とその順序に基づいてレコードをソートしつつ集約することができる。
【００９４】
以上のように、対照群生成処理では、最終的に１つの対照群が生成され、データ記憶部１０１に記憶される。対照群の積集合を求めることにより、複数のキー項目が指定された場合でも、複数のキー項目によって特定されるレコードの集合ごとにレコードを集約することができるようになる。
【００９５】
＜横結合処理・集計処理＞
対照群が生成された後、横結合処理又は集計処理が行われる。横結合処理は横結合部１０７によって実行され、集計処理は集計部１０８によって実行されるものとする。
【００９６】
図３０は、横結合・集計処理の一例を示す処理フローである。まず、横結合部１０７又は集計部１０８は、出力用の項目別リストを生成し、初期化する（図３０：Ｓ９１）。ここでは、横結合の設定データ又は集計処理の設定データに基づいて、出力項目の数だけ項目別リストを生成する。
【００９７】
また、横結合部１０７又は集計部１０８は、処理対象の項目別リストを１つ取得する（Ｓ９２）。横結合処理の場合、図１２Ｃに示したような、縦結合後の項目別リストから項
目別リストを１つ取得する。集計処理の場合、キー項目及び集計項目に対応する項目別リストから、１つ取得する。また、横結合部１０７又は集計部１０８は、対照群から集合を１つ取得する（Ｓ９３）。ここでは、図２８Ａに示したような対照群から行番号の集合を１つ取得する。
【００９８】
そして、横結合部１０７又は集計部１０８は、値を結合するか判断する（Ｓ９４）。ここでは、横結合を行う場合、又は項目の集計方法として「結合」が指定されている場合、値を結合すると判断される。一方、項目の集計方法として、「合計」、「平均」、「中央値」、「最頻値」、「最大値」、「最小値」、「分散」、「標準偏差」等が指定されている場合、値を結合しないと判断される。
【００９９】
値を結合する場合（Ｓ９４：ＹＥＳ）、横結合部１０７又は集計部１０８は、Ｓ９３で取得した集合に含まれる行番号に対応する要素を、Ｓ９２で取得した項目別リストから取得し、例えば所定の区切記号で結合する（Ｓ９５）。なお、図１６の重複値処理選択領域に示したように、横結合処理においてはキー項目が所定の条件を満たすレコードを１つのレコードにまとめる場合、重複を除いて値を結合するようにしてもよいし、重複を許して値を結合するようにしてもよい。また、横結合処理において、キー項目が所定の条件を満たすレコードを１つのレコードにまとめるのではなく、例えば出現頻度の順にソートするようにしてもよい。
【０１００】
一方、Ｓ９４において値を結合しないと判断された場合（Ｓ９４：ＮＯ）、集計部１０８は、値を算出する（Ｓ９６）。ここでは、横結合部１０７又は集計部１０８は、Ｓ９３で取得した集合に含まれる行番号に対応する要素を、Ｓ９２で取得した項目別リストから取得し、項目の集計方法に基づいて、合計したり平均を算出したりする。
【０１０１】
Ｓ９５又はＳ９６の後、横結合部１０７又は集計部１０８は、結合した値又は集計した値を出力用の項目別リストに新たな要素として登録する（Ｓ９７）。そして、横結合部１０７又は集計部１０８は、対照群に未処理の集合が存在するか判断する（Ｓ９８）。未処理の集合が存在する場合（Ｓ９８：ＹＥＳ）、Ｓ９３の処理に戻る。一方、未処理の集合が存在しない場合（Ｓ９８：ＮＯ）、横結合部１０７又は集計部１０８は、未処理の項目が存在するか判断する（Ｓ９９）。横結合処理の場合、図１２Ｃに示したような、縦結合後の項目別リストに、未処理の項目別リストが存在するか判断する。集計処理の場合、キー項目及び集計項目に対応する項目別リストに、未処理のものが存在するか判断する。未処理の項目が存在する場合（Ｓ９９：ＹＥＳ）、Ｓ９２の処理に戻る。一方、未処理の項目が存在しない場合（Ｓ９９：ＮＯ）、横結合部１０７又は集計部１０８は、横結合・集計処理を終了する。
【０１０２】
以上のように、本実施形態では対照群を用いて集約するレコードを特定する。上でも述べたように、対照群の生成は、キー項目の値の各々について、すでに生成された集合（対照群の集合のいずれか）に属するか否かを判断することにより行われる。キー項目の値の各々について、キー項目の他の値の各々と比較するような処理を行う必要がないため、対照群の生成は比較的高速に行うことができる。また、対照群を生成した後は、各集合と当該集合に属するレコードの値との関連付けは保持する必要がない。すなわち、対照群の各集合は、行番号のみを保持している。このような対照群を記憶するために必要なメモリの容量は比較的少なくなる。
【０１０３】
＜新規項目生成処理＞
次に、集計処理において新しい項目の生成が指示された場合の処理について説明する。例えば、図２３に示した画面において集計項目表示領域に「新規」のパネルが追加された場合、図１９のＳ６４において、設定処理部１０２は、値の係数、計算式の入力、又は条
件式の入力をユーザ端末２から受け付ける。図３１は、新規項目の設定画面の一例を示す図である。例えば、図２３において、集計項目表示領域に「新規」パネルが追加され、追加された当該パネルがクリックされると、ユーザ端末２の表示部には、図３１に示すような画面が表示される。
【０１０４】
図３１の例では、新規項目の名称７００１と、「キーカウント」、「計算」及び「条件」の各ボタン７００２とが表示されている。「キーカウント」が押下されると、キー項目含まれる同一の値ごとに個数が計数される。「計算」が押下されると、ユーザ端末２には、計算式を入力するための画面が表示される。図３２は、計算式を入力するための画面の一例を示す図である。図３２の画面には、集計項目の一覧を表示するための領域８００１と、演算式又は固定値を入力するためのテンキー８００２と、計算式を項目のパネル及びテンキーのパネルで表示するための計算式の表示領域８００３と、計算式を文字列で確認するための確認用計算式の表示領域８００４とを有する。集計項目の一覧には、図２５等の集計項目表示領域に追加されたパネルが表示されている。また、本実施形態では、当該新規項目よりも上位に登録されている項目を用いて計算式を作成することができる。すなわち、上位に登録されている他の新規項目の計算結果を用いて、さらに新規項目を定義することができる。
【０１０５】
また、「条件」が押下されると、ユーザ端末２には、条件式を入力するための画面が表示される。図３３は、条件式を入力するための画面の一例を示す図である。図３３の例では、集計項目の一覧９００１と、条件を定義する領域９００２と、条件に合致する場合の出力値を設定する領域９００３と、条件に合致しない場合の出力値を設定するための領域９００４とが表示されている。ユーザは、例えば、集計項目と任意の値との大小関係が指定された条件を満たす場合と満たさない場合とについて、出力する値を設定することができる。また、条件式は「ＡＮＤ」（論理積）又は「ＯＲ」（論理和）で接続して複数定義することができる。条件式の場合も、当該新規項目よりも上位に登録されている集計項目を用いてさらに条件式を作成することができる。
【０１０６】
新規項目を設定する場合、集計項目の設定データには、「項目の集計方法」として、頻度を係数する項目、計算式又は条件式が設定される。
【０１０７】
図３４は、新規項目生成処理の一例を示す処理フローである。まず、集計部１０８は、集計処理の設定データを読み出し、新規項目を１つ取得する（図３４：Ｓ１０１）。また、集計部１０８は、新規項目の集計処理が条件式又は計算式であるか判断する（Ｓ１０２）。条件式又は計算式である場合（Ｓ１０２：ＹＥＳ）、集計部１０８は、対照群の集合を１つ取得する（Ｓ１０３）。
【０１０８】
そして、集計部１０８は、条件式の判断又は計算式の算出を行う（Ｓ１０４）。また、集計部１０８は、条件式の判断結果又は計算式の算出結果を出力用の項目別リストに新たな要素として登録する（Ｓ１０５）。そして、集計部１０８は、未処理の集合が対照群に存在するか判断し（Ｓ１０６）、未処理の集合が存在する場合（Ｓ１０６：ＹＥＳ）、Ｓ１０３の処理に戻る。一方、未処理の集合が存在しない場合（Ｓ１０６：ＮＯ）、Ｓ１１１の処理に遷移する。一方、Ｓ１０２において、条件式又は計算式でないと判断された場合（Ｓ１０２：ＮＯ）、集計部１０８は、対照群の集合を１つ取得する（Ｓ１０７）。そして、集計部１０８は、対照群の集合に含まれる値の数を計数する（Ｓ１０８）。そして、集計部１０８は、出力用の項目別リストに新たな要素として登録する（Ｓ１０９）。
【０１０９】
その後、未処理の集合が存在するか判断する（Ｓ１１０）。未処理の集合が存在する場合（Ｓ１１０：ＹＥＳ）、Ｓ１０７の処理に戻る。一方、未処理の集合が存在しない場合（Ｓ１１０：ＮＯ）、又はＳ１０６において未処理の集合が存在しないと判断された場合
（Ｓ１０６：ＮＯ）、集計部１０８は、未処理の新規項目が存在するか判断する（Ｓ１１１）。未処理の新規項目が存在する場合（Ｓ１１１：ＹＥＳ）、Ｓ１０１の処理に戻る。一方、未処理の新規項目が存在しない場合（Ｓ１１１：ＮＯ）、集計部１０８は、新規項目生成処理を終了する。
【０１１０】
例えば、図１２Ｃの項目別リストのうち、「Ｎａｍｅ」をキー項目として横結合する場合、図２８Ｂに示す対照群が生成される。図２８Ｂの対照群に基づいて項目別リストの要素を集約すると、１行目及び４行目の要素、２行目及び５行目の要素、並びに３行目の要素が横結合後の項目別リストの要素になる。図３５Ａに、横結合後の項目別データの例を示す。図３５Ａの各項目別リストのうち、１行目の要素は、図１２Ｃの１行目及び４行目の要素を集約したものである。同様に、図３５Ａの２行目の要素は、図１２Ｃの２行目及び５行目の要素を集約したものである。図３５Ａの３行目の要素は、図１２Ｃの３行目の要素に相当する。
【０１１１】
また、横結合後の項目別リストにおいて、重複する値をフィールド内に残す場合は、図３５Ｂのような項目別リストが生成される。図３５Ｂの例では、「Ｎａｍｅ」の項目別リストの１行目及び２行目の要素に、それぞれ同一の値が２つずつ保持されている。キー項目以外の項目についても、結合後の項目別リストにおいて１つの要素に複数の値を結合して登録してもよいし、重複を除いて登録してもよい。さらに、重複を除いた上で当該値が出現した頻度を示す数値を登録するようにしてもよい。
【０１１２】
また、図示は省略するが、集計処理を行う場合は、キー項目及び集計項目について項目別リストが生成される。そして、対照群の集合ごとに、設定された集計方法に基づいて集計される。
【０１１３】
以上のようにして、横結合後の項目別リスト、又は集計処理後の項目別リストがすべて生成される。これらの項目別リストを表形式データとして出力するためには、図１３を用いて説明した出力処理を行う。
【０１１４】
＜変形例＞
本実施形態では、項目別リスト生成処理によって、表形式データを項目別リストに分解して扱う。上記の説明では、縦結合処理から出力処理を行うパターン、及び縦結合後の表形式データを用いて横結合・集計処理から出力処理を行うパターンについて説明した。しかし、本実施形態に係る処理のパターンはこれらに限られない。例えば項目別リストを用いて、縦結合処理、横結合処理、集計処理の順に処理を行ったり、このようにして生成した複数の表形式データを用いてさらに縦結合処理を行ったりすることができる。
【０１１５】
本実施形態では、表形式データ処理装置１が、ネットワーク３を介して各ユーザ端末２へサービスを提供するという構成を説明したが、このような態様には限られない。例えば、表形式データ処理プログラムをインストールしたユーザ端末２が、ネットワーク３への接続を行うことなく、本実施の形態に係る処理を実行するようにしてもよい。この場合、例えば、表形式データ処理装置は入力Ｉ／Ｆを介してユーザからのデータ操作の指示を受け付ける。また、表形式データ処理装置は、出力Ｉ／Ｆを介してモニタ等の出力装置に結果を出力する。
【０１１６】
また、本実施形態で示した処理フローは例示であり、処理結果が変わらない限りにおいて処理の順序を変更したり、並列に処理を行うようにしてもよい。画面の例についても適宜レイアウト等を変更することができる。
【符号の説明】
【０１１７】
１      表形式データ処理装置
１０１      データ記憶部
１０２      設定処理部
１０３      データ分割部
１０４      表示制御部
１０５      縦結合部
１０６      対照群生成部
１０７      横結合部
１０８      集計部
１０９      出力データ生成部
２      ユーザ端末
３      ネットワーク
【要約】
【課題】デリミター区切りで表現された表形式データの操作を支援するための技術を提供する。
【解決手段】表形式データ処理プログラムは、複数の項目に対応する複数の要素を含むレコードが複数登録される表形式データについて、入力される表形式データである入力テーブルに含まれるレコードを集約し、出力する表形式データである出力テーブルを生成する。入力テーブルに基づいて、項目の順序に対応付けられている要素を抽出し、表形式データにおけるレコードの順序と対応付けて項目ごとに保持する項目別データを生成するステップと、項目別データに含まれる要素を集約し、集約後の項目別データから出力テーブルを生成する出力テーブル生成ステップとをコンピュータに実行させる。
【選択図】図２【図１】
0005497948.tif 000002
【図２】
0005497948.tif 000003
【図３】
0005497948.tif 000004
【図４】
0005497948.tif 000005
【図５Ａ】
0005497948.tif 000006
【図５Ｂ】
0005497948.tif 000007
【図５Ｃ】
0005497948.tif 000008
【図６】
0005497948.tif 000009
【図７Ａ】
0005497948.tif 000010
【図７Ｂ】
0005497948.tif 000011
【図８】
0005497948.tif 000012
【図９】
0005497948.tif 000013
【図１０Ａ】
0005497948.tif 000014
【図１０Ｂ】
0005497948.tif 000015
【図１１】
0005497948.tif 000016
【図１２Ａ】
0005497948.tif 000017
【図１２Ｂ】
0005497948.tif 000018
【図１２Ｃ】
0005497948.tif 000019
【図１３】
0005497948.tif 000020
【図１４Ａ】
0005497948.tif 000021
【図１４Ｂ】
0005497948.tif 000022
【図１４Ｃ】
0005497948.tif 000023
【図１５】
0005497948.tif 000024
【図１６】
0005497948.tif 000025
【図１７】
0005497948.tif 000026
【図１８】
0005497948.tif 000027
【図１９】
0005497948.tif 000028
【図２０】
0005497948.tif 000029
【図２１】
0005497948.tif 000030
【図２２】
0005497948.tif 000031
【図２３】
0005497948.tif 000032
【図２４】
0005497948.tif 000033
【図２５】
0005497948.tif 000034
【図２６】
0005497948.tif 000035
【図２７】
0005497948.tif 000036
【図２８Ａ】
0005497948.tif 000037
【図２８Ｂ】
0005497948.tif 000038
【図２９Ａ】
0005497948.tif 000039
【図２９Ｂ】
0005497948.tif 000040
【図２９Ｃ】
0005497948.tif 000041
【図２９Ｄ】
0005497948.tif 000042
【図３０】
0005497948.tif 000043
【図３１】
0005497948.tif 000044
【図３２】
0005497948.tif 000045
【図３３】
0005497948.tif 000046
【図３４】
0005497948.tif 000047
【図３５Ａ】
0005497948.tif 000048
【図３５Ｂ】
0005497948.tif 000049