(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-14
(45)【発行日】2023-12-22
(54)【発明の名称】データ統合方法およびデータ統合システム
(51)【国際特許分類】
G06F 16/90 20190101AFI20231215BHJP
【FI】
G06F16/90
(21)【出願番号】P 2020189622
(22)【出願日】2020-11-13
【審査請求日】2023-02-10
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】高田 実佳
【審査官】早川 学
(56)【参考文献】
【文献】特開2014-096177(JP,A)
【文献】特開2005-063332(JP,A)
【文献】米国特許出願公開第2006/0136452(US,A1)
【文献】米国特許出願公開第2020/0125530(US,A1)
【文献】国際公開第2020/139079(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
データレイクに格納されている第1のデータおよび第2のデータの型または質の不整合を整合化するデータ統合システムが実行するデータ統合方法であって、
前記第1のデータおよび前記第2のデータの特徴量を算出する特徴量算出ステップと、
前記特徴量に基づいて前記第1のデータおよび前記第2のデータの前記不整合を検知する不整合検知ステップと、
ユーザによる前記第1のデータおよび前記第2のデータの取得の要求に応じて、統合ビューを用いて、前記不整合を整合化するデータ調整ステップと
を有することを特徴とするデータ統合方法。
【請求項2】
前記特徴量算出ステップおよび前記不整合検知ステップを予め実行して前記第1のデータおよび前記第2のデータの前記不整合を検知しておき、
ユーザによって前記第1のデータおよび前記第2のデータの取得が要求された際に、前記データ調整ステップを実行する
ことを特徴とする請求項1に記載のデータ統合方法。
【請求項3】
前記特徴量算出ステップおよび前記不整合検知ステップを実行して前記第1のデータおよび前記第2のデータの前記不整合を検知した際に、前記データ調整ステップを実行する
ことを特徴とする請求項1に記載のデータ統合方法。
【請求項4】
前記第2のデータとしての対象データをデータモデルのテーブル名および項目名毎に分割する分割ステップと、
前記対象データのうち、テーブル名および項目名が同一であるデータ、および、テーブル名および項目名の少なくとも一つが異なるがコンテンツが同一であるデータ、のそれぞれを同一グループにグループ化するグループ化ステップと、
前記グループ化ステップによって同一グループにグループ化されたデータを、共通するデータスキーマへ変換するスキーマ変換ステップと
をさらに有することを特徴とする請求項1に記載のデータ統合方法。
【請求項5】
前記不整合検知ステップでは、
前記第1のデータとしての新規データと同一のテーブル名および項目名を有する前記グループ化ステップによってグループ化された既存グループが存在し、かつ、前記既存グループに属するデータの特徴量の中心値を前記既存グループの特徴量とした場合の前記新規データと前記既存グループの特徴量の差分が所定条件を充足する場合に、前記新規データが前記既存グループに属するとして前記不整合を検知せず、
前記新規データと同一のテーブル名および項目名を有する前記既存グループが存在しない、または、前記新規データと前記既存グループの前記特徴量の差分が所定条件を充足しない場合に、前記新規データが前記既存グループに属さず新規グループに属するとして前記不整合を検知する
ことを特徴とする請求項4に記載のデータ統合方法。
【請求項6】
前記グループ化ステップによってグループ化されたグループ毎に統合ビューを用いて他のグループへデータの型または質を変換する際の変換コストを計算する変換コスト計算ステップをさらに有し、
前記データ調整ステップにおいて、前記変換コスト計算ステップによって計算された変換コストが最小のグループのデータの型または質を変換コストが最大のグループのデータの型または質へ変換する統合ビューを用いて前記不整合を整合化する
ことを特徴とする請求項5に記載のデータ統合方法。
【請求項7】
前記データ調整ステップにおいて、既存の前記統合ビューを用いて前記不整合を整合化する
ことを特徴とする請求項6に記載のデータ統合方法。
【請求項8】
前記データ調整ステップにおいて、ユーザが要求するデータの型または質を充足するように前記不整合を整合化する
ことを特徴とする請求項1に記載のデータ統合方法。
【請求項9】
データレイクに格納されている第1のデータおよび第2のデータの型または質の不整合を整合化するデータ統合システムであって、
前記第1のデータおよび前記第2のデータの特徴量を算出し、前記特徴量に基づいて前記第1のデータおよび前記第2のデータの前記不整合を検知する不整合検知部と、
ユーザによる前記第1のデータおよび前記第2のデータの取得の要求に応じて、統合ビューを用いて、前記不整合を整合化するデータ調整部と
を有することを特徴とするデータ統合システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ統合方法およびデータ統合システムに関する。
【背景技術】
【0002】
CSV(Comma Separated Value)などの構造化されたデータやテキストファイル等の非構造データなど、様々な形態のデータがデータレイクに蓄積され管理される。そうしたデータの中には、データのプロトコルの変更、センサの変更、ベンダの変更、などの要因によって同じデータの識別子がついたデータでも違うデータ型やデータの質を取ることがある。このように、時間的な前後や同一データが変化することで起こるデータの不整合や、空間的な位置の異なる場所において同じ識別子がついた複数のデータが発生するといった不整合なデータ、が生じることがある。
【0003】
こうしたデータを利用する業務アプリケーションでは、管理されているデータを抽出し、クレンジングやデータ変換などによってデータの型や質が一定あるいは一定範囲となることを想定してデータ準備処理を構築し、業務アプリケーションが正常稼働できるようにシステムが構築される(例えば特許文献1および2参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】国際公開第2020/079749号公報
【文献】特開2020-052943号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、業務アプリケーションが想定しているデータと実際のデータとの間に型や質の不整合が起こると、業務アプリケーションがエラーや機能不十分に陥るため、迅速にデータの不整合を検知し、データ準備処理を修正し、検知したデータの不整合に対応できるようにすることが行われている。
【0006】
しかしながら上述の従来技術では、データを整合する為のルールを自動的に検知することができるものの、検知したルールに基づき、エンジニアが業務アプリケーションを修正することになる。データの不整合が検知される度にデータ準備処理を業務アプリケーションに施すことは、困難を伴う。すなわち、蓄積データが多数で多様なデータになればなるほど、データの不整合は一般に増加するため、アプリケーション毎に想定するデータ型や質に合わせて調整することはエンジニアリング工数を増加させ、業務アプリケーションを利用する業務への悪影響が深刻化する。
【0007】
本発明は、上記課題に鑑みてなされたものであり、データの不整合を自動的に検知し、ユーザの求めるデータの型や質に基づいてデータの型や質を自動的に調整できるようにすることを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本発明のデータ統合方法では、データレイクに格納されている第1のデータおよび第2のデータの型または質の不整合を整合化するデータ統合システムが実行するデータ統合方法であって、前記第1のデータおよび前記第2のデータの特徴量を算出する特徴量算出ステップと、前記特徴量に基づいて前記第1のデータおよび前記第2のデータの前記不整合を検知する不整合検知ステップと、ユーザによる前記第1のデータおよび前記第2のデータの取得の要求に応じて、統合ビューを用いて、前記不整合を整合化するデータ調整ステップとを有することを特徴とする。
【発明の効果】
【0009】
本発明によれば、データの不整合を自動的に検知し、ユーザの求めるデータの型や質に基づいてデータの型や質を自動的に調整できる。
【図面の簡単な説明】
【0010】
【
図1】実施例1のデータ統合システムを構成するコンピュータのハードウェア構成の一例を示す図である。
【
図2】実施例1のデータ統合システムの機能構成の一例を示す図である。
【
図3】実施例1のクラスタテーブルの一例を示す図である。
【
図4】実施例1のマップテーブルの一例を示す図である。
【
図5A】実施例1の特徴量定義(連続値)の一例を示す図である。
【
図5B】実施例1の特徴量定義(離散値)の一例を示す図である。
【
図6】実施例1の不整合検知定義の一例を示す図である。
【
図7】実施例1のデータ不整合検知処理を示すフローチャートである。
【
図8】実施例1のスキーママッピング検知の詳細処理を示すフローチャートである。
【
図9】実施例1の不整合検知の詳細処理を示すフローチャートである。
【
図10】実施例1のマップ追加・更新の詳細処理を示すフローチャートである。
【
図11】実施例1のデータ調整処理を示すフローチャートである。
【
図12】実施例1のクエリ解釈の詳細処理を示すフローチャートである。
【
図13A】実施例1のSQLのクエリ(連続型データ抽出)の一例を示す図である。
【
図13B】実施例1のSQLのクエリ(離散型データ抽出)の一例を示す図である。
【
図14】実施例1のユーザ要求を入力するGUIの一例を示す図である。
【
図15】実施例1のデータ調整の詳細処理を示すフローチャートである。
【
図16】実施例2のデータ不整合検知処理を示すフローチャートである。
【
図17】実施例2のユーザによるデータ統合システムへの要求入力処理を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組合せの全てが発明の解決手段に必須であるとは限らない。また発明の構成に必須だが周知である構成については、図示および説明を省略する場合がある。また各図に示す各要素の数は一例であって、図示に限られるものではない。明細書全体を通して使用される用語は、例として提供されるものであり、限定を意図しない。
【0012】
以下では、病院の医療データに関する実施例を開示するが、これに限らず、本発明は、政府機関、産業、金融など様々な分野における多様で大量なデータを扱う分野へ拡張することができる。
【実施例1】
【0013】
(データ統合システムSを構成するコンピュータ1101のハードウェア構成)
図1は、実施例1のデータ統合システムSを構成するコンピュータ1101のハードウェア構成の一例を示す図である。コンピュータ1101は、サーバやストレージなどである。プロセッサ1102、メモリ1103、通信I/F1104、入力インターフェース1105、出力インターフェース1106、および記憶装置1107など、データ管理を行うための要素を有する。
【0014】
コンピュータ1101が有する各要素は、バス1108を通して互いに接続される。コンピュータ1101は、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)などであるネットワーク1109を通して、外部の1または複数のクライアント装置1110に接続されて、双方向または一方向の方式でデータの送受信を行う。
【0015】
クライアント装置1110は、GUIなどを介して、ユーザの入力を受付け、コンピュータ1101へ送信する。また、クライアント装置1110は、ユーザの入力に応じた処理結果をコンピュータ1101から受信し、GUIなどを介してユーザに対して表示する。プロセッサ1102は、ASICやPLDといったハードウェアプロセッサ、CPUといったソフトウェアプロセッサ、または、ハードウェアプロセッサおよびソフトウェアプロセッサの組合せである。
【0016】
(データ統合システムSの機能構成)
図2は、実施例1のデータ統合システムSの機能構成の一例を示す図である。データ統合システムSは、サーバ1000およびストレージ1010を含んで構成される。サーバ1000およびストレージ1010は、連携可能に接続されている。
【0017】
サーバ1000は、スキーママッピング検知部1001、不整合検知部1002、マップ追加・更新部1003、クエリ解釈部1004、データ調整部1005、およびUI部1006を有し、変換コスト1007を保存している。
【0018】
ストレージ1010は、クラスタテーブル1011、マップテーブル1012、特徴量定義1013、不整合検知定義1014、オリジナルデータ1015を格納する。オリジナルデータ1015は、不整合検知およびデータ調整の対象となるデータであり、
図2では説明の簡単のためストレージ1010内のデータレイクに格納されているとして説明するが、ストレージ1010以外の装置内のデータレイクに格納されていてもよい。
【0019】
なお、スキーママッピング検知部1001、不整合検知部1002、マップ追加・更新部1003、クエリ解釈部1004、およびデータ調整部1005といったデータ整合化に係る機能部は、
図2では説明の便宜上サーバ1000内に配置している。しかしこれに限らず、オリジナルデータ1015を格納するデータレイク内、データレイク外、あるいはSQLを発行するDBMS(Data Base Management System)内に配置されるなど様々な形態がある。
【0020】
(クラスタテーブル1011)
図3は、実施例1のクラスタテーブル1011の一例を示す図である。クラスタテーブル1011は、テーブル名10111、カラム名10112、データ型10113、データフォーマット10114、レコード識別番号10115、クラスタ番号10116、クラスタ中心値10117のカラムを有する。
【0021】
カラム名10112は、テーブル名10111で特定されるテーブルにおいてタグまたはカラムとして与えられた項目の名称である。データ型10113はカラム名10112のデータの種類であり、データフォーマット10114はデータ型10113の形式情報である。例えばデータ型10113がTimestamp(0)(日時型)である場合に、データフォーマット10114が“yyyy/MM/dd hh:mm:ss”といったように、該当クラスタにおけるデータの表現形式を定める。
【0022】
レコード識別番号10115は、テーブル名10111で与えられたテーブル内のレコードのうちクラスタを構成するレコードの識別番号である。クラスタ番号10116は、レコード識別番号10115で識別されるレコードで構成されるクラスタの識別番号である。クラスタ中心値10117は、クラスタ番号10116で識別されるクラスタの特徴ベクトル空間における中心値である。クラスタはグループの一例であり、グラスタリングはグループ化の一例である。
【0023】
(マップテーブル1012)
図4は、実施例1のマップテーブル1012の一例を示す図である。マップテーブル1012は、クラスタ番号(1)10121、クラスタ番号(2)10122、距離(Dis)10123、特徴量1差分(diff(1))10124、および特徴量2差分(diff(2))10125のカラムを有する。
【0024】
距離10123は、クラスタ番号(1)10121およびクラスタ番号(2)10122で特定される2つのクラスタ間の距離である。特徴量1差分(diff(1))10124は、1つ目の特徴量に関し、クラスタ番号(1)10121およびクラスタ番号(2)10122で特定される2つのクラスタ間の差分である。特徴量2差分(diff(2))10125は、2つ目の特徴量に関し、クラスタ番号(1)10121およびクラスタ番号(2)10122で特定される2つのクラスタ間の差分である。
【0025】
(特徴量定義1013)
図5Aは、実施例1の特徴量定義1013(連続値)の一例を示す図である。特徴量定義1013(連続値)は、例えばPatient_ID10130が“1”のデータに関して、連続値のデータ型10131がTimestamp(0)(日時型)であり、特徴量としてのデータフォーマット10132が“yyyy/MM/dd hh:mm:ss”であることを示す。
【0026】
図5Bは、実施例1の特徴量定義1013(離散値)の一例を示す図である。特徴量定義1013(離散値)は、例えばPatient_ID10130が“1”のデータに関して、離散値のデータ型10133がTextであり、特徴量としてのデータフォーマット10134が{‘H’,‘L’,‘N’}”であることを示す。
【0027】
(不整合検知定義1014)
図6は、実施例1の不整合検知定義1014の一例を示す図である。不整合検知定義1014は、不整合検知の際に用いられる閾値である。
図6の例では閾値=1であるが、適宜変更可能である。
【0028】
(データ不整合検知処理)
図7は、実施例1のデータ不整合検知処理を示すフローチャートである。データ不整合検知処理では、データの型または質の不整合を検知する。データ不整合検知処理は、定期的、あるいはエンジニアの指示タイミングで実行される。
【0029】
先ずS11では、スキーママッピング検知部1001は、スキーママッピング検知を実行する。スキーママッピング検知S11の詳細処理は、
図8を参照して後述する。
【0030】
次にS12では、不整合検知部1002は、不整合検知を実行する。不整合検知では、不整合検知部1002は、特徴量空間における新規データが属するクラスタを判別し、判別したクラスタ情報をクラスタテーブル1011に格納する。不整合検知部1002は、新規データが属するクラスタが既存クラスタではなく新規クラスタである場合には、不整合検知フラグを出力する。不整合検知S12の詳細処理は、
図9を参照して後述する。
【0031】
次にS13では、不整合検知部1002は、S12で不整合検知フラグを出力した場合にはS14へ処理を移し、不整合検知フラグを出力しなかった場合にはデータ不整合検知処理を終了する。
【0032】
S14では、マップ追加・更新部1003は、S12で検知された新規クラスタと既存クラスタについて、マップテーブル1012に新規レコード追加するか、またはマップテーブル1012のレコードを更新する。マップ追加・更新S14の詳細処理は、
図10を参照して後述する。
【0033】
(スキーママッピング検知S11の詳細処理)
図8は、実施例1のスキーママッピング検知S11の詳細処理を示すフローチャートである。先ずS111では、スキーママッピング検知部1001は、データレイク中のオリジナルデータ1015から入力対象データを受信する。次にS112では、スキーママッピング検知部1001は、S111で受信した入力対象データを、データモデルのテーブル名およびカラム(項目)名毎に分割する。データモデルには、RDB(Relational Database)形式やCSV形式等の構造データファイル形式などがある。またカラム名が存在しないデータに対し、データロード時に付けされたタグなどもカラム名相当とする。
【0034】
次にS113では、スキーママッピング検知部1001は、S112で分割したデータのうち、テーブル名およびカラム名の少なくとも一方が異なるが、データのコンテンツが同値とみなせるデータの組合せが存在するかを判定する。データのコンテンツとは、テーブル名や項目名といったデータの属性以外のデータの実体である。スキーママッピング検知部1001は、そのようなデータの組合せが存在する場合(S113YES)にはS114へ処理を移し、存在しない場合(S113NO)にはS115へ処理を移す。
【0035】
S114では、スキーママッピング検知部1001は、テーブル名およびカラム名の少なくとも一方が異なってもコンテンツが同一であるデータを同一のテーブル名およびカラム名として同一グループにグルーピングする。この際、同一グループにグルーピングしたデータを、共通するデータスキーマに変換してもよい。一方S115では、組(テーブル名およびカラム名)が同じものを同一グループにグルーピングする。最後にS116では、スキーママッピング検知部1001は、S114またはS115で同一グループにグルーピング(クラスタリング)されたデータをグループ毎に出力する。スキーママッピング検知部1001は、グループ毎のデータを、クラスタテーブル1011に格納する。
【0036】
(不整合検知S12の詳細処理)
図9は、実施例の不整合検知S12の詳細処理を示すフローチャートである。先ずS121では、不整合検知部1002は、オリジナルデータ1015として新規にロードされた新規データを受信する。次にS122では、不整合検知部1002は、特徴量定義1013に基づいて、S121で受信した新規データから特徴量ベクトルを算出する。
【0037】
次にS123では、不整合検知部1002は、S121で受信した新規データの持つテーブル名およびカラム名に対応する既存クラスタがクラスタテーブル1011内に存在するか否かを判定する。そして、不整合検知部1002は、S122で生成した特徴量ベクトルをもとに、新規データが既存クラスタに属するか否かを判定し、既存クラスタに属さない場合は新規クラスタに属すると決定する。
【0038】
具体的には、次のようにクラスタを決定する。新規データとある既存クラスタとの間の距離Disを、例えば下記式(1)のように算出する。新規データの特徴量をf1=(x1,x2)、ある既存クラスタの特徴量の中心をf2=(c1,c2)=((a1+a2+…+am)/m,(b1+b2+…+bm)/m)とする。この既存クラスタに既に属しているデータの特徴量を、(a1,b1)、(a2,b2)、…、(am,bm)としている。
【0039】
不整合検知部1002は、Dis<不整合検知定義1014の値(本実施例では“1”)であれば新規データがある既存クラスに属するとし、それ以外であればその既存クラスタには属さないと判定し、新規データが属するクラスタを特定する。新規データが何れの既存クラスタにも属さない場合は、新規データは新規クラスタに属するとする。
【数1】
【0040】
また、不整合検知部1002は、特徴量1差分(diff(1))10124および特徴量2差分(diff(2))10125を、下記式(2-1)、式(2-2)のように算出する。なお、下記式(2-1)および式(2-2)は、特徴量が2つの場合であり、特徴量の数だけ特徴量差分が算出される。
【数2】
【0041】
また、不整合検知部1002は、新規データが、特徴量の中心がf2=(c1,c2)である既存クラスタに属する場合には、下記式(3)にようにクラスタの特徴量の中心f2を更新する。下記式(3)における“c1_next”、“c2_next”は、更新後の特徴量の中心である。
f2=(c1_next,c2_next)
=((x1+a1+a2+・・・+am)/m,(x2+b1+b2+・・・+bm)/m)・・・(3)
【0042】
なお、既存クラスタと新規データの特徴量ベクトルの差分やその次元毎の差分は、ユークリッド距離に限らず、他の距離でもよい。
【0043】
次にS124では、不整合検知部1002は、S123で判定したクラスタ名やクラスタ中心値などのS124で導出された値をクラスタテーブル1011に追記する。次にS125では、不整合検知部1002は、S123で算出したクラスタ間毎の距離Dis、特徴量毎の差分diff(1)、diff(2)、およびS123で新規クラスタを生成した際の不整合検知フラグを出力する。
【0044】
(マップ追加・更新S14の詳細処理)
図10は、実施例1のマップ追加・更新S14の詳細処理を示すフローチャートである。先ずS141では、マップ追加・更新部1003は、S125の出力結果を受信する。次にS142では、マップ追加・更新部1003は、クラスタ間毎の距離Disと特徴量毎の差分diff(1),diff(2)を、マップテーブル1012に追記する。本実施例では、例えば2次元の特徴ベクトルの場合を示すが、n次元になっても同様である。
【0045】
(データ調整処理)
図11は、実施例1のデータ調整処理を示すフローチャートである。データ調整処理は、オリジナルデータ1015に対するクエリをクエリ解釈部1004が検知する度に起動される処理である。
【0046】
先ずS21では、クエリ解釈部1004は、クエリ解釈を実行する。すなわち、クエリの要求対象とするデータの型やデータの質の対象データを抽出する。クエリ解釈S21の詳細処理は、
図12を参照して後述する。
【0047】
次にS22では、クエリ解釈部1004は、S21で抽出された対象データに対するレコードがマップテーブル1012に存在するか否かを判定し、存在すればS23へ処理を移し、存在しなければデータ調整処理を終了する。
【0048】
S23では、データ調整部1005で抽出された対象データに対する不整合を整合化するデータ調整を行う。データ調整S23の詳細処理は、
図15を参照して後述する。
【0049】
(クエリ解釈の詳細処理)
図12は、実施例1のクエリ解釈の詳細処理を示すフローチャートである。先ずS211では、クエリ解釈部1004は、ユーザがSQLやUI部1006のGUIなどから指定した、ユーザが要求するデータ項目の型やデータの質を受信する。データの質とは、例えばデータの精度や粒度である。SQLインターフェースやUI部1006のGUIは、スタンドアローンで提供されてもよいし、ウェブで提供されてもよい。S211でユーザが要求するデータの型または質が指定されることで、後述のデータ調整S23が実行される際、ユーザ所望のデータの型または質の変換が実行される。
【0050】
S211で受信されるユーザ要求が指定されたSQLの例としては、連続型データ抽出のためのSQLと離散型データ抽出のためのSQLがある。
図13Aは、実施例1のSQLのクエリ(連続型データ抽出)の一例を示す図である。
図13Aは、テーブルLab_testから、Test_dateが2016-01-01 00:00:00~2020-04-02 23:59:59の期間に該当するレコードのデータ項目Patient_ID、Test_date、Test_id、Test_resultを抽出する例を示す。
【0051】
また、
図13Bは、実施例1のSQLのクエリ(離散型データ抽出)の一例を示す図である。
図13Bは、テーブルLab_testから、Patient_idが“P00001”かつTest_resultが“H”または“L”に該当するレコードのデータ項目Patient_ID、Test_date、Test_id、Test_resultを抽出する例を示す。
【0052】
また、S211で受信されるユーザ要求が指定されるUI部1006のGUIの例としては、
図14のようなものがある。
図14は、実施例1ユーザ要求を入力するGUI610の一例を示す図である。
【0053】
GUI610は、テーブル選択セクション611、選択されたテーブルから抽出するレコードの項目(カラム)を選択する抽出項目選択セクション612、レコードの抽出期間を指定する抽出期間617、抽出項目選択セクション612で選択された抽出項目の抽出条件を指定する項目抽出条件620、抽出条件に該当する抽出結果を出力する出力セクション625を有する。
【0054】
図14は、抽出項目がPatient_ID613、Test_date614、Test_id615、Test_result616であり、選択欄ですべてのカラムを選択する例を示す。抽出期間617は、抽出項目選択セクション612中にTest_date614のように時刻型のデータがある場合に、Test_date618に対応する時間範囲619が指定される。時間範囲619に指定がなければ全時刻範囲となる。
【0055】
項目抽出条件620は、抽出項目選択セクション612で選択されたカラム毎にPatient_ID621に対してはNullが5%未満という条件、Test_date622に対してはTimestamp(0)型、Test_id622に対してはNullが5%未満、Test_result621に対してはNullが5%未満かつ値が(‘H’または‘L’)である、という条件を付けてデータを抽出する例である。出力セクション625には、抽出結果のデータが表示される。
【0056】
説明を
図12に戻す。次にS212では、クエリ解釈部1004は、クエリ(またはデータ抽出アプリから入力されたデータ抽出条件)を分解し、アクセス先データ情報である対象データと対象期間を抽出する。対象データは、スキーマ名、対象テーブル名、および対象カラム名から成る辞書型でもよいし、ファイルパスなどでもよく、ユーザが指定するデータを特定するに十分な情報であればよい。
【0057】
(データ調整S23の詳細処理)
図15は、実施例1のデータ調整S23の詳細処理を示すフローチャートである。先ず、S231では、データ調整部1005は、S212で得られたユーザが要求する対象データとデータレイクに格納されているデータ、および対象データに対応するマップテーブル1012のレコードに基づいて、クラスタ毎に統合ビューを用いて他のクラスタへデータの型および質を変換して整合化する変換コスト1007を計算する。
【0058】
例えば、変換コスト1007は、クラスタに属するオリジナルデータ1015のレコード数に比例する値として計算できる。または、変換コスト1007は、クラスタ間の距離10123、特徴量1差分(diff(1))10124、および特徴量2差分(diff(2))10125に基づく値として計算できる。あるいは、変換コスト1007は、変換するレコード数と1レコードあたりの変換コストの積に関する関数として計算してもよく、方法はこれらまたはこれらの組合せに限らない。
【0059】
次にS232では、データ調整部1005は、S212で得た対象データを、最小の変換コストで、マップテーブル1012を用いて整合化しデータの型または質を統合することができる既存ビューが存在するか探索する。既存ビューは、所定の記憶領域に保存されている。データ調整部1005は、既存ビューが存在する場合には既存ビューを利用し、S233へ処理を移す。既存ビューを利用することで、データの型または質の変換の処理負荷をさらに軽減できる。
【0060】
一方、データ調整部1005は、既存ビューが存在しない場合にはS231で計算した変換コスト1007が小さいクラスタから最大クラスタのデータ型およびデータフォーマットへ変換する。これにより、変換コストを抑えてデータの型または質を変換することができる。データ調整部1005は、データ型の変換後、S212で得られたユーザが要求する対象データから、マップテーブル1012を用いて新規ビューを生成し、所定の記憶領域に保存する。
【0061】
次にS233では、データ調整部1005は、S212で得られた対象データのデータ名(例えばテーブル名またはファイル名)を一時的に変更し、統合ビュー(S232の既存ビューまたは新規ビュー)の名称をS212で得られた対象データのテーブル名およびカラム名とする。
【0062】
(実施例1の効果)
本実施例では、データを利用して監視や機械学習などを行うアプリケーションのためのデータを格納するデータレイクのデータのデータ型に時間的・空間的な不整合がある場合に、アプリ改修で整合化するのではなく、ビューを生成し、このビューを用いてユーザの要求レベルを充足するように整合化することで、アプリ改修と比較して工数削減を図ることができる。
【0063】
また本実施例では、データ型の不整合のみならず、データ品質(データ粒度等)の不整合もビューを用いた整合化の対象とする。機械学習アプリケーションのようにデータ品質がユーザ要求を充足することが求められる場合、対象データを調整することで、ユーザの品質要求を充足することができる。
【0064】
また本実施例では、データの型または質の不整合を予め検知しておき、ユーザによってクエリが発行された際に、抽出に該当するデータの不整合を統合ビューを用いて整合化するので、クエリ発行頻度が少ない場合に、無駄な整合化処理を行うことなく、必要に応じて効率的に整合化を行うことができる。
【実施例2】
【0065】
以下、本発明の実施例2を説明する。実施例2の説明では、実施例1との差分のみを説明し、重複説明を省略する。実施例1の不整合検知処理(
図7)では、不整合を検知しても直ちにはデータ調整を行わず、クエリ受信時にデータ調整を行う場合(
図11)を示したが、これに限らず、データ不整合を検知すると直ちにデータ調整を実行してもよい。以下、これを実施例2として説明する。
【0066】
図16は、実施例2のデータ不整合検知処理を示すフローチャートである。実施例2のデータ不整合検知処理は、実施例1のデータ不整合検知処理(
図7)と比較して、S11~S14までは同様であるが、S14に続いてS23が実行される点が異なる。S23は、データ調整部1005が行う処理であり、実施例1のデータ調整処理(
図11)のS23と同一である。
図16のS23でデータ調整を行い、いかなる不整合に対してもこの不整合を調整するビューを随時用意する。データ不整合検知処理は、定期的、あるいはエンジニアの指示タイミングで実行される。
【0067】
図17は、実施例2のユーザによるデータ統合システムSへの要求入力処理を示すフローチャートである。本処理では、
図14に示す実施例1と同様のGUI610を用いる。S31では、UI部1006は、GUI610を介して入力されたユーザ要求データをクエリ解釈部1004へ送信する。次にS21では、クエリ解釈部1004は、S31で送信されたクエリを解釈する。
図16のS21は、
図11のS21と同様の処理である。次にS32では、UI部1006は、ユーザが要求したデータをGUI610に表示する。
【0068】
図14を参照して、GUI610の例を説明する。S31でユーザによって入力される部分はテーブル選択セクション611、抽出項目選択セクション612、抽出期間617、項目抽出条件620の抽出条件セクションが該当する。S32で取得されたデータは、出力セクション625に表示される。
【0069】
なお、実施例2においても、クエリ解釈部1004が、ユーザが要求するデータ項目やデータ品質を受信する方法は、GUI610を介したデータ要求に限らず、SQLなどのクエリによって受信する方法であってもよい。
【0070】
(実施例2の効果)
本実施例では、データの型または質の不整合を検知した際に、該当するデータの不整合を統合ビューを用いて整合化するので、クエリ発行頻度が多い場合にシステム負荷を掛けることなく不整合を是正し、データ統合を効率的に行うことができる。
【0071】
上述した実施形態は、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。さらに、上述した複数の実施形態および変形例において、本発明の主旨を変えない範囲内で、装置またはシステム構成の変更や、一部の構成または処理手順の省略や入れ替え、組合せを行ってもよい。さらに、
図1、
図2で説明したハードウェア図やブロック図では、制御線や情報線は説明上必要と考えられるものだけを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0072】
1000:サーバ、1001:スキーママッピング検知部、1002:不整合検知部、1003:マップ追加・更新部、1004:クエリ解釈部、1005:データ調整部、1006:UI部、1007:変換コスト、1010:ストレージ、1011:クラスタテーブル、1012:マップテーブル、1013:特徴量定義、1014:不整合検知定義、1015:オリジナルデータ