JP6702425B2 - 集計プログラム、集計装置、及び集計方法 - Google Patents

集計プログラム、集計装置、及び集計方法 Download PDF

Info

Publication number
JP6702425B2
JP6702425B2 JP2018544603A JP2018544603A JP6702425B2 JP 6702425 B2 JP6702425 B2 JP 6702425B2 JP 2018544603 A JP2018544603 A JP 2018544603A JP 2018544603 A JP2018544603 A JP 2018544603A JP 6702425 B2 JP6702425 B2 JP 6702425B2
Authority
JP
Japan
Prior art keywords
date
time
aggregation
aggregated
value 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
JP2018544603A
Other languages
English (en)
Other versions
JPWO2018069973A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2018069973A1 publication Critical patent/JPWO2018069973A1/ja
Application granted granted Critical
Publication of JP6702425B2 publication Critical patent/JP6702425B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • G06F16/196Specific adaptations of the file system to access devices and non-file objects via standard file system access operations, e.g. pseudo file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、集計プログラム、集計装置、及び集計方法に関する。
従来、複数の項目を含むデータを取り込んで、項目毎に集計する技術が知られている。
また、データウェアハウス等の外部に蓄積されたデータをロードする際に、データに対して集計処理等の処理を行いつつデータをロードする技術が知られている。
特開2006−195680号公報 特表2012−526314号公報
ところで、近年、データの分析等のために、複数のデータベース各々が含むテーブルに記憶されたデータを集計することが行われている。この集計において、例えば、複数のデータベースのうちの1つのデータベースを集計処理の実行対象のデータベースとして、各データベースのテーブルに記憶されたデータを集計する集計処理を行うことが考えられる。なお、以下では、コンピュータが管理するデータに関するテーブル、具体的には、実行対象とするデータベース自身がデータを記憶しているテーブルを「内部テーブル」という。
そして、この場合、複数のデータベースのうちの集計処理が実行されるデータベース以外のデータベースのテーブルは、例えば、集計処理が実行されるデータベースのテーブルとして仮想化し、仮想化したテーブルに対して集計処理が行われる。なお、以下では、コンピュータが管理するデータ以外のデータに関するテーブルを「外部テーブル」という。外部テーブルは、具体的には、例えば、集計処理が実行されるデータベース以外のデータベースのテーブルを、集計処理が実行されるデータベースのテーブルとして仮想化したテーブルである。
内部テーブルに対しては、例えば日付等の集計単位とする列に、集計処理が実行されるデータベースを管理するシステムの機能により、B木索引等の索引(インデックス)を付与することで、データの集計処理を高速化することができる。
これに対し、外部テーブルに対しては、集計処理が実行されるデータベースを管理するシステムの機能により索引を付与することができないため、データの集計処理が比較的低速になってしまう。一方、集計処理が実行されるデータベース以外のデータベースのテーブルを集計処理が実行されるデータベースにロードして内部テーブルとすることで、該テーブルに対してインデックスを付与することができる。しかしながら、このロード処理には比較的時間がかかってしまい、ロード処理に集計処理を加えた全体の処理としては比較的低速になってしまう。
本発明は、一つの側面として、外部テーブルに記憶されたデータを高速に集計することを目的とする。
本発明は、一つの側面として、コンピュータが管理するデータ以外のデータに関する外部テーブルを少なくとも一つ含む集計対象テーブルのデータを集計する。この集計において、日時項目を含む複数の項目を有する前記外部テーブルの集計単位とする前記日時項目以外の特定の項目と、前記特定の項目毎に所定の粒度の日時項目単位で集計値が記憶される集計値リストとを、1対1で対応付ける処理を行う。この処理において、前記特定の項目をインデックスとして用いて該特定の項目の集計値リストを特定可能に1対1で対応付ける。そして、前記外部テーブルに記憶されたデータを集計する際に、前記特定の項目をインデックスとして用いて特定される前記集計値リストの前記集計値を更新する。
一つの側面として、外部テーブルに記憶されたデータを高速に集計することができる、という効果を有する。
外部テーブルに記憶されたデータの集計処理を説明するための図である。 実施形態に係る集計システムの概略構成を示すブロック図である。 実施形態に係る集計装置の機能ブロック図である。 内部テーブルの一例を示す図である。 外部テーブルの一例を示す図である。 集計定義の一例を示す図である。 内部集計テーブルの一例を示す図である。 集計値リストの一例を示す図である。 メタデータの一例を示す図である。 ハッシュテーブルの一例を示す図である。 集計対象のレコードの特定処理を説明するための図である。 実施形態に係る集計装置として機能するコンピュータの概略構成を示すブロック図である。 実施形態に係る集計処理の一例を示すフローチャートである。 集計値リストの拡張処理の一例を説明するための図である。 集計値リストの拡張処理の一例を説明するための図である。 変形例に係るハッシュテーブルの一例を示す図である。
以下、図面を参照して、本発明の実施形態の一例を詳細に説明する。
まず、実施形態の詳細を説明する前に、図1を参照して、外部テーブルに記憶されたデータの集計処理の問題点について説明する。なお、ここでは、錯綜を回避するために、内部テーブル及び外部テーブルに記憶されるデータの項目(列)が同じで、内部テーブルに記憶されたデータに対して集計処理を行った後に、外部テーブルに記憶されたデータに対して集計処理を行う場合について説明する。また、以下では、複数のデータベース(DB)のうち、集計処理が実行されるデータベースを「内部DB」といい、内部DB以外のデータベースを「外部DB」という。
図1に示すように、内部DB10は、内部テーブル11、及び外部DB13Aのテーブル14Aを内部DB10のテーブルとして仮想化した外部テーブル12Aを含む。また、内部DB10は、外部DB13Bのテーブル14Bを内部DB10のテーブルとして仮想化した外部テーブル12Bを含む。なお、内部テーブル11及びテーブル14A、14Bには、日時、店舗、商品、及び売上が記憶される。日時には日付が西暦の年月日の形式で記憶され、店舗には店舗名が記憶され、商品には商品名が記憶され、売上には売上金額が記憶される。
まず、例えば、内部テーブル11に記憶された各レコードの売上が、店舗及び商品の組み合わせ毎に、1ヶ月単位で積算されて集計され(図1中の1)、集計テーブル16が得られる。集計テーブル16の丸め日時は、内部テーブル11の日時を集計単位(ここでは1ヶ月単位)で丸めた(すなわち、年月日の日を切り捨てた)情報である。すなわち、例えば、店舗名が「東京」の店舗における「りんご」の「2015年4月」の売上の集計値(合計)が「100」であることを表している。
次に、外部テーブル12Aからレコード17が読み出され(図1中の2)、集計テーブル16の対応するレコードの集計値にレコード17の売上が加算される(図1中の3)ことで、外部テーブル12Aに記憶されたデータの集計処理が行われる。この集計処理において、集計テーブル16におけるレコード17に対応するレコードを探索する必要がある。この探索処理では、集計テーブル16におけるレコード17に対応するレコードを探索する際に、集計テーブル16の全レコードからレコード17の店舗及び商品の組み合わせが一致するレコードを探索することとなる(図1中の3−1)。
さらに、この探索処理では、店舗及び商品の組み合わせの探索に加え、レコード17の日時を集計単位で丸めて得られた日時に一致する丸め日時が記憶された集計テーブル16のレコードを探索することとなる(図1中の3−2)。これらの店舗及び商品の組み合わせの探索並びに丸め日時の探索の各々の計算量はO(1)を超えたものとなり、比較的時間がかかってしまう。
そこで、本実施形態では、外部テーブルに記憶されたデータを集計する際に、集計単位とする特定の項目をインデックスとして用いて集計することで、集計処理の高速化を図る。
次に、図2を参照して、本実施形態に係る集計システム20の構成を説明する。図2に示すように、集計システム20は、集計装置21、及び外部装置22A、22Bを含む。集計装置21、及び外部装置22A、22B各々の一例としては、サーバコンピュータが挙げられる。
外部装置22Aの所定の記憶領域には外部DB24Aが記憶される。外部DB24Aは、集計装置21により集計されるデータが記憶されるテーブル26Aを含む。外部装置22Bの所定の記憶領域には外部DB24Bが記憶される。外部DB24Bは、集計装置21により集計されるデータが記憶されるテーブル26Bを含む。そして、集計装置21、及び外部装置22A、22Bの各々は、ネットワーク28に接続され、互いにデータの送受信が可能とされている。
次に、図3を参照して、本実施形態に係る集計装置21の機能的な構成を説明する。集計装置21は、処理部30及び集計部32を含む。また、集計装置21の所定の記憶領域には、内部DB40、集計定義46、内部集計テーブル48、集計値リスト50、メタデータ52、及びハッシュテーブル54が記憶される。内部DB40は、内部テーブル42、及び外部テーブル44A、44Bを含む。
図4に、内部テーブル42の一例を示す。図4に示すように、内部テーブル42には、売上日時、売上店舗、売上商品、及び売上額が記憶される。売上日時には、商品を販売した日時を示す項目として、年月日を示す8桁の数字列が記憶される。また、売上店舗には、商品を販売した店舗を示す情報が記憶され、売上商品には、販売した商品を示す情報が記憶される。また、売上額には、売上日時に記憶された数字列が示す年月日に、売上店舗に記憶された情報が示す店舗において、売上商品に記憶された情報が示す商品について計上された売上金額の合計値が記憶される。
また、内部テーブル42のデータの実体は、内部DB40の表領域に記憶される。そして、内部テーブル42の売上日時、売上店舗、及び売上商品の各項目に対して、Relational DataBase Management System(RDBMS)等の内部DBを管理するシステムの機能で、索引が作成されている。なお、錯綜を回避するために、以下では、内部DB40を管理するシステムの機能で作成された索引を「DB索引」という。
図5に、外部テーブル44Aの一例を示す。図5に示すように、外部テーブル44Aには、日時、店舗、商品、及び売上が記憶される。日時には、内部テーブル42の売上日時と同様の情報が記憶され、店舗には、内部テーブル42の売上店舗と同様の情報が記憶される。また、商品には、内部テーブル42の売上商品と同様の情報が記憶され、売上には、内部テーブル42の売上額と同様の情報が記憶される。
また、外部テーブル44Aは、外部DB24Aのテーブル26Aを内部DB40のテーブルとして仮想化したテーブルである。すなわち、外部テーブル44Aのデータの実体は、内部DB40が記憶されている記憶領域以外の集計装置21の所定の記憶領域、又は外部装置22Aの所定の記憶領域等に、汎用的なデータ形式で記憶される。従って、外部テーブル44Aの各項目にはDB索引は作成されていない。
外部テーブル44Bは、外部DB24Bのテーブル26Bを内部DB40のテーブルとして仮想化したテーブルであること以外は、外部テーブル44Aと同様のテーブルであり、外部テーブル44Aと同様の情報が記憶される。なお、以下では、外部テーブル44A、44Bを区別せずに総称する場合には、符号の末尾のアルファベットを省略する。
集計定義46には、データの集計に用いるパラメータ名、及びパラメータ名に対応する値が記憶される。図6に、集計定義46の一例を示す。図6に示すように、集計定義46には、集計対象とするテーブル毎のパラメータとして、集計対象テーブル、ディメンションカラム1〜N、メジャー、及び日時カラムが記憶される。また、集計定義46には、集計対象とするテーブルに共通のパラメータとして、日時集計単位及び集計方法が記憶される。
集計対象テーブルには、集計対象とするテーブルのテーブル名が記憶される。図6の例では、内部テーブル42のテーブル名が「売上_inner」であり、外部テーブル44Aのテーブル名が「売上A_outer」であることを示している。このように、本実施形態では、テーブル名の末尾の文字列で、テーブルが内部テーブル及び外部テーブルの何れのテーブルであるかを判別可能となっている。すなわち、本実施形態では、テーブル名の末尾が「_inner」であるテーブルは内部テーブルであると判別可能であり、テーブル名の末尾が「_outer」であるテーブルは外部テーブルであると判別可能である。
ディメンションカラム1〜Nには、後述する日時カラム以外の集計単位(すなわち、集計グループ)とする項目の列名が記憶される。なお、ディメンションカラムの数(すなわち、Nの値)は、集計単位とする日時カラム以外の項目の数(本実施形態では、2)以上の所定数であれば特に限定されない。
メジャーには、集計値の算出対象とする項目の列名が記憶される。日時カラムには、日時を示す項目の列名が記憶される。日時集計単位には、日時の集計単位とする情報として、日時を丸める際の粒度が記憶され、集計方法には、メジャーに記憶された項目の集計値の算出方法が記憶される。なお、メジャーは、集計値の算出対象とする項目の列名に限定されず、例えば、売上単価×売上個数等の数式でもよい。また、日時集計単位は、1ヶ月単位に限定されず、1ヶ月単位以外の複数月単位、及び年単位等の他の単位でもよい。また、集計方法は、合計(SUM)に限定されず、平均等の他の方法でもよい。
すなわち、図6の例では、内部テーブル42については、「売上店舗」及び「売上商品」の組み合わせの各々について、1ヶ月単位の「売上額」の合計値が集計値として算出される。また、外部テーブル44については、「店舗」及び「商品」の組み合わせの各々について、1ヶ月単位の「売上」の合計値が集計値として算出される。
処理部30は、内部テーブル42を、売上日時以外の特定の項目毎に所定の粒度の日時項目単位で集計値を算出する。本実施形態では、処理部30は、集計定義46に従って、内部テーブル42について、「売上店舗」及び「売上商品」の組み合わせ毎に、「売上額」を1ヶ月単位で集計し、内部集計テーブル48を生成する。図7に、内部集計テーブル48の一例を示す。図7に示すように、内部集計テーブル48には、丸め日時、dim1、dim2、集計値、及び母数が記憶される。
丸め日時には、内部テーブル42の「売上日時」を、集計定義46の「日時集計単位」で丸めた(すなわち、日を切り捨てた)値が記憶される。また、dim1及びdim2各々には、内部テーブル42に対応する集計定義46の「ディメンションカラム1」及び「ディメンションカラム2」各々の項目の値が記憶される。集計値には、dim1及びdim2の組み合わせ毎に、丸め日時単位で、内部テーブル42の「売上額」を積算して得られる合計値が記憶される。母数には、集計値の算出に用いられたレコードの母数が記憶される。
図7の例では、内部テーブル42には、例えば、売上日時が20150501から20150531までの間に、売上店舗が東京で、売上商品がりんごのレコードが10個あり、このレコードの売上額の合計値が500であることを示している。なお、処理部30による内部集計テーブル48の生成処理については、内部テーブル42に対してSELECT文等のStructured Query Language(SQL)を用いて行えばよいため、ここでの詳細な説明を省略する。
また、処理部30は、内部集計テーブル48を生成した後に、上記特定の項目毎に上記所定の粒度の日時項目単位での集計値が記憶される集計値リスト50を生成する。本実施形態では、処理部30は、dim1及びdim2の組み合わせ毎に、丸め日時の昇順に、集計値及び母数を集計値リスト50に記憶する。
さらに、処理部30は、全ての集計値リスト50で共通のメタデータ52を生成する。本実施形態では、処理部30は、メタデータ52に、集計対象としたデータの丸め日時の最小値(以下、「最小丸め日時」という)及び最大値(以下、「最大丸め日時」という)を各々記憶する。なお、本実施形態では、処理部30は、各集計値リスト50を生成する際に、各集計値リスト50の丸め日時の最小値及び最大値が異なる場合、及び丸め日時が連続しない場合は、集計値及び母数が各々0のレコードを挿入する。これにより、処理部30は、各集計値リスト50を生成する際に、最小丸め日時、最大丸め日時、及びレコード数が同一となるように各集計値リスト50を生成する。
図8に、集計値リスト50の一例を示し、図9に、メタデータ52の一例を示す。図8及び図9の例では、例えば、東京店舗における2015年5月のりんごの売上額の集計値が100で、集計値の算出に用いたレコード数が10であることを示している。また、図8に示すように、本実施形態では、集計値リスト50は、配列の形式で記憶される。
また、処理部30は、上記特定の項目と集計値リスト50とを、特定の項目をインデックスとして用いて該特定の項目の集計値リスト50を特定可能に1対1で対応付ける処理を行う。本実施形態では、処理部30は、dim1及びdim2を入力とした場合に、dim1及びdim2の組み合わせ毎に異なる値を出力するハッシュ関数を用いて、dim1及びdim2と、集計値リスト50とを1対1で対応付ける。具体的には、処理部30は、dim1及びdim2の組み合わせ毎に、ハッシュ関数を用いて得られたハッシュ値を、テーブルの各要素を指し示す記憶領域のアドレスとしたハッシュテーブル54を生成する。そして、処理部30は、ハッシュテーブル54の各要素に、各要素に対応するdim1及びdim2の組み合わせの集計値リスト50の記憶領域の先頭アドレスを記憶する。
図10に、ハッシュテーブル54の一例を示す。図10に示すように、ハッシュテーブル54には、各集計値リスト50の先頭アドレスが配列の形式で記憶される。また、ハッシュテーブル54の各要素には、各要素に対応するハッシュ値を索引(インデックス)としてアクセスすることができる。従って、本実施形態では、dim1及びdim2の組み合わせをハッシュ関数に入力して得られたハッシュ値から、この組み合わせに対応する集計値リストをO(1)の計算量で特定することができる。なお、以下では、ハッシュテーブル54のインデックスを、「ハッシュインデックス」という。
本実施形態に係る集計部32は、外部テーブル44に記憶されたデータを集計する際に、上記特定の項目をインデックスとして用いて集計値リスト50の集計値を更新する。また、集計部32は、集計値を更新する際に、集計値リストにおける上記所定の粒度毎の日時項目を特定する関数を用いて、更新対象とする集計値を特定する。
一例として図11に示すように、本実施形態では、集計部32は、集計定義46の集計対象テーブルの値に従い、外部テーブル44から1件ずつレコードを順次読み出す。また、集計部32は、集計定義46のディメンションカラム1〜Nの値に従い、読み出したレコードの店舗及び商品を前述したハッシュ関数に入力してハッシュ値を得る(図11中の1)。そして、集計部32は、得られたハッシュ値をハッシュインデックスとして用いて、読み出したレコードの店舗及び商品の組み合わせに対応するハッシュテーブル54の要素を読み出す。これにより、集計部32は、該組み合わせに対応する集計値リスト50の先頭アドレスを特定する(図11中の2)。
一方、集計部32は、読み出したレコードの日時を、集計定義46の日時集計単位に従って、丸めることで丸め日時を算出する(図11中の3)。また、集計部32は、メタデータ52から最小丸め日時を読み出す。また、集計部32は、集計値リスト50の集計値の算出対象とする丸め日時を特定する日時特定関数に、算出した丸め日時及び読み出した最小丸め日時を入力する。そして、集計部32は、日時特定関数の出力値を、集計値リスト50の要素にアクセスするためのインデックスとして得る(図11中の4)。
本実施形態では、日時特定関数として、入力された丸め日時から入力された最小丸め日時を減算した値を出力する関数を適用している。本実施形態では、集計値リスト50が配列の形式で記憶され、集計値及び母数が集計値リスト50に丸め日時の昇順に記憶されているため、上記の日時特定関数を用いることで、集計値リスト50における集計値の算出対象とする要素にアクセスすることができる。
そして、集計部32は、ハッシュインデックスを用いて特定した集計値リスト50における、日時特定関数を用いて特定した要素に記憶された集計値に、読み出したレコードの売上を加算し、母数に1を加算する(図11中の5)。
なお、例えば、集計値及び母数を集計値リスト50に丸め日時の降順に記憶した場合は、日時特定関数として、入力された最大丸め日時から入力された丸め日時を減算した値を出力する関数を適用することができる。
集計装置21は、例えば図12に示すコンピュータ80で実現することができる。コンピュータ80は、Central Processing Unit(CPU)81、一時記憶領域としてのメモリ82、及び不揮発性の記憶部83を備える。また、コンピュータ80は、表示装置及び入力装置等の入出力装置84を備える。また、コンピュータ80は、記録媒体88に対するデータの読み込みと書き込みとを制御するRead/Write(R/W)部85、及びネットワークに接続されるネットワークI/F86を備える。CPU81、メモリ82、記憶部83、入出力装置84、R/W部85、及びネットワークI/F86は、バス87を介して互いに接続される。
記憶部83は、Hard Disk Drive(HDD)、Solid State Drive(SSD)、フラッシュメモリ等によって実現することができる。記憶媒体としての記憶部83には、コンピュータ80を集計装置21として機能させるための集計処理プログラム90が記憶される。集計処理プログラム90は、処理プロセス91及び集計プロセス92を有する。また、記憶部83は、内部DB40及び集計定義46が記憶される情報記憶領域93を有する。また、メモリ82は、内部集計テーブル48、集計値リスト50、メタデータ52、及びハッシュテーブル54が記憶される情報記憶領域94を有する。なお、内部集計テーブル48、集計値リスト50、メタデータ52、及びハッシュテーブル54は、内部DB40に記憶されてもよいし、記憶部83の内部DB40とは異なる記憶領域に記憶されてもよい。
CPU81は、集計処理プログラム90を記憶部83から読み出してメモリ82に展開し、集計処理プログラム90が有するプロセスを実行する。CPU81は、処理プロセス91を実行することで、図3に示す処理部30として動作する。CPU81は、集計プロセス92を実行することで、図3に示す集計部32として動作する。これにより、集計処理プログラム90を実行したコンピュータ80が、集計装置21として機能することになる。
また、集計処理プログラム90により実現される機能は、例えば半導体集積回路、より詳しくはApplication Specific Integrated Circuit(ASIC)等で実現することも可能である。
次に、本実施形態に係る集計装置21の作用を説明する。集計装置21が集計処理プログラム90を実行することで、図13に示す集計処理を実行する。図13に示す集計処理は、例えばユーザによって実行開始の指示が入力された場合、又は1日1回等の定期的なタイミング等に、CPU81により実行が開始される。
図13に示す集計処理のステップ100で、処理部30は、記憶部83に記憶された集計定義46の集計対象テーブルに、末尾が「_inner」であるテーブルが存在するか否かを判定する。これにより、処理部30は、集計対象とするテーブルに内部テーブル42が存在するか否かを判定する。この判定が肯定判定となった場合は、処理はステップ102に移行し、否定判定となった場合は、処理はステップ110に移行する。
ステップ102で、処理部30は、前述したように、集計定義46に従って内部テーブル42に記憶されたデータを集計し、内部集計テーブル48を生成する。次のステップ104で、処理部30は、ステップ102で生成された内部集計テーブル48のdim1及びdim2の組み合わせ毎に集計値リスト50を生成する。そして、処理部30は、各集計値リスト50に、内部集計テーブル48の対応する集計値及び母数を、内部集計テーブル48の丸め日時の昇順に記憶する。
次のステップ106で、処理部30は、ステップ102で生成された内部集計テーブル48の丸め日時の最小値及び最大値を記憶したメタデータ52を生成する。次のステップ108で、処理部30は、前述したように、dim1及びdim2の組み合わせ毎に、ハッシュ関数を用いて得られたハッシュ値を、テーブルの各要素を指し示す記憶領域のアドレスとしたハッシュテーブル54を生成する。そして、処理部30は、ハッシュテーブル54の各要素に、各要素に対応するdim1及びdim2の組み合わせの集計値リスト50の記憶領域の先頭アドレスを記憶する。
以下に示すステップ110からステップ138までの処理は、集計定義46に含まれる各外部テーブル44を処理対象として実行される。なお、集計装置21がステップ110からステップ138までの処理を繰り返し実行する際は、それまでに処理対象としていない外部テーブル44を処理対象とする。また、以下に示すステップ110からステップ136までの処理は、処理対象とする外部テーブル44に記憶された各レコードを1件ずつ順番に先頭から読み出して繰り返し実行される。
ステップ110で、集計部32は、外部テーブル44からレコードを1件読み出す。次のステップ112で、集計部32は、集計定義46に従って、ステップ110で読み出されたレコードの店舗及び商品をハッシュ関数に入力して、ハッシュ関数から出力されたハッシュ値を取得する。
次のステップ114で、集計部32は、ステップ112で取得されたハッシュ値をハッシュインデックスとして用いて、ステップ108で生成されたハッシュテーブル54の要素にアクセス可能か否かを判定する。この判定が肯定判定となった場合は、処理はステップ116に移行し、否定判定となった場合は、処理はステップ118に移行する。
ステップ116で、集計部32は、ステップ112で取得されたハッシュ値をハッシュインデックスとして用いて、ステップ108で生成されたハッシュテーブル54の要素を取得する。これにより、集計部32は、ステップ110で読み出されたレコードの店舗及び商品の組み合わせに対応する集計値リスト50の記憶領域の先頭アドレスを取得する。
一方、ステップ118で、処理部30は、ステップ110で読み出されたレコードの売上を集計値とし、母数を1としたレコードを記憶した集計値リスト50を生成する。なお、本ステップ118の初回実行時にメタデータ52が存在しない場合、処理部30は、最小丸め日時及び最大丸め日時をステップ110で読み出されたレコードの日時を丸めて得られた丸め日時としたメタデータ52を生成する。次のステップ120で、処理部30は、ステップ112で取得されたハッシュ値でアクセス可能なハッシュテーブル54の要素に、ステップ118で生成された集計値リスト50の記憶領域の先頭アドレスを記憶することで、ハッシュテーブル54を更新する。
ステップ122で、集計部32は、ステップ110で読み出されたレコードの日時を、集計定義46の日時集計単位で丸めることで丸め日時を算出する。そして、集計部32は、算出した丸め日時が、メタデータ52の最小丸め日時より小さいか否かを判定する。この判定が肯定判定となった場合は、処理はステップ124に移行し、否定判定となった場合は、処理はステップ128に移行する。
ステップ124で、集計部32は、各集計値リスト50を拡張する。具体的には、集計部32は、集計値リスト50の先頭から、最小丸め日時と丸め日時との差の数だけ、集計値及び母数を各々0としたレコードを挿入する。図14に示すように、例えば集計値リスト50に2015年5月〜2015年12月の集計値及び母数が昇順に記憶され、ステップ122で算出された丸め日時が「201504」の場合、集計部32は以下の処理で集計値リスト50を拡張する。すなわち、この場合、処理部30は、集計値リスト50の先頭に、集計値及び母数を各々0としたレコードを1つ挿入する。
次のステップ126で、集計部32は、メタデータ52の最小丸め日時を、ステップ122で算出された丸め日時に更新する。
一方、ステップ128で、集計部32は、ステップ122で算出された丸め日時が、メタデータ52の最大丸め日時より大きいか否かを判定する。この判定が肯定判定となった場合は、処理はステップ130に移行し、否定判定となった場合は、処理はステップ134に移行する。
ステップ130で、集計部32は、各集計値リスト50を拡張する。具体的には、集計部32は、集計値リスト50の末尾に、丸め日時と最大丸め日時との差の数だけ、集計値及び母数を各々0としたレコードを挿入する。図15に示すように、例えば集計値リスト50に2015年5月〜2015年12月の集計値及び母数が昇順に記憶され、ステップ122で算出された丸め日時が「201602」の場合、集計部32は以下の処理で集計値リスト50を拡張する。すなわち、この場合、処理部30は、集計値リスト50の末尾に、集計値及び母数を各々0としたレコードを2つ挿入する。
次のステップ132で、集計部32は、メタデータ52の最大丸め日時を、ステップ122で算出された丸め日時に更新する。
ステップ134で、集計部32は、ステップ122で算出された丸め日時、及びメタデータ52の最小丸め日時を、前述した日時特定関数に入力して、日時特定関数の出力値を取得する。次のステップ136で、集計部32は、ステップ112で取得されたハッシュ値をハッシュインデックスとして用いて、集計値の更新対象とする集計値リスト50を特定する。また、集計部32は、特定した集計値リスト50の集計値の更新対象とする要素を、日時特定関数の出力値を用いて特定する。そして、集計部32は、特定した要素に記憶された集計値に、ステップ110で読み出されたレコードの売上を加算し、母数に1を加算する。
ステップ138で、集計部32は、上記ステップ110からステップ136までの処理を、処理対象とする外部テーブル44の全レコードについて実行したか否かを判定する。この判定が否定判定となった場合は、処理はステップ110に戻り、肯定判定となった場合は、処理はステップ140に移行する。
ステップ140で、集計部32は、上記ステップ110からステップ138までの処理を、集計定義46に含まれる全ての外部テーブル44について実行したか否かを判定する。この判定が否定判定となった場合は、処理はステップ110に戻り、肯定判定となった場合は、本集計処理は終了する。
上記の集計処理で得られた集計値リスト50は、例えば時系列分析等のデータ分析に用いられる。
以上説明したように、本実施形態によれば、集計単位とする日時項目(例えば、日時)以外の特定の項目(例えば、店舗及び商品)と、特定の項目毎に所定の粒度(例えば、月単位)の日時項目単位で集計値が記憶される集計値リスト50とを1対1で対応付ける。そして、外部テーブル44に記憶されたデータを集計する際に、特定の項目をインデックスとして用いて集計値リスト50の集計値を更新する。これにより、外部テーブル44に記憶されたデータを高速に集計することができる。
また、本実施形態によれば、内部テーブル42に記憶されたデータに対し、特定の項目毎に所定の粒度の日時項目単位で集計値を算出した後に、特定の項目と集計値リスト50とを1対1で対応付ける。従って、DBインデックスを用いて比較的高速に集計可能な内部テーブル42を用いて集計値リスト50を生成した後に、外部テーブル44に記憶されたデータを集計することとなる。これにより、外部テーブル44に記憶されたデータを内部テーブル42に記憶されたデータよりも先に集計する場合に比較して、外部テーブル44に記憶されたデータを高速に集計することができる。
また、本実施形態によれば、特定の項目を入力とした場合に、特定の項目毎に異なる値を出力するハッシュ関数を用いて、特定の項目と集計値リスト50とを1対1で対応付ける。これにより、集計値リスト50を特定する処理の計算量を低減することができる結果、外部テーブル44に記憶されたデータを高速に集計することができる。
また、本実施形態によれば、集計値リスト50は、日時項目の順番(例えば、昇順)で集計値が記憶される。そして、本実施形態によれば、特定の項目をインデックスとして用いて集計値リスト50の集計値を更新する際に、集計値リスト50における所定の粒度毎の日時項目を特定する日時特定関数を用いて、集計値を更新する。これにより、集計値リスト50の集計値の更新対象とする要素を特定する処理の計算量を低減することができる結果、外部テーブル44に記憶されたデータを高速に集計することができる。
なお、上記実施形態では、集計対象とするテーブルとして、内部テーブル42及び外部テーブル44を適用した場合について説明したが、これに限定されない。例えば、集計対象とするテーブルとして、外部テーブル44のみを適用する形態としてもよい。
また、上記実施形態では、ハッシュ関数及びハッシュテーブル54を用いて、店舗及び商品の組み合わせに対応する集計値リスト50を特定する場合について説明したが、これに限定されない。例えば、店舗及び商品と対応する集計値リスト50の記憶領域とを1対1で対応付けるリストファイル等を用いて、店舗及び商品の組み合わせに対応する集計値リスト50を特定する形態としてもよい。
また、上記実施形態では、集計単位とする項目の組み合わせに対して1つのハッシュテーブル54を生成する場合について説明したが、これに限定されない。例えば、集計単位とする項目毎に個別にハッシュテーブル54を生成する形態としてもよい。この形態例におけるハッシュテーブル54の一例を図16に示す。
図16の例では、1からN−1(ここではN=2)番目までのハッシュテーブル54の要素には、次のハッシュテーブル54の記憶領域の先頭アドレスが記憶される。また、N番目のハッシュテーブル54には、集計単位とする項目の組み合わせに対応する集計値リスト50の記憶領域の先頭アドレスが記憶される。
この場合、例えば、集計部32は、dim1を入力とするハッシュ関数の出力値を用いて、dim1に対応するハッシュテーブル54Aの要素に記憶されたアドレスを取得する。また、集計部32は、dim2を入力とするハッシュ関数の出力値を用いて、取得したアドレスで特定されるハッシュテーブル54Bの要素に記憶されたアドレスを取得する。そして、集計部32は、取得したアドレスを用いて、dim1及びdim2の組み合わせに対応する集計値リスト50を特定する。この形態例では、上記実施形態と比較して、集計値リスト50の特定処理の計算量が増えるものの、集計単位とする項目毎にハッシュテーブル54の作成及び自動拡張等が制御できるため、メモリリソースを効率的に利用することができる。
また、上記実施の形態では、集計単位とする日時項目以外の特定の項目として、2つの項目(上記実施の形態では店舗及び商品)の組み合わせを適用した場合について説明したが、これに限定されない。集計単位とする日時項目以外の特定の項目として、1つの項目を適用する形態としてもよいし、3つ以上の項目の組み合わせを適用する形態としてもよい。
また、上記実施形態では、集計処理プログラム90が記憶部83に予め記憶(インストール)されている態様を説明したが、これに限定されない。集計処理プログラム90は、CD−ROM、DVD−ROM、USBメモリ、メモリカード等の記録媒体に記録された形態で提供することも可能である。
20 集計システム
21 集計装置
22A、22B 外部装置
24A、24B 外部DB
26A テーブル
26B テーブル
30 処理部
32 集計部
40 内部DB
42 内部テーブル
44A、44B 外部テーブル
46 集計定義
48 内部集計テーブル
50 集計値リスト
52 メタデータ
54 ハッシュテーブル
80 コンピュータ
81 CPU
82 メモリ
83 記憶部
88 記録媒体
90 集計処理プログラム

