JP5497948B1 - 表形式データ処理プログラム、方法及び装置 - Google Patents

表形式データ処理プログラム、方法及び装置 Download PDF

Info

Publication number
JP5497948B1
JP5497948B1 JP2013134184A JP2013134184A JP5497948B1 JP 5497948 B1 JP5497948 B1 JP 5497948B1 JP 2013134184 A JP2013134184 A JP 2013134184A JP 2013134184 A JP2013134184 A JP 2013134184A JP 5497948 B1 JP5497948 B1 JP 5497948B1
Authority
JP
Japan
Prior art keywords
item
data
output
tabular data
list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013134184A
Other languages
English (en)
Other versions
JP2015045896A (ja
Inventor
祐二 新井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maeda Corp
Original Assignee
Maeda Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Maeda Corp filed Critical Maeda Corp
Priority to JP2013134184A priority Critical patent/JP5497948B1/ja
Priority to JP2015523912A priority patent/JP6623754B2/ja
Priority to PCT/JP2014/062498 priority patent/WO2014208205A1/ja
Application granted granted Critical
Publication of JP5497948B1 publication Critical patent/JP5497948B1/ja
Publication of JP2015045896A publication Critical patent/JP2015045896A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】デリミター区切りで表現された表形式データの操作を支援するための技術を提供する。
【解決手段】表形式データ処理プログラムは、複数の項目に対応する複数の要素を含むレコードが複数登録される表形式データについて、入力される表形式データである入力テーブルに含まれるレコードを集約し、出力する表形式データである出力テーブルを生成する。入力テーブルに基づいて、項目の順序に対応付けられている要素を抽出し、表形式データにおけるレコードの順序と対応付けて項目ごとに保持する項目別データを生成するステップと、項目別データに含まれる要素を集約し、集約後の項目別データから出力テーブルを生成する出力テーブル生成ステップとをコンピュータに実行させる。
【選択図】図2

Description

本発明は、表形式データ処理プログラム、方法及び装置に関する。
顧客情報、営業情報、その他のあらゆる情報を管理するため、例えばRDB(Relational Database)が利用されている。RDBを利用する場合、正規化したテーブルを作成す
ることにより、情報を一元的に管理し、不整合、損失、冗長を低減することができる。なお、1又は複数のテーブルから同一の実体に関するレコードを求めるため、「名寄せ」と呼ばれる処理を行うこともある。名寄せすることにより、集計結果がより精確になる。
特開2005−135221号公報
RDBを利用するためには、ソフトウェアのインストール、テーブルの設計、レコードの登録及びメンテナンス等が必要である。さらに、サーバの構築、データ操作言語やRDBMS(Relational Database Management System)の使用等、専門的な技術が必要にな
る場合もある。そこで、RDBを利用することなく簡易的にデータを管理するため、CSV(Comma Separated Values)に代表されるテキストで記録された表形式データ(「Delimiter-Separated Values」、「Character-Separated Values」等とも呼ばれる)を利用する場合も少なくない。
しかしながら、上記のような表形式データを表計算ソフト等で処理する場合、RDBMSによって実行するようにテーブルを結合したり値を集計したりといったデータ操作をするためには、手間と時間がかかるという問題がある。また、ユーザに専門的な知識がなくとも、直感的にデータ操作の要求を入力可能とするインターフェイスは、存在していなかった。
そこで、本発明は、デリミター(Delimiter)区切りで表現された表形式データの操作
を支援するための技術を提供することを目的とする。
本発明に係る表形式データ処理プログラムは、複数の項目に対応する複数の要素を含むレコードが複数登録される表形式データについて、入力される表形式データである入力テーブルに含まれるレコードを集約し、出力する表形式データである出力テーブルを生成する。具体的には、入力テーブルに基づいて、項目の順序に対応付けられている要素を抽出し、表形式データにおけるレコードの順序と対応付けて項目ごとに保持する項目別データを生成するステップと、項目別データに含まれる要素を集約し、集約後の項目別データから出力テーブルを生成する出力テーブル生成ステップとをコンピュータに実行させる。
このようにすれば、表形式データを項目ごとの単位で表す項目別データに分解して扱うことができる。項目別データに含まれる要素を集約するだけでなく、出力テーブルに出力する項目に応じて項目別データを結合することができる。すなわち、項目別データは、複雑な処理を行うのに適している。なお、集約処理としては、例えばテーブルの結合や集計を行うことができる。
また、本発明に係る表形式データ処理プログラムは、項目別データを用いて、所定の条件を満たす複数の要素に対応する、レコードの順序の集合を生成する順序集合生成ステップをさらに実行させ、出力テーブル生成ステップにおいて、集合に属する順序に基づいて項目別データに含まれる要素を集約するようにしてもよい。このようにすれば、レコードの順序(換言すれば、順番を示す番号)の集合を用いて集約を行うことができるようになる。ここで、順序の集合を生成するためには、所定の条件を満たす、各要素が属すべき集合にレコードの順序を分類すればよい。集約のためにレコードを検索するような必要がなく、レコードの順序の集合を用いることで高速に処理を行うことができる。
また、本発明に係る表形式データ処理プログラムは、複数の表形式データ間における項目の対応付けを表すデータに基づいて、複数の表形式データの項目別データの和集合を生成するステップをさらに実行させ、順序集合生成ステップにおいて、項目別データの和集合を用いて、レコードの順序の集合を生成するようにしてもよい。このようにすれば、複数の表形式データを対象として、データ操作を行うことができるようになる。
また、本発明に係る表形式データ処理プログラムは、集合に属する順序に基づいて集約される要素に異なる値が存在する場合、集約後の項目別データには、異なる値を結合した要素を登録するようにしてもよい。このようにすれば、所定の条件を満たすレコードを1つに集約して表示することができるようになる。
また、本発明に係る表形式データ処理プログラムは、集約後の項目別データを用いて、第2の所定条件を満たす複数の要素に対応する、レコードの順序の集合を生成する第2順序集合生成ステップをさらに実行させ、出力テーブル生成ステップにおいて、第2順序集合生成ステップにおいて生成された集合に属する順序に基づいて集約後の項目別データに含まれる要素をさらに集約し、集約後の項目別データから出力テーブルを生成するようにしてもよい。このようにすれば、例えば結合や集計のような集約処理を行った後の項目別データに対して、さらに集約処理を行うことができる。すなわち、段階を追って複雑なデータ操作を行うことができる。
なお、上記課題を解決するための手段の内容は、本発明の課題や技術的思想を逸脱しない範囲で可能な限り組み合わせることができる。上記プログラムを保持する記録媒体を提供するようにしてもよい。また、上記課題を解決するための手段の内容をコンピュータが実行する表形式データ処理方法や、上記課題を解決するための手段の内容を実行する各処理部を備えた表形式データ処理装置を提供することもできる。
本発明によれば、デリミター(Delimiter)区切りで表現された表形式データの操作を
支援するための技術を提供することができる。
システムの構成の一例を示す機能ブロック図である。 表形式データ処理装置の一例を示す機能ブロック図である。 コンピュータの装置構成の一例を示す機能ブロック図である。 ファイル読込処理の一例を示す処理フローである。 表形式データ(CSVファイル)を説明するための図である。 表形式データの行リストを説明するための図である。 Key−Value形式のマップを説明するための図である。 縦結合設定処理の一例を示す処理フローである。 縦結合の設定データを説明するための図である。 縦結合の設定データを説明するための図である。 項目別リスト生成処理の一例を示す処理フローである。 項目別リストを生成するためのオブジェクトの一例を示す図である。 項目別リストを説明するための図である。 項目別リストを説明するための図である。 縦結合処理の一例を示す処理フローである。 中間的に生成される項目別リストを説明するための図である。 中間的に生成される項目別リストを説明するための図である。 縦結合後の項目別リストを説明するための図である。 出力処理の一例を示す処理フローである。 行別リストを説明するための図である。 出力する表形式データの行リストを説明するための図である。 出力する表形式データ(CSVファイル)を説明するための図である。 横結合設定処理の一例を示す処理フローである。 横結合の条件を設定する画面を説明するための図である。 横結合の条件を設定する画面を説明するための図である。 横結合の条件を設定する画面を説明するための図である。 集計設定処理の一例を示す処理フローである。 集計処理の条件を設定する画面を説明するための図である。 集計処理の条件を設定する画面を説明するための図である。 集計処理の条件を設定する画面を説明するための図である。 集計処理の条件を設定する画面を説明するための図である。 集計処理の条件を設定する画面を説明するための図である。 集計処理の条件を設定する画面を説明するための図である。 対照群生成処理の一例を説明するための処理フローである。 対照群生成処理の一例を説明するための処理フローである。 対照群を説明するための図である。 対照群を説明するための図である。 ソートを説明するための図である。 ソートを説明するための図である。 ソートを説明するための図である。 ソートを説明するための図である。 横結合・集計処理の一例を説明するための処理フローである。 新規属性の条件を設定する画面を説明するための図である。 新規属性の条件を設定する画面を説明するための図である。 新規属性の条件を設定する画面を説明するための図である。 新規項目生成処理の一例を示す処理フローである。 集計処理を説明するための図である。 集計処理を説明するための図である。
以下、図面を参照して、一実施形態に係る表形式データ処理プログラム、表形式データ処理装置、及び表形式データ処理方法について説明する。実施形態の構成は例示であり、本発明に係るプログラム、装置、方法は実施形態の構成には限定されない。
<システム構成>
図1は、表形式データを処理するためのシステムの一例を示す機能ブロック図である。本実施形態に係るシステムは、表形式データ処理装置1と、ユーザ端末2とを含む。また、表形式データ処理装置1とユーザ端末2とは、ネットワーク3を介して接続されている。
表形式データ処理装置1は、例えば、表形式データに対し本実施形態で説明する処理を行うサーバである。また、ユーザ端末2は、例えば、インターネットに接続する機能を有するコンピュータである。ユーザは、例えば、ユーザ端末2が有するインターネットブラウザを介して、表形式データ処理装置1に本実施形態で説明する処理の実行を命じたり、表形式データ処理装置1から受信した処理の結果を確認したりすることができる。ネットワーク3は、例えばインターネットやイントラネット等のようなネットワークシステムである。なお、表形式データ処理装置1とユーザ端末2とは、専用線で接続されていてもよい。また、図1では1つのユーザ端末2を示しているが、複数のユーザ端末が接続されていてもよい。一方、複数の表形式データ処理装置1がネットワーク上に存在し、分散して処理を行う構成としてもよい。
<機能構成>
図2は、表形式データ処理装置1の一例を示す機能ブロック図である。本実施形態に係る表形式データ処理装置1は、データ記憶部101と、設定処理部102と、データ分割部103と、表示制御部104と、縦結合部105と、対照群生成部106と、横結合部107と、集計部108と、出力データ生成部109とを有する。
データ記憶部101は、例えば、本実施形態で処理の対象となる表形式データ、処理の要求を示す設定データ、処理結果として生成される表形式データ、その他処理において中間的に生成されるデータを保持する。表形式データ処理装置1は、例えば、カンマやタブ、スペース等の区切記号(「デリミター」とも呼ぶ)によってフィールド(「列」、「項目」、「要素」又は「属性」とも呼ぶ)が区切られ、改行によってレコード(「行」とも呼ぶ)が区切られたテキストデータを処理対象とする。本実施の形態では、ユーザが転送したCSVデータが、予め表形式データ処理装置1のデータ記憶部101に記憶されているものとする。
設定処理部102は、例えば、結合する複数の表形式データの指定、レコードを集約する条件、集計の方法のようなデータ操作の要求を、ネットワーク3を介してユーザ端末2から受け付け、データ記憶部101へ記憶させる。データ分割部103は、表形式データを、レコード別(行ごと)に分割したり、項目別(列ごと)に分割したりして、データ記憶部101へ記憶させる。表示制御部104は、ユーザがデータ操作の要求を入力するためのGUI(Graphical User Interface)を生成したり、結果を表示するための画面を生成したりする。
縦結合部105は、例えば複数の表形式データに含まれるレコードを1つの表形式データに統合する処理(「縦結合処理」とも呼ぶ)を行う。対照群生成部106は、集約するレコードを行番号(「レコード番号」とも呼ぶ)の集合として表す対照群を生成する処理を行う。なお、行番号とは、例えば、CSVデータの1行ごとに先頭から付される通し番号であり、行番号により、表形式データにおいてレコードを一意に特定することができる。横結合部107は、例えばキー項目の値が所定の条件を満たす、複数の表形式データのレコードを1レコードに結合する処理(「横結合処理」とも呼ぶ)を行う。集計部108は、データ記憶部101に記憶された設定に基づいて、値を数値として集計したり、値を文字列として1つのフィールドに統合したりする処理を行う。出力データ生成部109は、結合された項目別データから行別データを生成し、CSVデータとして出力する。
<装置構成>
図3は、コンピュータの一例を示す装置構成図である。表形式データ処理装置1及びユーザ端末2は、図3に示すようなコンピュータである。図3に示すコンピュータ1000は、CPU(Central Processing Unit)1001、主記憶装置1002、補助記憶装置
1003、通信IF(Interface)1004、入出力IF(Interface)1005、ドライブ装置1006、通信バス1007を備えている。CPU1001は、プログラム(「ソフトウェア」又は「アプリケーション」とも呼ぶ)を実行することにより本実施の形態に係る処理等を行う。主記憶装置1002は、CPU1001が読み出したプログラムやデータをキャッシュしたり、CPUの作業領域を展開したりする。主記憶装置は、具体的には、RAM(Random Access Memory)やROM(Read Only Memory)等である。補助記憶装置1003は、CPU1001により実行されるプログラムや、本実施の形態で用いる設定情報などを記憶する。補助記憶装置1003は、具体的には、HDD(Hard-disk Drive)やSSD(Solid State Drive)、フラッシュメモリ等である。主記憶装置1002や補助記憶装置1003は、表形式データ処理装置1のデータ記憶部101として働く。通信IF1004は、他のコンピュータとの間でデータを送受信する。表形式データ処理装置1及びユーザ端末2は、通信IF1004を介してネットワーク3に接続される。通信IF1004は、具体的には、有線又は無線のネットワークカード等である。入出力IF1005は、入出力装置と接続され、ユーザから入力を受け付けたり、ユーザへ情報を出力したりする。入出力装置は、具体的には、キーボード、マウス、ディスプレイ、タッチパネル等である。ドライブ装置1006は、磁気ディスク、光磁気ディスク、光ディスク等の記憶媒体に記録されたデータを読み出したり、記憶媒体にデータを書き込んだりする。そして、以上のような構成要素が、通信バス1007で接続されている。なお、これらの構成要素はそれぞれ複数設けられていてもよいし、一部の構成要素(例えば、ドライブ装置1006)を設けないようにしてもよい。また、入出力装置がコンピュータと一体に構成されていてもよい。また、ドライブ装置1006で読み取り可能な可搬性の記憶媒体や、フラッシュメモリのような可搬性の補助記憶装置1003、通信IF1004などを介して、本実施の形態で実行されるプログラムが提供されるようにしてもよい。そして、CPU1001がプログラムを実行することにより、上記のようなコンピュータを図2に示した表形式データ処理装置1として働かせる。また、ユーザ端末2は、例えば、CPU1001が実行するインターネットブラウザを介して表形式データ処理装置1へ処理を要求したり、受信した処理結果を表示したりする。
<ファイル読込処理>
次に、表形式データ処理装置1が実行する処理を、処理フローを用いて説明する。図4は、ファイル読込処理の一例を示す処理フローである。まず、表形式データ処理装置1の設定処理部102は、CSVファイルの入力を受け付ける(図4:ステップS1)。具体的には、設定処理部102は、ユーザ端末2からCSVファイルを受信し、データ記憶部101に記憶させる。例えば、図5に示すようなCSVファイルが入力される。
図5Aは、本実施形態に係る表形式データの処理を説明するための図である。図5AのCSVファイルは、1行目にカンマ区切りで複数の項目名を有し、2行目以降にカンマ区切りで複数のフィールドを含むレコードを複数有している。また、カンマで区切られた項目名及びフィールドは、それぞれカンマで区切られた順序で対応しており、1つのCSVファイルには、項目名及び各レコードのフィールドが同数存在する。
また、設定処理部102は、項目名及びレコードの開始行の入力を受け付ける(S2)。具体的には、ユーザは、CSVファイルごとに項目名が登録されている行、及びレコードが登録されている行の開始位置を、ユーザ端末2を介して指定する。一方、設定処理部102は、項目名が登録されている行、及びレコードが登録されている行の開始位置を、CSVファイルと対応付けてデータ記憶部101に記憶させる。図5Aの例では、1行目が項目名の開始位置であり、2行目がレコードの開始位置である。
その後、データ分割部103は、CSVファイルの各行を要素とするリストを生成する(S3)。具体的には、データ分割部103は、例えばCSVファイルの先頭から1行ず
つ読み出し、1行目から順に新たな要素としてリストに追加する。ここでは、例えば、図5Bに示す表形式データの行リストに示すようなデータが生成される。図5Bの行リストでは、リストの各要素が実線で区切られ、各要素にはCSVデータの各レコードが登録されている。
また、データ分割部103は、生成された表形式データの行リストを、表形式データのファイル名と対応付けて、データ記憶部101へ記憶させる(S4)。例えば、Key(キー)をファイル名とし、Value(値)に行リストを登録した、Key−Value形式のデータ構造(いわゆるマップ)で記憶するようにしてもよい。
その後、例えば設定処理部102は、未処理のCSVファイルが存在するか判断する(S5)。未処理のCSVファイルが存在する場合(S5:YES)、処理はS1に戻る。一方、未処理のCSVファイルが存在しない場合(S5:NO)、ファイル読込処理を終了する。本実施形態では、ファイル読込処理で読み込まれた1又は複数のCSVファイルを用いて、表形式データを結合したり、集計したりする。
<縦結合設定処理>
次に、複数の表形式データに含まれるレコードの和集合を生成する縦結合処理を説明する。図6は、縦結合設定処理の一例を示す処理フローである。
まず、設定処理部102は、ユーザ端末2から、複数の表形式データに含まれる項目のうち、対応する項目の入力を受け付ける(図6:S11)。ユーザは、結合する複数の表形式データを指定するとともに、結合する表形式データに含まれ、結合後の表形式データにおいて同一の列(項目)に表示する項目の対応付けを指定する。ここでは、同じ実体を示す項目が対応付けられる。例えば、あるCSVファイルにおける「氏名」という項目と、別のCSVファイルにおける「名前」という項目との対応付けが入力される。
また、本ステップでは、1つの表形式データに含まれる複数の項目を結合し、1つの項目として扱うようにしてもよい。設定処理部102は、ある表形式データに含まれる複数のフィールドの結合と、他の表形式データに含まれる1のフィールド又は複数のフィールドの結合との対応付けの入力を受け付ける。例えば、あるCSVファイルにおける「苗字」という項目及び「名前」という項目の結合と、他のCSVファイルにおける「氏名」という項目との対応付けが入力される。
図7Aは、本ステップで入力される対応付けを説明するための図である。図7Aに示す表の1行目は、項目の通し番号を示している。また、表の2行目は、縦結合後の表形式データの出力項目名を示す。結合後の表形式データの項目名は、ユーザによって入力されるものとする。また、3行目以降の各行は、異なるCSVファイルにおける項目名を示す。そして、同じ列に登録されている項目名は、本ステップにおいて対応付けられた項目名を示す。例えば、4行目に示すCSVファイル「AAA」における「苗字」及び「名前」という項目の組合せと、5行目に示すCSVファイル「BBB」における「氏名」という項目とが対応付けられている。なお、CSVファイル名が「共通」の行は、登録されていないCSVファイル(図7Aの例では、「AAA」及び「BBB」以外のCSVファイル)にも共通して適用される設定である。
このように、対応する項目がある場合には、ユーザの操作により本ステップで対応付けられる。なお、複数の表形式データには、必ずしも対応する項目があるわけではない。また、本ステップでは、対応する項目をユーザが入力するものとして説明したが、例えば異なる表形式データに含まれる同一の項目名を予め対応付けて提示し、ユーザが適宜修正できるようにしてもよい。
次に、設定処理部102は、入力された縦結合の設定データをデータ記憶部101に記憶させる(S12)。設定処理部102は、図7Aを用いて説明した項目の対応付けに基づいて、例えば、縦結合後の出力項目名に対し、当該出力項目名に対応する複数のCSVファイル名及び項目名を対応付けて登録する。例えば、図7Bに示すような、縦結合後の出力項目名のリストを生成して、データ記憶部101に記憶させる。
図7Bの例では、実線で区切られた、出力項目を表す要素の中に、CSVファイル名及び項目名が入れ子状に登録されている。なお、CSVファイル名が空(CSVファイル名に何も登録されていない)の項目名は、特定のCSVファイルに限らず、出力項目に対応付けられていることを示す。以上で、縦結合設定処理を終了する。縦結合設定処理は、縦結合を行うCSVファイルの組合せについて、予め実行される。
<項目別リスト生成処理>
次に、縦結合処理等の前処理として実行される項目別リスト生成処理を説明する。図8は、項目別リスト生成処理の一例を示す処理フローである。
まず、データ分割部103は、処理対象の表形式データの行リストを1つ取得する(図8:S21)。ここでは、データ分割部103は、例えば結合するCSVファイルの行リストを1つデータ記憶部101から読み出す。
次に、データ分割部103は、行リストから項目名の行(図5Bの例では、1行目)にカンマ区切りで登録されている項目名の数を計数する(S22)。項目名及びレコードの開始行は、図4のS2で指定された情報をデータ記憶部101から読み出して用いる。本ステップでは、データ分割部103は、処理対象の表形式データに含まれる列(項目名)の数を求める。
その後、データ分割部103は、計数された項目名の数だけ項目別リストを生成し、初期化する(S23)。例えば、項目別リストに値を登録等するためのクラスを定義しておき、図9に示すようなオブジェクトを項目名の数だけ生成するようにしてもよい。図9のオブジェクトには、値を追加したり項目名を追加したりするためのメソッド(関数)が定義されている。また、本ステップでは、項目別リストに項目名を追加する。これにより、項目名によって項目別リストを識別することができるようになる。なお、項目別リストは、例えば表形式データ中の順序を示す通し番号で識別するようにしてもよい。図9のオブジェクトは一例であり、表形式データの項目ごとに要素を保持するリストを生成できれば、本実施形態は特定のプログラミング言語等には限定されない。
また、データ分割部103は、表形式データの行リストから、レコードの登録された要素を1つ読み出す(S24)。例えば、図5Bに示した行リストから、2行目の要素が読み出される。ここでは、CSVファイルの1行分に相当するデータ(すなわち、レコード)が読み出される。
次に、データ分割部103は、読み出したデータから、カンマで区切られた複数の値を分解し、複数の項目別リストにそれぞれ追加する(S25)。ここでは、データ分割部103は、CSVファイルの1行に含まれる、複数の項目に対応する値を、項目の数だけ生成された項目別リストの各々に新たな要素として登録する。
そして、データ分割部103は、行リストに未処理の要素が存在するか判断し(S26)、未処理の要素が存在する場合(S26:YES)は、S24の処理に戻る。一方、未処理の要素が存在しない場合(S26:NO)、データ分割部103は、表形式データの
行リストに未処理のものが存在するか判断する(S27)。未処理の行リストが存在する場合(S27:YES)、データ分割部103は、S21の処理に戻る。一方、未処理の行リストが存在しない場合(S27:NO)、データ分割部103は、項目別リスト生成処理を終了する。
項目別リスト生成処理では、表形式データに含まれる項目(列)ごとに、各レコード(行)の値を1行目から順に要素として保持するリストが生成される。図5Bに示した行リストの場合、例えば、図10Aに示すような項目別リストが生成される。図10Aには、「No.」、「ID」、「L_Name」、「F_Name」、「Sex」、「Station」及び「Expense」の各項目名に対応する6つの項目別リストが示されている。各項目別リストには、表形式データにおけるレコードの順に対応する順序で、値が要素として保持される。
<縦結合処理>
次に、複数の表形式データに含まれるレコードの和集合を生成する縦結合処理を説明する。なお、本実施形態では、図10Aに示した項目別リストと、他の表形式データから生成された図10Bに示す項目別リストとが予めデータ記憶部101に記憶されているものとする。図11は、縦結合処理の一例を示す処理フローである。
まず、縦結合部105は、縦結合の設定データに基づいて、結合する表形式データを1つ特定する(図11:S31)。また、縦結合部105は、縦結合の設定データに基づいて、出力する項目の数だけ出力用の項目別リストを生成し、初期化する(S32)。例えば、縦結合部105は、図7Bに示した設定データを読み出し、要素の数だけ出力用の項目別リストを生成する。項目別リストの生成及び初期化は、図8のS23と同じ処理である。
また、縦結合部105は、設定データから出力項目を1つ取得し、項目名を特定する(S33)。また、縦結合部105は、S31で特定された表形式データの項目別リストに、S33で取得した出力項目に対応する項目が存在するか判断する(S34)。
対応する項目が存在する場合(S34:YES)、縦結合部105は、S31で取得された項目別リストを、出力用の対応する項目別リストに登録する(S35)。ここで、縦結合の設定データ(例えば、図7B)において、複数の項目名が「+」で結合されている場合、出力用の項目別リスト1つに複数の項目別リストの要素を結合して登録する。一方、対応する項目が存在しない場合(S34:NO)、レコードの数だけ要素に「空」を登録した、出力用の項目別リストを登録する(S36)。出力項目に対応する項目が処理対象のファイルには存在しないため、ここでは、空の項目別リストが追加される。このとき、各要素内の値は、所定の区切記号(例えば、カンマやスペース等)で結合される。
その後、縦結合部105は、処理対象の表形式データに、未処理の項目別リストが存在するか判断する(S37)。未処理の項目別リストが存在する場合(S37:YES)、S33の処理に戻る。一方、未処理の項目別リストが存在しない場合(S37:NO)、縦結合部105は、結合する表形式データに未処理のものが存在するか判断する(S38)。未処理の表形式データが存在する場合(S38:YES)、S31の処理に戻る。一方、未処理の表形式データが存在しない場合(S38:NO)、S39の処理に遷移する。なお、結合後の項目に対応する項目別データが存在しない場合は、レコードの数だけ要素に「空」を登録した、出力用の項目別リストを生成するようにしてもよい。
S37までの処理によって、例えば図10Aに示した項目別リストから、図12Aに示すような出力用の項目別リストが生成される。図12Aの例では、縦結合の設定データに基づいて、結合される項目別リストの「L#Name」及び「F#Name」の要素が、出力用の項目
別リストの「Name」にスペース区切りで結合されて登録されている。また、出力用の項目別リストとして、結合される項目別リストには存在しない「Office」を生成している。「Office」の項目別リストには、レコードの数だけ「空」が登録されている。また、S38までの処理によって、図12Aに示すような出力用の項目別リストが、結合する表形式データの分だけ生成される。例えば、図10Bに示した項目別リストから、図12Bに示すような出力用の項目別リストが生成される。図12Bの例では、結合する2つの表形式データの項目のうち、図10Aに示した「L_Name」及び「F_Name」の項目の結合と、図10Bに示した「Name」の項目とが、1つの項目「Name」に集約されている。
その後、縦結合部105は、生成された出力用の項目別リストを、項目ごとに結合する(S39)。結合される複数の表形式データから生成された出力用の項目別リスト(図12A及び図12B)が、例えば図12Cに示すように結合される。図12Cでは、一方の項目別リストの要素と、他方の項目別リストの要素との和集合が生成されている。このとき、縦結合の設定データに基づいて、対応する項目は1つの項目別リスト(図12Cでは、「Name」)に登録される。以上で、縦結合処理を終了する。
<出力処理>
次に、結合後の項目別データを表形式データとして出力する処理について説明する。図13は、出力処理の一例を示す処理フローである。
出力データ生成部109は、結合された出力用の項目別リストを読み出し、出力用の行別リストを生成する(図13:S41)。例えば、まず、各レコードの値を要素として登録する行別リストを、レコードの数だけ生成及び初期化する。次に、出力用の項目別リストを読み出し、各要素をレコードの順序(すなわち、行番号)に対応する行別リストに新たな要素として登録する。このような処理を出力用の項目別リストのすべてについて行い、行別リストを生成する。例えば、図12Cに示した項目別リストから、図14Aに示すような行別リストが生成される。図14Aの例では、各要素が実線で囲われ、横方向に隣接する要素が、行別リストを表している。
また、出力データ生成部109は、生成された出力用の行別リストを用いて、出力する表形式データの行リストを生成する(S42)。生成される行リストの要素は、出力用の行別リストに含まれる要素の間に区切記号を追加して1行に連結した値である。CSVファイルを出力する場合、出力データ生成部109は、区切記号としてカンマを各要素の間に追加する。例えば、図14Aに示すような行別リストから、図14Bに示すような行リストが生成される。
次に、出力データ生成部109は、生成された行リストを用いて、表形式データを生成する(S43)。本ステップで生成される表形式データは、カンマ等の区切記号でフィールドが区切られ、改行でレコードが区切られたテキストデータである。ここでは、出力データ生成部109は、S42において生成された行リストの要素の各々を1行として、1つのファイルに結合する。例えば、図14Bに示した行リストから、図14Cに示すようなCSVファイルが生成される。なお、CSVファイルの他、既存の表計算ソフトで読込可能なファイルを生成するようにしてもよい。
以上のように、ファイル読込処理、縦結合設定処理、項目別リスト生成処理、及び縦結合処理によれば、データ項目の異なる表形式データの和集合を生成することができる。また、例えばユーザが予め項目の対応付けを指定することにより、対応付けられた項目を、結合後の表形式データにおいて同一の列にそろえる(すなわち、集約する)ことができる。このような処理は、本実施形態において中間的に生成される項目別データを用いることで、効率的に処理することができる。
<横結合設定処理>
次に、横結合処理及び集計処理について説明する。本実施形態に係る横結合処理とは、キー項目の値が所定の条件を満たす、複数のレコードを1つのレコードに統合する処理である。また、本実施形態に係る集計処理とは、キー項目の値が所定の条件を満たす、複数のレコードを集計する処理である。まず、横結合処理で用いられるキー項目を設定するための横結合設定処理について説明する。
図15は、横結合設定処理の一例を示す処理フローである。本実施形態では、先に説明した縦結合後の表形式データを用いて、複数のレコードを1つのレコードに統合する処理を行う。よって、例えば、図7Aに示したような縦結合の設定データが予めデータ記憶部101に記憶されているものとする。
まず、表示制御部104は、出力項目の一覧を生成してユーザ端末2へ送信し、ユーザ端末2の表示装置に表示させる(図15:S51)。本ステップでは、表示制御部104は、縦結合の設定データから出力項目を読み出し、ユーザがキー項目を指定するための一覧を生成する。例えば、各項目をパネル状にして表示し、ユーザがクリックしたり又は所定の領域へドラッグアンドドロップしたりしてキー項目を選択できるようにする。
図16に、画面の一例を示す。図16の画面は、項目の一覧を表示するための項目一覧表示領域2001と、指定されたキー項目の一覧を表示するためのキー項目表示領域2002と、重複値の処理を選択するための重複値処理選択領域2003と、同一のフィールドに値を結合して表示する際の区切記号を選択するための区切記号選択領域2004とを含む。項目一覧表示領域2001には、縦結合後の表形式データの項目の一覧が、項目ごとパネル状に表示されている。
また、設定処理部102は、ユーザ端末2からキー項目の指定を受け付ける(S52)。本ステップでは、ユーザが画面上で項目のパネルに対して所定の操作を行うことにより、設定処理部102はキー項目の指定を受け付ける。所定の操作とは、パネルのキー項目表示領域へのドラッグや、パネルのクリック等である。例えば、図16に示した画面において、項目一覧表示領域2001の各パネルをドラッグアンドドロップ可能とし、パネルがキー項目表示領域2002にドロップされた場合、設定処理部102は当該パネルに対応する項目をキー項目として受け付ける。また、表示制御部104は、画面上において、ドラッグされた項目のパネルの表示を、キー項目表示領域に移動させる。
キー項目は複数指定できるようにしてもよい。このとき、キー項目表示領域2002において、指定された順に上から下へパネルが追加される。なお、パネルが追加される方向は上から下には限られず、その他の所定の方向であってもよい。また、ユーザがドラッグすることにより、キー項目表示領域におけるパネルの順序を入れ替えることができるようにしてもよい。ここで、キー項目の順序は、結合後のレコードをまとめる際の優先度を示す。すなわち、結合後のレコードは、キー項目の順序に基づいて、例えば、上位のキー項目の値が同一のレコードは下位のキー項目の値でソートされるように、複数キーによるソートができる。
また、選択されたキー項目には、レコードを集約するための条件を設定する。すなわち、例えば、「完全一致」、「前方一致」、「後方一致」又は「中間一致」のような、名寄せを行う条件を設定する。さらに、当該キー項目についてデータクレンジング(標準化)を行うか否かを指定できるようにしてもよい。
図17は、キー項目の設定を行うための画面の一例である。図17の画面には、キー項
目の項目名と、「名寄せ判断」の選択肢3001と、「データクレンジング処理」を行うか否かの選択肢3002と、設定を登録するための「登録」ボタン3003が表示されている。例えば、図16のキー項目一覧に表示されたパネルをクリックすることにより、図17に示すような、当該パネルが示すキー項目の設定画面が表示される。
「名寄せ判断」の選択肢3001には、名寄せを行う条件が選択肢として表示されている。本実施形態において「名寄せ」とは、表形式データに含まれる同一の実体に係るレコードをまとめる処理をいう。本実施形態では、キー項目の値の少なくとも一部が一致するレコードを集約する。名寄せを行うことで、例えば同一人物に関するレコードを特定することができ、集計結果がより精確になる。
また、「データクレンジング処理」は、キー項目の値の記述形式を標準化する処理である。例えば電話番号を示す値が、「01-2345-6789」、「01(2345)6789」、「0123456789」等のように異なる記述形式で登録されている場合がある。このような値を標準化することにより、より精度の高い名寄せを行うことができるようになる。例示した電話番号の他、郵便番号、日付、法人名、数値(桁区切りの有無や単位の有無等)、氏名の異体字、住所等について、データクレンジングを行うことにより、記述形式の差異を吸収できる。データクレンジング処理については既存の技術を適用することができる。
データクレンジングを併用した名寄せにより、例えば、(1)異体字で記述された「斉藤」、「斎藤」、「齋藤」、「齊藤」のいずれか、且つ(2)記述形式の異なる「東京都千代田区飯田橋99−99−99XXハイツ101号室」、「東京都千代田区飯田橋99−99−99−101」、「東京都千代田区飯田橋99丁目99番99号XXハイツ101号室」、「千代田区飯田橋99−99−99−101」等のいずれか、且つ(3)記述形式の異なるコード番号「1000523」、「1,000,523」、「壱百萬五百二十三」等のいずれかという条件を満たす、(1)〜(3)の様々な組合せを含むレコードを、同一人物に関するレコードとして扱うことができるようになる。
また、設定処理部102は、キー項目の設定が完了した場合、キー項目表示領域2002の表示を更新する(S53)。ここでは、キー項目のパネルが、条件の指定が完了したことを示す所定の表示態様に変更される。表示態様としては、背景色、文字色、書体、大きさ、又はこれらの変化パターン(背景色の点滅等)等が挙げられる。例えば、図16に示したキー項目に対して条件の指定が完了した場合、図18に示すようにキー項目のパネルの色を変更する。図18の画面では、条件の指定が完了したパネルの色が、「キー項目」のタイトルの背景色と同一の色に変更されている。なお、図16及び図18では、便宜上ハッチングのパターンで色を表している。同一のパターンで塗りつぶされた領域は、同一の色で塗りつぶされているものとする。
その後、設定処理部102は、キー項目の入力が終了したか判断する(S54)。例えば、ユーザの操作により、図18の「データ出力」ボタンが押下されると、設定処理部102は、キー項目の入力が終了したものと判断する。入力が終了していない場合(S54:NO)、例えばS52の処理に戻り、設定処理部102は、さらにキー項目の指定を受け付ける。一方、入力が終了した場合(S54:YES)、設定処理部102は、データ記憶部101に設定を記憶させ、横結合設定処理を終了する(S55)。本ステップでは、横結合の設定データとして、「キー項目」及び「名寄せの条件」が設定される。さらに、「データクレンジング処理の要否」や、「重複する値の処理」、「区切記号の種類」等を設定してもよい。
<集計設定処理>
次に、集計処理で用いられるキー項目及び集計項目を設定するための集計設定処理につ
いて説明する。図19は、集計設定処理の一例を示す処理フローである。本実施形態では、縦結合後の表形式データを用いて、レコードの値を集計する。よって、図7Aに示したような縦結合の設定データが予めデータ記憶部101に記憶されているものとする。
まず、表示制御部104は、出力項目の一覧を生成してユーザ端末2へ送信し、出力項目の一覧をユーザ端末2の表示装置に表示させる(図19:S61)。本ステップの処理は、図15のS51と同様である。
図20に、画面の一例を示す。図20の画面は、項目の一覧を表示するための項目一覧表示領域4001と、出力される表形式データに新しい項目を追加するための新規項目のパネル4002と、指定されたキー項目の一覧を表示するためのキー項目表示領域4003と、集計項目の一覧を表示するための集計項目表示領域4004とを含む。項目一覧表示領域には、縦結合後の表形式データの項目の一覧が、項目ごとパネル状に表示されている。
また、設定処理部102は、ユーザ端末2からキー項目の指定を受け付ける(S62)。本ステップは、図15のS52とほぼ同様であり、ユーザが画面上で項目のパネルに対して所定の操作を行うことによって、設定処理部102はキー項目の指定を受け付ける。また、集計設定処理では、集計するレコードの条件として、キー項目の集計方法を選択させる。集計方法は、例えば、「完全一致」、「年別」、「月別」、「日別」、「曜日別」等の選択肢からユーザに指定させる。
図21は、キー項目の設定を行うための画面の一例である。図20の画面には、キー項目の項目名5001と、「キー項目の集計方法」の選択肢5002とが表示されている。例えば、図20のキー項目一覧に表示されたパネルをクリックすることにより、図21に示すような、当該パネルが示すキー項目の設定画面が表示される。
なお、「完全一致」が選択された場合、キー項目の値が完全一致するレコードが集約されて、後述する「集計項目」の値が求められる。また、「年別」、「月別」、「日別」、「曜日別」等の選択肢は、キー項目が日付を表す場合に有効である。それぞれ、所定の期間を単位として集計処理が行われる。
また、設定処理部102は、キー項目の設定が完了した場合、キー項目表示領域の表示を更新する(S63)。本ステップは、図15のS53と同様であり、キー項目のパネルが、条件の指定が完了したことを示す所定の表示態様に変更される。例えば、図20に示したキー項目に対して条件の指定が完了した場合、図22に示すようにキー項目のパネルの色を変更する。なお、図20及び図22でも、便宜上ハッチングのパターンで色を表している。なお、キー項目の指定は、複数受け付けるようにしてもよい。キー項目を複数受け付ける場合の処理は、S54(図15)と同様である。
また、設定処理部102は、集計項目の指定を受け付ける(S64)。ここでは、ユーザが画面上で項目のパネルに対して所定の操作を行うことによって、設定処理部102は集計項目の指定を受け付ける。例えば、図22に示した画面において、項目一覧表示領域4001の各パネルをドラッグアンドドロップ可能とし、パネルが集計項目表示領域4004にドロップされた場合、設定処理部102は当該パネルを集計項目として受け付けるようにする。また、表示制御部104は、例えば、図23に示すように、画面上において、ドラッグされた項目のパネルを、集計項目表示領域4004に移動させる。また、集計項目として、縦結合後の表形式データには存在しない項目を新たに生成することもできる。この場合、ユーザは、例えば、図22の左下に存在する「新規」のパネル4002を集計項目表示領域4004へドラッグする。新規項目については、後に詳述する。
また、集計項目も、複数指定できるようにしてもよい。このとき、集計項目表示領域4004において、指定された順に上から下へパネルが追加される。なお、パネルが追加される方向は上から下には限られず、その他の所定の方向であってもよい。また、ユーザがドラッグすることにより、集計項目表示領域4004におけるパネルの順序を入れ替えることができるようにしてもよい。ここで、本実施形態では集計項目の順序に基づいて集計処理を行う。よって、下位の集計項目では、上位の集計項目の結果を用いて集計処理を行うことができる。
また、集計項目には、項目の集計方法を設定する。例えば、値を区切記号で結合した文字列を生成する「結合」や値の出現回数を計数する「頻度」等の「文字集計」、又は「合計」や「平均」、「中央値」、「最頻値」、「最大値」、「最小値」、「分散」、「標準偏差」等の「数値集計(要約統計量)」がユーザによって選択される。
図24は、集計項目の設定を行うための画面の一例である。図24の画面には、集計項目の項目名6001と、「項目の集計方法」の選択肢6002とが表示されている。例えば、図23の集計項目表示領域に表示されたパネルをクリックすることにより、図24に示すような、当該パネルが示すキー項目の設定画面が表示される。
また、設定処理部102は、集計項目の設定が完了した場合、集計項目表示領域の表示を更新する(S65)。本ステップは、S63と同様であり、集計項目のパネルが、条件の指定が完了したことを示す所定の表示態様に変更される。例えば、図23に示したキー項目に対して条件の指定が完了した場合、図25に示すように集計項目のパネルの色を変更する。なお、図23及び図25でも、便宜上ハッチングのパターンで色を表している。以上のような集計項目の指定も、複数受け付けるようにしてもよい。
その後、設定処理部102は、キー項目及び集計項目の入力が終了したか判断する(S66)。例えば、ユーザの操作により、図25の「データ出力」ボタンが押下されると、設定処理部102は、キー項目の入力が終了したものと判断する。入力が終了していない場合(S66:NO)、例えばS62の処理に戻り、設定処理部102は、さらにキー項目の指定を受け付ける。なお、S64の処理に戻り、設定処理部102は、集計項目の指定を受け付けるようにしてもよい。図19の処理フローでは、キー項目の指定及びキー項目表示領域の表示更新(S62及びS63)と、集計項目の指定及び集計項目表示領域の表示更新(S64及びS65)とを便宜的に連続する処理として説明したが、それぞれ独立した処理である。したがって、ユーザの操作に基づき、任意の順序で、それぞれ任意の回数実行される。一方、入力が終了した場合(S66:YES)、設定処理部102は、データ記憶部101に設定を記憶させ(S67)、集計設定処理を終了する。S67では、集計処理の設定データとして、例えば、「キー項目」及び「キー項目の集計方法」、並びに「集計項目」及び「項目の集計方法」が設定される。
<対照群生成処理>
横結合処理又は集計処理を行う場合、上でも述べた通り、まず縦結合処理を行う。すなわち、図14Cに示したような、複数の表形式データの和集合を処理対象とする。また、横結合処理又は集計処理においても、処理対象の表形式データに対して図8に示した項目別リスト生成処理を行い、項目別リストを生成する。項目別リスト生成処理については、図8に示した通りであるため、説明を省略する。例えば、図14Cに示した表形式データから、図12Cに示したような項目別リストが生成される。
また、横結合処理及び集計処理の処理過程で、項目別リストを用いて集約するレコードを特定するためのデータである「対照群」が、中間的に生成される。本実施形態の対照群
とは、キー項目の値が所定の条件を満たすレコード(行)を、行番号の集合で表したものである。対照群生成処理では、例えば、キー項目の値が完全一致するレコードの行番号の集合や、日付形式で記述されたキー項目の値が所定の期間内に属するレコードの行番号の集合が生成される。そして、表形式データ処理装置1は、後述する横結合処理又は集計処理において、対照群を用いてレコードを集約する。
図26及び27は、対照群生成処理の一例を示す処理フローである。対照群生成部106は、横結合の設定データ又は集計処理の設定データをデータ記憶部101から読み出し、キー項目の項目別リストを1つ取得する(図26:S71)。例えば、図14Cに示した表形式データのうち、「Name」がキー項目に指定されている場合、図12Cに示した項目別リストのうち、左から3番目(項目名:Name)の項目別リストが取得される。
また、対照群生成部106は、値と行番号のリストとを対応付けて保持する、Key−Value形式のマップを生成する(S72)。Keyには、キー項目の値が登録され、Valueには、行番号を要素として保持するリストが登録される。
次に、対照群生成処理部106は、クレンジング処理を行う(S73)。本ステップは、例えば、横結合の設定データ又は集計処理の設定データにおいて、クレンジング処理を行う旨の指定がされている場合に行われる。本ステップでは、電話番号、郵便番号、日付、法人名、数値(区切記号の有無や単位の有無等)、氏名の異体字、住所等について、値の記述形式を変更して統一する。これにより、名寄せのような、レコードを集約する処理の精度が向上する。
また、対照群生成部106は、キー項目の項目別リストから要素を1つ取得する(S74)。本ステップでは、キー項目の値が、レコードの登録順(行番号順)に1つずつ読み出される。そして、対照群生成処理部106は、読み出された要素の値が対照群に存在するか判断する(S75)。ここでは、対照群生成処理部106は、読み出された要素の値が属すべき集合がすでに生成されているか判断する。図12Cの例では、例えば「Name」の値が読み出され、値が同一の集合がすでに存在するか判断される。読み出された要素の値が対照群に存在しない場合(S75:NO)、対照群生成部106は、読み出された要素の値と関連付けて、当該要素の行番号をリストに登録する(S76)。一方、読み出された要素の値が対照群に存在する場合(S75:YES)、対照群生成部106は、合致する値と関連付けられた行番号のリスト(すなわち、集合)に、当該要素の行番号を追加する(S77)。
その後、対照群生成部106は、キー項目の項目別リストに未処理の要素が存在するか判断する(S78)。未処理の要素が存在する場合(S78:YES)、S74の処理に戻る。キー項目を集約する条件が「完全一致」であり、図12Cの左から3番目に示した「Name」の項目別リストについて処理を行う場合、1行目から3行目までは同一の値が対照群に存在しないため、新たな行番号の集合が生成される。4行目の「Fujita Tomoko」は1行目と同一である。よって、S74において4行目が取得された場合、S75に
おいて合致する値が対照群に存在すると判断される。同様に5行目は、2行目と同一の集合に追加される。図12Cの左から3番目の項目別データからは、図28Aに示すような対照群が生成される。
また、対照群生成部106は、未処理のキー項目が存在するか判断する(S79)。未処理のキー項目が存在する場合(S79:YES)、処理は図16のS71に戻る。一方、未処理のキー項目が存在しない場合(S79:NO)、対照群生成部106は、対照群は1種類であるか判断する(S80)。なお、ここまでの処理で、キー項目の数だけ対照
群が生成されている。また、対照群の生成において、図28Aに示したような値と行番号の集合との組み合わせを保持していたが、ここでは値との対応付けを削除し、行番号の集合のみを処理の対象とする。
対照群が複数存在する場合(S80:NO)、対照群生成部106は、2つの対照群を取得する(S81)。例えば、対照群に含まれる集合の数が少ない順に2つの対照群を取得する。また、対照群生成部106は、取得した2つの対照群の積集合を生成する(S82)。そして、対照群生成部106は、取得した2つの対照群を、生成した積集合で置換する(S83)。その後、S80の処理に戻る。一方、S80において対照群が1種類であると判断された場合(S80:YES)、対照群生成部106は、対照群生成処理を終了する。
以上の対照群生成処理により、対照群生成部106は、図28Bに示すような、値とは対応付けされていない行番号の集合を、データ記憶部101に記憶させる。なお、後述する横結合処理や集計処理では、行番号の集合がわかればレコードを集約することができる。
また、出力する表形式データにおいてレコードをソートする場合は、対照群生成処理において行番号の集合をソートしておく。仮に、「英字」及び「数字」という2つのキー項目を有する表形式データから、図29Aに示すような行番号の集合が生成されたとする。ここでは、「英字」の値が「A」、「B」及び「C」である行番号の集合が、「英字」の昇順にソートされている。また、「数字」の値の昇順に行番号の集合をソートすると、図29Bのような行番号の集合が生成されたものとする。図29Bでは、「数字」の値が「0」及び「1」である行番号の集合が生成されている。このようなデータに対して、キー項目が「英字」、「数字」の順に、複数キーでのソートを行う場合、図29Cに示すような積集合が生成される。図29Cの例では、「英字」及び「数字」の値が、「A」且つ「1」、「B」且つ「1」、「C」且つ「0」である行番号の集合が生成されている。なお、キー項目が「数字」、「英字」の順に、複数キーでのソートを行う場合は、図29Dに示すような積集合が生成される。図29Dの例では、「数字」及び「英字」の値が、「0」且つ「C」、「1」且つ「A」、「1」且つ「B」である行番号の集合が生成されている。このようにソートされた順序を保持しておけば、行番号の集合と値との対応付けを削除しても、行番号の集合とその順序に基づいてレコードをソートしつつ集約することができる。
以上のように、対照群生成処理では、最終的に1つの対照群が生成され、データ記憶部101に記憶される。対照群の積集合を求めることにより、複数のキー項目が指定された場合でも、複数のキー項目によって特定されるレコードの集合ごとにレコードを集約することができるようになる。
<横結合処理・集計処理>
対照群が生成された後、横結合処理又は集計処理が行われる。横結合処理は横結合部107によって実行され、集計処理は集計部108によって実行されるものとする。
図30は、横結合・集計処理の一例を示す処理フローである。まず、横結合部107又は集計部108は、出力用の項目別リストを生成し、初期化する(図30:S91)。ここでは、横結合の設定データ又は集計処理の設定データに基づいて、出力項目の数だけ項目別リストを生成する。
また、横結合部107又は集計部108は、処理対象の項目別リストを1つ取得する(S92)。横結合処理の場合、図12Cに示したような、縦結合後の項目別リストから項
目別リストを1つ取得する。集計処理の場合、キー項目及び集計項目に対応する項目別リストから、1つ取得する。また、横結合部107又は集計部108は、対照群から集合を1つ取得する(S93)。ここでは、図28Aに示したような対照群から行番号の集合を1つ取得する。
そして、横結合部107又は集計部108は、値を結合するか判断する(S94)。ここでは、横結合を行う場合、又は項目の集計方法として「結合」が指定されている場合、値を結合すると判断される。一方、項目の集計方法として、「合計」、「平均」、「中央値」、「最頻値」、「最大値」、「最小値」、「分散」、「標準偏差」等が指定されている場合、値を結合しないと判断される。
値を結合する場合(S94:YES)、横結合部107又は集計部108は、S93で取得した集合に含まれる行番号に対応する要素を、S92で取得した項目別リストから取得し、例えば所定の区切記号で結合する(S95)。なお、図16の重複値処理選択領域に示したように、横結合処理においてはキー項目が所定の条件を満たすレコードを1つのレコードにまとめる場合、重複を除いて値を結合するようにしてもよいし、重複を許して値を結合するようにしてもよい。また、横結合処理において、キー項目が所定の条件を満たすレコードを1つのレコードにまとめるのではなく、例えば出現頻度の順にソートするようにしてもよい。
一方、S94において値を結合しないと判断された場合(S94:NO)、集計部108は、値を算出する(S96)。ここでは、横結合部107又は集計部108は、S93で取得した集合に含まれる行番号に対応する要素を、S92で取得した項目別リストから取得し、項目の集計方法に基づいて、合計したり平均を算出したりする。
S95又はS96の後、横結合部107又は集計部108は、結合した値又は集計した値を出力用の項目別リストに新たな要素として登録する(S97)。そして、横結合部107又は集計部108は、対照群に未処理の集合が存在するか判断する(S98)。未処理の集合が存在する場合(S98:YES)、S93の処理に戻る。一方、未処理の集合が存在しない場合(S98:NO)、横結合部107又は集計部108は、未処理の項目が存在するか判断する(S99)。横結合処理の場合、図12Cに示したような、縦結合後の項目別リストに、未処理の項目別リストが存在するか判断する。集計処理の場合、キー項目及び集計項目に対応する項目別リストに、未処理のものが存在するか判断する。未処理の項目が存在する場合(S99:YES)、S92の処理に戻る。一方、未処理の項目が存在しない場合(S99:NO)、横結合部107又は集計部108は、横結合・集計処理を終了する。
以上のように、本実施形態では対照群を用いて集約するレコードを特定する。上でも述べたように、対照群の生成は、キー項目の値の各々について、すでに生成された集合(対照群の集合のいずれか)に属するか否かを判断することにより行われる。キー項目の値の各々について、キー項目の他の値の各々と比較するような処理を行う必要がないため、対照群の生成は比較的高速に行うことができる。また、対照群を生成した後は、各集合と当該集合に属するレコードの値との関連付けは保持する必要がない。すなわち、対照群の各集合は、行番号のみを保持している。このような対照群を記憶するために必要なメモリの容量は比較的少なくなる。
<新規項目生成処理>
次に、集計処理において新しい項目の生成が指示された場合の処理について説明する。例えば、図23に示した画面において集計項目表示領域に「新規」のパネルが追加された場合、図19のS64において、設定処理部102は、値の係数、計算式の入力、又は条
件式の入力をユーザ端末2から受け付ける。図31は、新規項目の設定画面の一例を示す図である。例えば、図23において、集計項目表示領域に「新規」パネルが追加され、追加された当該パネルがクリックされると、ユーザ端末2の表示部には、図31に示すような画面が表示される。
図31の例では、新規項目の名称7001と、「キーカウント」、「計算」及び「条件」の各ボタン7002とが表示されている。「キーカウント」が押下されると、キー項目含まれる同一の値ごとに個数が計数される。「計算」が押下されると、ユーザ端末2には、計算式を入力するための画面が表示される。図32は、計算式を入力するための画面の一例を示す図である。図32の画面には、集計項目の一覧を表示するための領域8001と、演算式又は固定値を入力するためのテンキー8002と、計算式を項目のパネル及びテンキーのパネルで表示するための計算式の表示領域8003と、計算式を文字列で確認するための確認用計算式の表示領域8004とを有する。集計項目の一覧には、図25等の集計項目表示領域に追加されたパネルが表示されている。また、本実施形態では、当該新規項目よりも上位に登録されている項目を用いて計算式を作成することができる。すなわち、上位に登録されている他の新規項目の計算結果を用いて、さらに新規項目を定義することができる。
また、「条件」が押下されると、ユーザ端末2には、条件式を入力するための画面が表示される。図33は、条件式を入力するための画面の一例を示す図である。図33の例では、集計項目の一覧9001と、条件を定義する領域9002と、条件に合致する場合の出力値を設定する領域9003と、条件に合致しない場合の出力値を設定するための領域9004とが表示されている。ユーザは、例えば、集計項目と任意の値との大小関係が指定された条件を満たす場合と満たさない場合とについて、出力する値を設定することができる。また、条件式は「AND」(論理積)又は「OR」(論理和)で接続して複数定義することができる。条件式の場合も、当該新規項目よりも上位に登録されている集計項目を用いてさらに条件式を作成することができる。
新規項目を設定する場合、集計項目の設定データには、「項目の集計方法」として、頻度を係数する項目、計算式又は条件式が設定される。
図34は、新規項目生成処理の一例を示す処理フローである。まず、集計部108は、集計処理の設定データを読み出し、新規項目を1つ取得する(図34:S101)。また、集計部108は、新規項目の集計処理が条件式又は計算式であるか判断する(S102)。条件式又は計算式である場合(S102:YES)、集計部108は、対照群の集合を1つ取得する(S103)。
そして、集計部108は、条件式の判断又は計算式の算出を行う(S104)。また、集計部108は、条件式の判断結果又は計算式の算出結果を出力用の項目別リストに新たな要素として登録する(S105)。そして、集計部108は、未処理の集合が対照群に存在するか判断し(S106)、未処理の集合が存在する場合(S106:YES)、S103の処理に戻る。一方、未処理の集合が存在しない場合(S106:NO)、S111の処理に遷移する。一方、S102において、条件式又は計算式でないと判断された場合(S102:NO)、集計部108は、対照群の集合を1つ取得する(S107)。そして、集計部108は、対照群の集合に含まれる値の数を計数する(S108)。そして、集計部108は、出力用の項目別リストに新たな要素として登録する(S109)。
その後、未処理の集合が存在するか判断する(S110)。未処理の集合が存在する場合(S110:YES)、S107の処理に戻る。一方、未処理の集合が存在しない場合(S110:NO)、又はS106において未処理の集合が存在しないと判断された場合
(S106:NO)、集計部108は、未処理の新規項目が存在するか判断する(S111)。未処理の新規項目が存在する場合(S111:YES)、S101の処理に戻る。一方、未処理の新規項目が存在しない場合(S111:NO)、集計部108は、新規項目生成処理を終了する。
例えば、図12Cの項目別リストのうち、「Name」をキー項目として横結合する場合、図28Bに示す対照群が生成される。図28Bの対照群に基づいて項目別リストの要素を集約すると、1行目及び4行目の要素、2行目及び5行目の要素、並びに3行目の要素が横結合後の項目別リストの要素になる。図35Aに、横結合後の項目別データの例を示す。図35Aの各項目別リストのうち、1行目の要素は、図12Cの1行目及び4行目の要素を集約したものである。同様に、図35Aの2行目の要素は、図12Cの2行目及び5行目の要素を集約したものである。図35Aの3行目の要素は、図12Cの3行目の要素に相当する。
また、横結合後の項目別リストにおいて、重複する値をフィールド内に残す場合は、図35Bのような項目別リストが生成される。図35Bの例では、「Name」の項目別リストの1行目及び2行目の要素に、それぞれ同一の値が2つずつ保持されている。キー項目以外の項目についても、結合後の項目別リストにおいて1つの要素に複数の値を結合して登録してもよいし、重複を除いて登録してもよい。さらに、重複を除いた上で当該値が出現した頻度を示す数値を登録するようにしてもよい。
また、図示は省略するが、集計処理を行う場合は、キー項目及び集計項目について項目別リストが生成される。そして、対照群の集合ごとに、設定された集計方法に基づいて集計される。
以上のようにして、横結合後の項目別リスト、又は集計処理後の項目別リストがすべて生成される。これらの項目別リストを表形式データとして出力するためには、図13を用いて説明した出力処理を行う。
<変形例>
本実施形態では、項目別リスト生成処理によって、表形式データを項目別リストに分解して扱う。上記の説明では、縦結合処理から出力処理を行うパターン、及び縦結合後の表形式データを用いて横結合・集計処理から出力処理を行うパターンについて説明した。しかし、本実施形態に係る処理のパターンはこれらに限られない。例えば項目別リストを用いて、縦結合処理、横結合処理、集計処理の順に処理を行ったり、このようにして生成した複数の表形式データを用いてさらに縦結合処理を行ったりすることができる。
本実施形態では、表形式データ処理装置1が、ネットワーク3を介して各ユーザ端末2へサービスを提供するという構成を説明したが、このような態様には限られない。例えば、表形式データ処理プログラムをインストールしたユーザ端末2が、ネットワーク3への接続を行うことなく、本実施の形態に係る処理を実行するようにしてもよい。この場合、例えば、表形式データ処理装置は入力I/Fを介してユーザからのデータ操作の指示を受け付ける。また、表形式データ処理装置は、出力I/Fを介してモニタ等の出力装置に結果を出力する。
また、本実施形態で示した処理フローは例示であり、処理結果が変わらない限りにおいて処理の順序を変更したり、並列に処理を行うようにしてもよい。画面の例についても適宜レイアウト等を変更することができる。
1 表形式データ処理装置
101 データ記憶部
102 設定処理部
103 データ分割部
104 表示制御部
105 縦結合部
106 対照群生成部
107 横結合部
108 集計部
109 出力データ生成部
2 ユーザ端末
3 ネットワーク

Claims (6)

  1. 複数の項目に対応する複数の要素をデリミター区切りで含むレコードが複数登録される表形式データについて、入力される表形式データである入力テーブルに含まれるレコードを集約し、出力する表形式データである出力テーブルを生成するプログラムであって、
    前記入力テーブルに基づいて、項目の順序に対応付けられている要素を抽出し、前記入力テーブルにおけるレコードの順序を維持しつつ前記項目ごとに保持する複数の項目別データを生成するステップと、
    前記項目別データを用いて、所定の条件を満たす前記要素を集合させ、当該要素の集合に基づいて前記レコードの順序に基づく通し番号の集合を生成する集合生成ステップと、
    前記通し番号の集合に基づき、複数の前記項目別データに含まれる要素をそれぞれ抽出して集約し、複数の出力用の項目別データを生成するステップと、
    複数の前記出力用の項目別データから出力テーブルを生成し、出力する出力ステップと、
    をコンピュータに実行させる表形式データ処理プログラム。
  2. 複数の表形式データ間における項目の対応付けを表すデータに基づいて、複数の表形式データの前記項目別データの和集合を生成するステップ
    をさらに実行させ、
    記集合生成ステップにおいて、前記項目別データの和集合を用いて、前記レコードの順序の集合を生成する
    請求項に記載の表形式データ処理プログラム。
  3. 前記集合に属する順序に基づいて集約される要素に異なる値が存在する場合、前記集約後の項目別データには、前記異なる値を結合した要素を登録する
    請求項に記載の表形式データ処理プログラム。
  4. 前記集約後の項目別データを用いて、第2の所定条件を満たす複数の要素に対応する、前記レコードの順序の集合を生成する第2集合生成ステップ
    をさらに実行させ、
    前記出力ステップにおいて、前記第2集合生成ステップにおいて生成された前記集合に属する順序に基づいて前記集約後の項目別データに含まれる要素をさらに集約し、集約後
    の項目別データから出力テーブルを生成する
    請求項2又は3に記載の表形式データ処理プログラム。
  5. 複数の項目に対応する複数の要素をデリミター区切りで含むレコードが複数登録される表形式データについて、入力される表形式データである入力テーブルに含まれるレコードを集約し、出力する表形式データである出力テーブルを生成する方法であって、
    前記入力テーブルに基づいて、項目の順序に対応付けられている要素を抽出し、前記入力テーブルにおけるレコードの順序を維持しつつ前記項目ごとに保持する複数の項目別データを生成するステップと、
    前記項目別データを用いて、所定の条件を満たす前記要素を集合させ、当該要素の集合に基づいて前記レコードの順序に基づく通し番号の集合を生成する集合生成ステップと、
    前記通し番号の集合に基づき、複数の前記項目別データに含まれる要素をそれぞれ抽出して集約し、複数の出力用の項目別データを生成するステップと、
    複数の前記出力用の項目別データから出力テーブルを生成し、出力する出力テーブル生成ステップと、
    をコンピュータが実行する表形式データ処理方法。
  6. 複数の項目に対応する複数の要素をデリミター区切りで含むレコードが複数登録される表形式データについて、入力される表形式データである入力テーブルに含まれるレコードを集約し、出力する
    表形式データである出力テーブルを生成する装置であって、
    前記入力テーブルに基づいて、項目の順序に対応付けられている要素を抽出し、前記入力テーブルにおけるレコードの順序を維持しつつ前記項目ごとに保持する複数の項目別データを生成する項目別データ生成部と、
    前記項目別データを用いて、所定の条件を満たす前記要素を集合させ、当該要素の集合に基づいて前記レコードの順序に基づく通し番号の集合を生成する集合生成部と、
    前記通し番号の集合に基づき、複数の前記項目別データに含まれる要素をそれぞれ抽出して集約し、複数の出力用の項目別データを生成する出力用項目別データ生成部と、
    複数の前記出力用の項目別データから出力テーブルを生成し、出力する出力テーブル生成部と、
    を含む表形式データ処理装置。
JP2013134184A 2013-06-26 2013-06-26 表形式データ処理プログラム、方法及び装置 Active JP5497948B1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013134184A JP5497948B1 (ja) 2013-06-26 2013-06-26 表形式データ処理プログラム、方法及び装置
JP2015523912A JP6623754B2 (ja) 2013-06-26 2014-05-09 表形式データ処理プログラム、方法及び装置
PCT/JP2014/062498 WO2014208205A1 (ja) 2013-06-26 2014-05-09 表形式データ処理プログラム、方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013134184A JP5497948B1 (ja) 2013-06-26 2013-06-26 表形式データ処理プログラム、方法及び装置

Publications (2)

Publication Number Publication Date
JP5497948B1 true JP5497948B1 (ja) 2014-05-21
JP2015045896A JP2015045896A (ja) 2015-03-12

Family

ID=50941680

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013134184A Active JP5497948B1 (ja) 2013-06-26 2013-06-26 表形式データ処理プログラム、方法及び装置

Country Status (1)

Country Link
JP (1) JP5497948B1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109597979A (zh) * 2018-11-28 2019-04-09 北京海数宝科技有限公司 清单表格生成方法、装置、计算机设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010122880A (ja) * 2008-11-19 2010-06-03 Hitachi Ltd データ集計処理方法及びシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010122880A (ja) * 2008-11-19 2010-06-03 Hitachi Ltd データ集計処理方法及びシステム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSND200000979012; 'データクレンジング・ツール 辞書機能でデータの不統一を解消数百個を越えるDBの統合を支援' ネットワークコンピューティング 第11巻 第10号, 19991001, p.86-91, 株式会社リックテレコム *
CSND201200440004; 森山 徹: 'Big Data争奪 データベース陣取り合戦' 日経コンピュータ no.816, 20120830, p.56-65, 日経BP社 *
JPN6013055373; 'データクレンジング・ツール 辞書機能でデータの不統一を解消数百個を越えるDBの統合を支援' ネットワークコンピューティング 第11巻 第10号, 19991001, p.86-91, 株式会社リックテレコム *
JPN6013055375; 森山 徹: 'Big Data争奪 データベース陣取り合戦' 日経コンピュータ no.816, 20120830, p.56-65, 日経BP社 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109597979A (zh) * 2018-11-28 2019-04-09 北京海数宝科技有限公司 清单表格生成方法、装置、计算机设备和存储介质
CN109597979B (zh) * 2018-11-28 2022-11-11 北京海数宝科技有限公司 清单表格生成方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
JP2015045896A (ja) 2015-03-12

Similar Documents

Publication Publication Date Title
US20230350883A1 (en) Dynamic Dashboard with Guided Discovery
JP2019194881A (ja) データ検索装置、プログラム、及び記録媒体
JP6283190B2 (ja) 表形式データ処理プログラム、方法、及び装置
JP6623754B2 (ja) 表形式データ処理プログラム、方法及び装置
WO2005050447A1 (ja) バッチ処理装置
JP5424798B2 (ja) メタデータ設定方法及びメタデータ設定システム、並びにプログラム
CN102043824A (zh) 内容关系可视化设备、内容关系可视化方法及其程序
JP5010749B1 (ja) 会計仕訳ファイルデータ標準化システムとそれを用いた監査システムとそれらのプログラム
JP5497948B1 (ja) 表形式データ処理プログラム、方法及び装置
WO2015022951A1 (ja) 画面自動生成装置、画面自動生成プログラムおよび画面自動生成方法
JP5497947B1 (ja) 表形式データ処理プログラム、方法及び装置
JP5260003B2 (ja) ファイル検索装置及びファイル検索プログラム
WO2022215276A1 (ja) データ抽出装置、データ抽出方法、データ抽出プログラム、データ抽出支援装置、データ抽出支援方法、データ抽出支援プログラム
JP6320901B2 (ja) データ連携支援システムおよびデータ連携支援方法
JP2000122715A (ja) プラント用データベース保守装置
JP6763967B2 (ja) データ変換装置とデータ変換方法
JP2017072957A (ja) ファイル編集方法、ファイル編集装置及びファイル編集プログラム
JP2005190212A (ja) データベースシステム、データ処理方法及びプログラム
JP2019101829A (ja) ソフトウェア部品管理システム、計算機および方法
JP6028905B2 (ja) 帳票管理装置及び帳票管理方法並びに帳票管理プログラム
TWI820597B (zh) 計畫製定輔助系統及其方法
JP5687918B2 (ja) 業務アプリケーション構成装置
JPWO2019012674A1 (ja) プログラムの統合解析管理装置及びその統合解析管理方法
JP4181330B2 (ja) 要約作成プログラム及びシステム並びにコンピュータによる要約作成方法
JP6283442B1 (ja) 解析装置、解析方法、および解析プログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140306

R150 Certificate of patent or registration of utility model

Ref document number: 5497948

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250