Claims (6)

  1. コンピュータが管理するデータ以外のデータに関する外部テーブルを少なくとも一つ含む集計対象テーブルのデータを集計するプログラムであって、
    日時項目を含む複数の項目を有する前記外部テーブルの集計単位とする前記日時項目以外の特定の項目と、前記特定の項目毎に所定の粒度の日時項目単位で集計値が記憶される集計値リストとを、前記特定の項目をインデックスとして用いて該特定の項目の集計値リストを特定可能に1対1で対応付ける処理を行い、
    前記外部テーブルに記憶されたデータを集計する際に、前記特定の項目をインデックスとして用いて特定される前記集計値リストの前記集計値を更新する、
    処理を前記コンピュータに実行させる集計プログラム。
  2. 前記集計対象テーブルは前記日時項目を含む複数の項目を有し、前記コンピュータが管理するデータに関する内部テーブルを含み、
    前記内部テーブルに記憶されたデータに対し、前記特定の項目毎に所定の粒度の日時項目単位で集計値を算出した後に、前記特定の項目と前記集計値リストとを、前記特定の項目をインデックスとして用いて該特定の項目の集計値リストを特定可能に1対1で対応付ける処理を行う、
    請求項1記載の集計プログラム。
  3. 前記特定の項目を入力とした場合に、前記特定の項目毎に異なる値を出力するハッシュ関数から出力されたハッシュ値を前記インデックスとして用いて該特定の項目の集計値リストを特定可能に、前記特定の項目と前記集計値リストとを1対1で対応付ける処理を行う、
    請求項1又は請求項2記載の集計プログラム。
  4. 前記集計値リストは、前記日時項目の順番で前記集計値が記憶され、
    前記特定の項目をインデックスとして用いて特定される前記集計値リストの前記集計値を更新する際に、前記集計値リストにおける前記所定の粒度毎の前記日時項目を特定する関数を用いて、更新対象とする前記集計値を特定する、
    請求項1から請求項3の何れか1項記載の集計プログラム。
  5. 自装置が管理するデータ以外のデータに関する外部テーブルを少なくとも一つ含む集計対象テーブルのデータを集計する集計装置であって、
    日時項目を含む複数の項目を有する前記外部テーブルの集計単位とする前記日時項目以外の特定の項目と、前記特定の項目毎に所定の粒度の日時項目単位で集計値が記憶される集計値リストとを、前記特定の項目をインデックスとして用いて該特定の項目の集計値リストを特定可能に1対1で対応付ける処理を行う処理部と、
    前記外部テーブルに記憶されたデータを集計する際に、前記特定の項目をインデックスとして用いて特定される前記集計値リストの前記集計値を更新する集計部と、
    を含む集計装置。
  6. コンピュータが管理するデータ以外のデータに関する外部テーブルを少なくとも一つ含む集計対象テーブルのデータを集計する集計方法であって、
    日時項目を含む複数の項目を有する前記外部テーブルの集計単位とする前記日時項目以外の特定の項目と、前記特定の項目毎に所定の粒度の日時項目単位で集計値が記憶される集計値リストとを、前記特定の項目をインデックスとして用いて該特定の項目の集計値リストを特定可能に1対1で対応付ける処理を行い、
    前記外部テーブルに記憶されたデータを集計する際に、前記特定の項目をインデックスとして用いて特定される前記集計値リストの前記集計値を更新する、
    処理を前記コンピュータに実行させる集計方法。
JP2018544603A 2016-10-11 2016-10-11 集計プログラム、集計装置、及び集計方法 Active JP6702425B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/080138 WO2018069973A1 (ja) 2016-10-11 2016-10-11 集計プログラム、集計装置、及び集計方法

Publications (2)

Publication Number Publication Date
JPWO2018069973A1 JPWO2018069973A1 (ja) 2019-06-24
JP6702425B2 true JP6702425B2 (ja) 2020-06-03

Family

ID=61905320

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018544603A Active JP6702425B2 (ja) 2016-10-11 2016-10-11 集計プログラム、集計装置、及び集計方法

Country Status (3)

Country Link
US (1) US11126604B2 (ja)
JP (1) JP6702425B2 (ja)
WO (1) WO2018069973A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111538747B (zh) * 2020-05-27 2023-04-14 支付宝(杭州)信息技术有限公司 数据查询、辅助数据查询的方法、装置和设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2957417B2 (ja) * 1994-07-28 1999-10-04 北海道日本電気ソフトウェア株式会社 分散データベースシステム集計処理方式
JP2001043279A (ja) 1999-05-24 2001-02-16 Ichi Rei Yon Kk 薬局システム
JP2002259384A (ja) * 2001-03-02 2002-09-13 Mitsubishi Electric Corp 仮想レコード使用データベース統合装置
JP2006195680A (ja) 2005-01-12 2006-07-27 Active Management Kk 自己啓発支援方法、自己啓発支援システム、自己啓発支援プログラムおよびそのプログラムを記憶した記憶媒体
US20060288045A1 (en) * 2005-06-16 2006-12-21 Digital Fuel Technologies, Inc. Method for aggregate operations on streaming data
AU2009345651B2 (en) 2009-05-08 2016-05-12 Arbitron Mobile Oy System and method for behavioural and contextual data analytics
JP5552023B2 (ja) 2010-10-27 2014-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション クラスタリング・システム、方法及びプログラム
JP6032680B2 (ja) * 2013-10-31 2016-11-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 受信したデータごとに集計処理を行うシステム、方法およびプログラム

Also Published As

Publication number Publication date
JPWO2018069973A1 (ja) 2019-06-24
US11126604B2 (en) 2021-09-21
WO2018069973A1 (ja) 2018-04-19
US20190205292A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
US10747762B2 (en) Automatic generation of sub-queries
US10216773B2 (en) Apparatus and method for tuning relational database
US20130254240A1 (en) Method of processing database, database processing apparatus, computer program product
EP3217296A1 (en) Data query method and apparatus
US20240152498A1 (en) Data storage using vectors of vectors
JP2008225575A (ja) 計算機負荷見積システム、計算機負荷見積方法
CN105989015B (zh) 一种数据库扩容方法和装置以及访问数据库的方法和装置
US20150019528A1 (en) Prioritization of data from in-memory databases
US9779121B2 (en) Transparent access to multi-temperature data
US10552399B2 (en) Predicting index fragmentation caused by database statements
CN108073595B (zh) 一种在olap数据库实现数据更新和快照的方法及装置
AU2018345147B2 (en) Database processing device, group map file production method, and recording medium
US20180173712A1 (en) Real time query planner statistics with time based changing
JP6702425B2 (ja) 集計プログラム、集計装置、及び集計方法
JP6438295B2 (ja) ハイパーグラフソルバーのためのグラフ入力の自動編集
CN107562533B (zh) 一种数据加载处理方法及装置
JP2018045441A (ja) データ統合方法、データ統合装置、データ処理システム及びコンピュータプログラム
US9092472B1 (en) Data merge based on logical segregation
CN110019783B (zh) 属性词聚类方法及装置
WO2005043409A1 (ja) 表形式データの結合方法、結合装置およびプログラム
CN112817969B (zh) 数据查询方法、系统、电子设备和存储介质
JP7311020B2 (ja) 制御方法、情報処理装置及び制御プログラム
US20200117735A1 (en) Method for identifying complex textual patterns containing keywords within data records
JP2016095639A (ja) データベース装置、データ管理方法、及びプログラム
JP2015069551A (ja) 顧客分析プログラム、方法及び装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190221

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190221

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: 20200407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200420

R150 Certificate of patent or registration of utility model

Ref document number: 6702425

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150