(57)【特許請求の範囲】
【請求項１】
時系列データを構成する各データがデータ値とデータ時刻情報とを少なくとも有する前記時系列データの保存、抽出及び合成方法において、時刻のオーダーの種類を表すＡタグ及び前記時刻のオーダーの種類のそれぞれについて設定される時刻のオーダーの中での区切りの種類を表すＢタグについて前記データ毎に該データの取得間隔に依存することなく前記データを取得した時点の時刻情報に基づいて選定可能な最も上位の前記時刻のオーダーの種類の中で最も上位の前記時刻のオーダーの中での区切りの種類を選定して該時刻のオーダーの種類を表すＡタグと該時刻のオーダーの中での区切りの種類を表すＢタグとに基づく間引きタグを付与し、更に前記データ毎に前記データ値に基づいて時間当たりの変化率を表す微分値を算出し、前記間引きタグ並びに前記微分値を前記データと合わせて保存し、該保存された複数のデータの中からデータ抽出間隔に基づいて設定された前記間引きタグの条件を満たす前記間引きタグを有する前記データ並びにデータ変化率に基づいて設定された前記微分値の条件を満たす前記微分値を有する前記データを抽出し、該抽出した全てのデータを時刻順に並べることによって間引き条件に合致すると共に短時間のデータ値の変動に対応したデータを合成することを特徴とする時系列データの保存、抽出及び合成方法。
【請求項２】
時系列データを構成する各データがデータ値とデータ時刻情報とを少なくとも有する前記時系列データの保存、抽出及び合成を行う際に、少なくとも、時刻のオーダーの種類を表すＡタグ及び前記時刻のオーダーの種類のそれぞれについて設定される時刻のオーダーの中での区切りの種類を表すＢタグについて前記データ毎に該データの取得間隔に依存することなく前記データを取得した時点の時刻情報に基づいて選定可能な最も上位の前記時刻のオーダーの種類の中で最も上位の前記時刻のオーダーの中での区切りの種類を選定して該時刻のオーダーの種類を表すＡタグと該時刻のオーダーの中での区切りの種類を表すＢタグとに基づく間引きタグを付与する手段、前記データ毎に該データのデータ値に基づいて時間当たりの変化率を表す微分値を算出する手段、前記間引きタグ並びに前記微分値を前記データと合わせて保存する手段、前記保存された複数のデータの中からデータ抽出間隔に基づいて設定された前記間引きタグの条件を満たす前記間引きタグを有する前記データを抽出する手段、データ変化率に基づいて設定された前記微分値の条件を満たす前記微分値を有する前記データを抽出する手段、前記抽出した全てのデータを時刻順に並べることによって間引き条件に合致すると共に短時間のデータ値の変動に対応したデータを合成する手段としてコンピュータを機能させるための時系列データの保存、抽出及び合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時系列データの保存、抽出及び合成方法並びにプログラムに関する。さらに詳述すると、本発明は、例えば数万レコードを超えるような膨大な時系列データを保存して抽出すると共に合成する方法並びにプログラムに関する。
【０００２】
本明細書において、時系列データとは、時間の進行に伴うある量の観測値や統計値等の系列データであって時点が異なる複数個のデータの集合を意味するものとして用いている。また、時系列データを構成する各データのことを単にデータと呼ぶ。そして、データは、観測値や統計値等であるデータ値、及びデータ値が観測された時刻や算出された統計値に対応する時刻であるデータ時刻情報を少なくとも有する。
【背景技術】
【０００３】
従来の時系列データの保存及び抽出の方法としては、例えば時系列データの保存方法及び時系列データベースシステム並びに時系列データの処理方法及び時系列データ処理システムがある（特許文献１）。
【０００４】
この時系列データの保存並びに処理方法は、図６に示すように、順次入力されるサンプリング周期ΔＴ０の時系列データａ１，ａ２，ａ３，…をそのまま最下位のデータとして直列的に保存していく。そして、ΔＴ０よりも長い所定のサンプリング周期ΔＴ１が経過してｎ個のデータが蓄積されたときに、その期間のデータａ１，ａ２，…，ａｎの代表値ｂ１を上位データとして別のファイル（上位の階層）に保存する。この処理を繰り返し、ΔＴ１よりも長い所定のサンプリング周期ΔＴ２が経過して上位の階層にｋ個のデータが蓄積されたときに、その期間のデータｂ１，ｂ２，…，ｂｋの代表値ｃ１を更なる上位データとして別のファイル（更に上位の階層）に保存する。ここで、代表値としては、該当するサンプリング周期に含まれる時系列データの相加平均値や中間値等を算出して適用する。以上の処理を繰り返してサンプリング周期ΔＴｍの最上位データｚ１まで保存し、以降は時間の経過と共に順次この保存処理を繰り返していく。これにより、複数の異なるサンプリング周期（ΔＴ０，ΔＴ１，…，ΔＴｍ）を有する時系列データがそれぞれ保存され、記録媒体において階層的な時系列データベースが構築される。なお、サンプリング周期や時系列データ群の数などは予め設定しておく。
【０００５】
また、時系列データに対してデータ読み出し要求が与えられて上述のように保存された階層的な時系列データベースからデータを読み出す際には、制御部に設けられたデータ読み出し制御手段として機能するデータ選択制御部によってどのサンプリング周期で読み出すことが最適かを判断し、同じくデータ読み出し制御手段として機能するデータ読み出し制御部によってその最適なサンプリング周期の時系列データのファイルにアクセスしてデータを読み出すものである。
【０００６】
【特許文献１】特開２００４−３０５９９号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１の時系列データの保存並びに処理方法は、データの個数が異なる複数のデータ集合を作成し、時系列データの読み出し要求に対して適したデータ集合を読み出して提供するものである。しかしながら、元のデータ集合と比べてデータ数が少ない上位の階層のデータ集合を作成する際に、上位の階層のサンプリング周期に含まれる複数のデータの相加平均値や中間値等を算出して適用するようにしている。したがって、例えばデータの値が短時間のうちに変動し且つ短時間のうちに元の状態に戻るなどの突発的なデータの値の変動が起きていても、サンプリング周期に含まれる複数のデータの相加平均値や中間値を算出した場合にはその突発的なデータの値の変動が顕著に表れない場合がある。よって、短時間の突発的なデータの値の変動を表現することができない場合があるという問題がある。
【０００８】
また、特許文献１の方法では、時系列データの階層毎にデータファイルを作成するようにしている。したがって、時系列データの階層毎のデータを保存するための例えばデータサーバ等の保存装置やそれらの記録領域が必要であり、より多くの資源を必要とし効率的でないという問題がある。
【０００９】
更に、特許文献１の方法では、時系列データのサンプリング周期や作成する時系列データ群の数などは予め設定するようにしている。したがって、もともとのデータの取得間隔が不定期であったり途中で変化したりする場合にそのデータの取得間隔に合わせて柔軟に対応することができない場合があり、適切な階層別のデータ集合を作成することができないという問題がある。
【００１０】
そこで、本発明は、データの個数が膨大な時系列データの保存及び抽出を効率的に行うことができると共に短時間の突発的なデータの値の変動を表現することができ、更にもともとのデータの取得間隔の変動に柔軟に対応することができる時系列データの保存及び抽出方法並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
かかる目的を達成するため、請求項１記載の時系列データの保存、抽出及び合成方法は、時系列データを構成する各データがデータ値とデータ時刻情報とを少なくとも有する時系列データの保存、抽出及び合成方法において、時刻のオーダーの種類を表すＡタグ及び時刻のオーダーの種類のそれぞれについて設定される時刻のオーダーの中での区切りの種類を表すＢタグについてデータ毎にデータの取得間隔に依存することなくデータを取得した時点の時刻情報に基づいて選定可能な最も上位の時刻のオーダーの種類の中で最も上位の時刻のオーダーの中での区切りの種類を選定して該時刻のオーダーの種類を表すＡタグと該時刻のオーダーの中での区切りの種類を表すＢタグとに基づく間引きタグを付与し、更にデータ毎にデータ値に基づいて時間当たりの変化率を表す微分値を算出し、間引きタグ並びに微分値をデータと合わせて保存し、保存された複数のデータの中からデータ抽出間隔に基づいて設定された間引きタグの条件を満たす間引きタグを有するデータ並びにデータ変化率に基づいて設定された微分値の条件を満たす微分値を有するデータを抽出し、抽出した全てのデータを時刻順に並べることによって間引き条件に合致すると共に短時間のデータ値の変動に対応したデータを合成するようにしている。
【００１８】
請求項２記載の時系列データの保存、抽出及び合成プログラムは、時系列データを構成する各データがデータ値とデータ時刻情報とを少なくとも有する時系列データの保存、抽出及び合成を行う際に、少なくとも、時刻のオーダーの種類を表すＡタグ及び時刻のオーダーの種類のそれぞれについて設定される時刻のオーダーの中での区切りの種類を表すＢタグについてデータ毎にデータの取得間隔に依存することなくデータを取得した時点の時刻情報に基づいて選定可能な最も上位の時刻のオーダーの種類の中で最も上位の時刻のオーダーの中での区切りの種類を選定して該時刻のオーダーの種類を表すＡタグと該時刻のオーダーの中での区切りの種類を表すＢタグとに基づく間引きタグを付与する手段、データ毎にデータのデータ値に基づいて時間当たりの変化率を表す微分値を算出する手段、間引きタグ並びに微分値をデータと合わせて保存する手段、保存された複数のデータの中からデータ抽出間隔に基づいて設定された間引きタグの条件を満たす間引きタグを有するデータを抽出する手段、データ変化率に基づいて設定された微分値の条件を満たす微分値を有するデータを抽出する手段、抽出した全てのデータを時刻順に並べることによって間引き条件に合致すると共に短時間のデータ値の変動に対応したデータを合成する手段としてコンピュータを機能させるようにしている。
【００１９】
したがって、この時系列データの保存、抽出及び合成方法並びにプログラムによると、時系列データを構成するデータ毎に時刻のオーダーの種類を表すＡタグ及び時刻のオーダーの中での区切りの種類を表すＢタグを付与することにより、時刻のオーダー及び区切りの種類を適宜選択して元の時系列データの中から作業者が希望する時間間隔や作業者が希望する抽出データの個数に合わせてデータを抽出することができ、さらに、時系列データを構成するデータ毎に時間当たりの変化率を表す微分値を付与することにより、データ値の変化の大きさを適宜選択して元の時系列データの中から作業者が必要とするデータ値の変化が生じている期間のデータを抽出することができる。
【発明の効果】
【００２０】
以上説明したように、本発明の時系列データの保存及び抽出方法並びにプログラムによれば、時刻のオーダー及び区切りの種類を適宜選択して元の時系列データの中から作業者が希望する時間間隔や作業者が希望する抽出データの個数に合わせてデータを抽出することができるので、データの抽出間隔（若しくは階層）毎にデータファイルを作成する必要がなく、時系列データの保存のための資源を節約することができ、時系列データの保存及び抽出の効率の向上が可能である。更に、もともとのデータの取得間隔の変動に影響を受けることなく、作業者が希望する時間間隔に適確に対応してデータを抽出することが可能である。
【００２１】
また、データ値の変化の大きさを適宜選択して元の時系列データの中から作業者が必要とするデータ値の変化が生じている期間のデータを抽出することができるので、短時間の突発的なデータ値の変動に対応するデータを抽出することができ、元の時系列データが有する情報量を最大限活用してデータ利用の精確性の向上が可能である。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の構成を図面に示す最良の形態に基づいて詳細に説明する。
【００２３】
図１から図４に、本発明の時系列データの保存及び抽出方法の実施形態の一例を示す。
【００２４】
本発明の時系列データの保存及び抽出方法は、図１のフローに示すように、大きくは、時系列データの保存に関する処理としてデータを間引いて抽出するための間引きタグの設定（Ｓ１）、データへの間引きタグの付与（Ｓ２）及び短時間で大きい変化が起きているイベントデータの検出（Ｓ３）、並びに時系列データの抽出に関する処理として時系列データを利用するためのデータの抽出と合成（Ｓ４）からなる。
【００２５】
以下に、まず、時系列データの保存に関する処理（Ｓ１〜Ｓ３）について図２に示すフローに従って説明する。
【００２６】
最初に、間引きタグの設定（Ｓ１）について説明する。
【００２７】
間引きタグは時系列データからデータを間引いて抽出する際に利用するものであり、各データに一つの間引きタグを付与する。間引きタグは、時刻のオーダーの種類を表すＡタグと、時刻のオーダーの中での区切り（以下適宜、時刻の区切りと表記する）の種類を表すＢタグとで構成する。間引きタグは、各データを取得した時刻に対して付与するものであり、もともとのデータの取得間隔には依存しない。そのため、データの取得間隔が変動した場合にも柔軟に対応することができる。
【００２８】
本実施形態では、Ａタグである時刻のオーダーの種類として、秒、分、時、日、月及び年を設定する（Ｓ１−１）。なお、後述するように、日、月、年も特定の時点を表すものとして定義することにより時刻のオーダーとして扱う。また、秒、分及び時は日本国の標準時刻を用い、日及び月は日本国の暦を用い、年は西暦を用いる。
【００２９】
なお、時刻のオーダーの種類は、前記の秒、分、時、日、月、年には限られず、時系列データの内容や種類により作業者が適当な時刻のオーダーの種類を設定する。例えば、時刻のオーダーの種類として前記に加えて週を設定しても良い。また、前記のうち作業者が不要と判断した時刻のオーダーの種類は設定しなくても良い。更に、もともとのデータの取得間隔よりも小さい時刻のオーダーの種類は設定しない。具体的には例えば、もともとのデータの取得間隔が１時間毎であれば秒オーダーや分オーダーは設定しない。
【００３０】
ＡタグもＢタグも具体的には数値を用いて表す。本実施形態では、ＡタグもＢタグも一桁の整数を用いて表す。
【００３１】
Ａタグの値は、秒オーダーは０、分オーダーは１、時オーダーは２、日オーダーは３、月オーダーは４、年オーダーは５とする。また、以降では、Ａタグの値が大きい方の時刻のオーダーの種類を上位の時刻のオーダーの種類と呼び、小さい方を下位の時刻のオーダーの種類と呼ぶ。具体的には例えば、分オーダーは、秒オーダーに対しては上位の時刻のオーダーの種類であり、時オーダーに対しては下位の時刻のオーダーの種類である。
【００３２】
次に、Ｂタグの設定（Ｓ１−２）について説明する。前記の通り、Ｂタグは時刻のオーダーの中での区切りの種類を表すものであり、時刻のオーダーの種類のそれぞれについて設定する。
【００３３】
本実施形態では、秒オーダーの中での区切りの種類は、１秒毎、５秒毎、１０秒毎、２０秒毎、３０秒毎とする。また、分オーダーの中での区切りの種類は、１分毎、５分毎、１０分毎、２０分毎、３０分毎とする。更に、時オーダーの中での区切りの種類は、１時間毎、２時間毎、３時間毎、４時間毎、６時間毎、１２時間毎とする。
【００３４】
Ｂタグの値は、秒オーダーの中での区切りの種類については、１秒毎は０、５秒毎は１、１０秒毎は２、２０秒毎は３、３０秒毎は４とする。また、分オーダーの中での区切りの種類については、１分毎は０、５分毎は１、１０分毎は２、２０分毎は３、３０分毎は４とする。更に、時オーダーの中での区切りの種類については、１時間毎は０、２時間毎は１、３時間毎は２、４時間毎は３、６時間毎は４、１２時間毎は５とする。また、以降では、時刻のオーダーの種類が同じもの同士でＢタグの値が大きい方の時刻の区切りの種類を上位の時刻の区切りの種類と呼び、小さい方を下位の時刻の区切りの種類と呼ぶ。具体的には例えば、分オーダーについて、５分毎は、１分毎に対しては上位の時刻の区切りの種類であり、１０分毎に対しては下位の時刻の区切りの種類である。
【００３５】
ここで、例えば秒オーダーの中での区切りの種類の５秒毎とは、５秒、１０秒、１５秒、２０秒、２５秒、３０秒、３５秒、４０秒、４５秒、５０秒、５５秒、６０秒のことをいい、これらについては原則としてＢタグの値は前記の通り１となる。しかしながら、複数の時刻の区切りの種類に該当する場合には、最も上位の時刻の区切りの種類を優先する。具体的には例えば、１０秒は時刻の区切りの種類の５秒毎に該当すると共に１０秒毎にも該当するので、より上位の時刻の区切りの種類である１０秒毎を優先してＢタグの値は２となる。また、２０秒については、時刻の区切りの種類の５秒毎と１０秒毎に該当し、更に２０秒毎にも該当するので、最も上位の時刻の区切りの種類である２０秒毎を優先してＢタグの値は３となる。
【００３６】
また、ある時刻のオーダーの時刻の区切りに該当する時点がより上位の時刻のオーダーの種類の時刻の区切りにも該当する場合には、時刻のオーダーの種類をより上位の時刻のオーダーの種類とした上でその上位の時刻のオーダーの種類の中での時刻の区切りの種類を設定する。具体的には例えば、秒オーダーの６０秒は時刻のオーダーの種類を分オーダーとした上で分オーダーの中での時刻の区切りの種類を設定する。そして更に秒オーダーの６０秒が分オーダーの６０分にも該当している場合には時刻のオーダーの種類を時オーダーとした上で時オーダーの中での時刻の区切りの種類を設定する。
【００３７】
以上の結果、秒オーダー、分オーダー、時オーダーのそれぞれのＡタグの値とＢタグの値は表１（Ａ）、（Ｂ）、（Ｃ）の通りになる。
【００３８】
【表１】
0004790371.tif 000002
【００３９】
更に、本実施形態では、日オーダーの中での区切りの種類は、１日毎、５日毎、１０日毎、１５日毎とする。また、月オーダーの中での区切りの種類は、１月毎、２月毎、３月毎、６月毎とする。更に、年オーダーの中での区切りの種類は、１年毎、２年毎、５年毎とする。なお、本実施形態では、年オーダーのＢタグの設定には西暦の下一桁を用いる。
【００４０】
Ｂタグの値は、日オーダーの中での区切りの種類については、１日毎は０、５日毎は１、１０日毎は２、１５日毎は３とする。また、月オーダーの中での区切りの種類については、１月毎は０、２月毎は１、３月毎は２、６月毎は３とする。更に、年オーダーの中での区切りの種類については、１年毎は０、２年毎は１、５年毎は２とする。
【００４１】
以上の結果、日オーダー、月オーダー、年オーダーのそれぞれのＡタグの値とＢタグの値は表２（Ａ）、（Ｂ）、（Ｃ）の通りになる。
【００４２】
【表２】
0004790371.tif 000003
【００４３】
更に、１／１０秒オーダー、１／１００秒オーダー、１／１０００秒オーダーについても間引きタグを設定する場合には、例えば表３（Ａ）、（Ｂ）、（Ｃ）のように設定する。
【００４４】
【表３】
0004790371.tif 000004
【００４５】
また、本実施形態では、Ａタグ及びＢタグの値並びに（式１）を用いて間引きタグを二桁の整数で表す。これにより、後述するように、間引きタグを用いてデータを抽出する際の指定が簡便になる。
【００４６】
Ｇ＝ａ×１０＋ｂ  …（式１）
ここに、Ｇ：間引きタグの値、ａ：Ａタグの値、ｂ：Ｂタグの値。
【００４７】
なお、Ａタグの値ａ並びにＢタグの値ｂの桁数は一桁には限られず二桁以上であっても良く、間引きタグの値Ｇの桁数は三桁以上であっても良い。更に、Ａタグの値ａの桁数とＢタグの値ｂの桁数は同じであっても異なっていてもどちらでも良い。ここで、Ｂタグの値ｂの桁数が一桁でない場合には（式１）をＢタグの値ｂの桁数に合わせて適切に設定することにより間引きタグを任意の桁数の整数で表現することができる。具体的には例えば、Ｂタグの値ｂの桁数が二桁の場合には（式１）をＧ＝ａ×１００＋ｂのように設定する。
【００４８】
以上述べた方法によって各データに二桁の整数からなる間引きタグを付与することにより作業者が必要とする時間間隔のデータのみを時系列データから抽出することができる。なお、以降では、間引きタグの値Ｇを基に元の時系列データから抽出したデータを間引きデータと呼ぶ。
【００４９】
具体的には例えば、間引きタグの値Ｇが１０以上のデータを抽出すると１分間隔の間引きデータが得られ、間引きタグの値Ｇが１２以上のデータを抽出すると１０分間隔の間引きデータが得られる。また、間引きタグの値Ｇが１３以上で且つ１４でないデータを抽出すると２０分間隔の間引きデータが得られる。
【００５０】
なお、本実施形態では、Ａタグの値ａとＢタグの値ｂとから間引きタグの値Ｇを算出するようにしているが、間引きタグのＡタグとＢタグとしてそのまま利用するようにしても良い。この場合には例えば、Ａタグの値ａが１以上のデータを抽出すると１分間隔の間引きデータが得られ、Ａタグの値ａが１以上で且つＢタグの値ｂが２以上のデータを抽出すると１０分間隔の間引きデータが得られ、更にＡタグの値ａが１以上であってＢタグの値が３以上で且つ４でないデータを抽出すると２０分間隔の間引きデータが得られる。
【００５１】
ここで、本発明では、それぞれの時刻のオーダーの種類の時刻の区切りに対応するデータは特定の時点のデータとして定義する。本実施形態では、秒オーダーのデータは毎秒丁度の時点のデータ、分オーダーのデータは毎分丁度の時点のデータ、時オーダーのデータは毎時丁度の時点のデータとする。したがって具体的には、時オーダーの３時のデータは３時００分００秒丁度の時点のデータとなる。
【００５２】
更に、日オーダー、月オーダー、年オーダーのデータもそれぞれを特定の時点のデータとして定義する。本実施形態では、日オーダーのデータはその日の午前０時丁度の時点、月オーダーのデータはその月の１日（ついたち）午前０時丁度の時点、年オーダーのデータはその年の１月１日午前０時丁度の時点のデータとする。したがって具体的には、年オーダーの５年のデータは西暦の下一桁が５である年の１月１日午前０時丁度の時点のデータとする。
【００５３】
ここで、上記の特定の時点はオフセットを設定して一定時間だけずらすようにしても良い。上記の特定の時点をオフセットによりずらすことにより、データの規準となる特定の時点を個々のデータの取得状況に適応させることができる。具体的には例えば、時オーダーについてオフセットをプラス１５分とし、時オーダーのデータを毎時１５分丁度の時点のデータとしても良い。なお、オフセットは、分オーダーについてはプラス１〜５９秒、時オーダーについてはプラス１〜５９分、日オーダーについてはプラス１〜２３時間、月オーダーについてはプラス１〜２７日、年オーダーについてはプラス１〜１１月の範囲の整数値で設定する。
【００５４】
続いて、データへの間引きタグの付与（Ｓ２）について説明する。
【００５５】
まず、間引きタグを付与するデータＤｎの時刻ＴｎとデータＤｎの直前に取得したデータＤｎ−１の時刻Ｔｎ−１との中間の時刻Ｔｎ−１／２、並びにデータＤｎの時刻ＴｎとデータＤｎの直後に取得したデータＤｎ＋１の時刻Ｔｎ＋１との中間の時刻Ｔｎ＋１／２を算出する（Ｓ２−１、Ｓ２−２）。なお、時刻Ｔｎ−１／２から時刻Ｔｎ＋１／２までをデータＤｎの範囲と呼ぶ。また、本実施形態では、一番最初に取得したデータと一番最後に取得したデータについてはこのデータＤｎの範囲が設定できないため間引きタグを付与していない。
【００５６】
具体例として、例えば、間引きタグを付与するデータＤ２の時刻が１４時４４分であり、データＤ２の直前に取得したデータＤ１の時刻が１４時４１分でデータＤ２の直後に取得したデータＤ３の時刻が１４時５７分の場合には、データＤ２の範囲は１４時４２分３０秒から１４時５０分３０秒までとなる。
【００５７】
続いて、データＤｎの範囲に時刻の区切りが入っているか否かを判断する（Ｓ２−３）。そして、データＤｎの範囲に時刻の区切りが入っている場合（Ｓ２−３；Ｙｅｓ）には次の処理（Ｓ２−４）に進む。一方、データＤｎの範囲に時刻の区切りが入っていない場合（Ｓ２−３；Ｎｏ）には、データＤｎには間引きタグを付与せずにデータＤｎに対する間引きタグの付与の処理を終了する（Ｓ２−９）。
【００５８】
先の具体例では、データＤ２の範囲の１４時４２分３０秒から１４時５０分３０秒までに分オーダーの時刻の区切りの１４時４５分及び１４時５０分並びに秒オーダーの時刻の区切りが入っている（Ｓ２−３；Ｙｅｓ）ので次の処理（Ｓ２−４）に進む。
【００５９】
データＤｎの範囲に時刻の区切りが入っている場合（Ｓ２−３；Ｙｅｓ）には、データＤｎの範囲に入っている時刻の区切りの種類のうち最も上位の時刻のオーダーの種類の中で最も上位の時刻の区切りの種類Ｓｉを選定する（Ｓ２−４）。そして、その時刻の区切りの種類Ｓｉの時刻の区切りＳｉ・ｋを選定する（Ｓ２−５）。
【００６０】
先の具体例では、まず、データＤ２の範囲に入っている時刻の区切りの種類の最も上位の時刻のオーダーの種類は分オーダーである。そして、分オーダーの時刻の区切り１４時４５分の時刻の区切りの種類は５分毎であり、時刻の区切り１４時５０分の時刻の区切りの種類は１０分毎である。したがって、最も上位の時刻の区切りの種類として１０分毎を選定する（Ｓ２−４）。そして、時刻の区切りとして１４時５０分を選定する（Ｓ２−５）。
【００６１】
なお、データＤｎの範囲に最も上位の時刻の区切りの種類Ｓｉの時刻の区切りが複数個ある場合、具体的には例えば、時刻の区切りＳｉ・ｋの直前の時刻の区切りＳｉ・ｋ−１や直後の時刻の区切りＳｉ・ｋ＋１等がデータＤｎの範囲にある場合には、それぞれについて以降のＳ２−６からＳ２−１０までの処理を行う。そして、最終的に複数の間引きタグが付与され得る場合には、複数の間引きタグのそれぞれの時刻の区切りのうち時刻が最も早い時刻の区切りに対応する間引きタグを付与する。
【００６２】
次に、時刻の区切りの種類Ｓｉの時刻の区切りＳｉ・ｋとその直前の時刻の区切りＳｉ・ｋ−１との中間の時刻Ｓｉ・ｋ−１／２、並びに時刻の区切りＳｉ・ｋとその直後の時刻の区切りＳｉ・ｋ＋１との中間の時刻Ｓｉ・ｋ＋１／２を算出する（Ｓ２−６）。なお、時刻Ｓｉ・ｋ−１／２から時刻Ｓｉ・ｋ＋１／２までを時刻の区切りＳｉ・ｋの範囲と呼ぶ。
【００６３】
先の具体例では、時刻の区切りの種類１０分毎の時刻の区切り１４時５０分の直前の時刻の区切りは１４時４０分で直後の時刻の区切りは１５時００分であるので、時刻の区切り１４時５０分の範囲は１４時４５分から１４時５５分までとなる。
【００６４】
続いて、時刻の区切りＳｉ・ｋの範囲に間引きタグを付与するデータＤｎの時刻Ｔｎが入っているか否かを判断する（Ｓ２−７）。そして、時刻Ｔｎが入っている場合（Ｓ２−７；Ｙｅｓ）には、時刻の区切りＳｉ・ｋの間引きタグの値ＧをデータＤｎに付与する（Ｓ２−１０）。
【００６５】
一方、時刻の区切りＳｉ・ｋの範囲に時刻Ｔｎが入っていない場合（Ｓ２−７；Ｎｏ）には、データＤｎの範囲に時刻の区切りの種類Ｓｉの下位の時刻の区切りの種類が入っているか否かを判断する（Ｓ２−８）。この際、時刻の区切りの種類Ｓｉの一つ下位の時刻の区切りの種類Ｓｉ−１が入っているか否かを判断し、入っていない場合には更に一つ下位の時刻の区切りの種類Ｓｉ−２が入っているか否かを判断するというように、時刻の区切りの種類として設定している全ての時刻の区切りの種類について上位から順に判断する。更に、ある時刻のオーダーの種類の中で設定している全ての時刻の区切りの種類についての判断に続いて一つ下位の時刻のオーダーの種類の中で設定している全ての時刻の区切りの種類について判断するというように、時刻のオーダーの種類として設定している全ての時刻のオーダーの種類について上位から順に時刻の区切りの種類が入っているか否かを判断する。
【００６６】
そして、データＤｎの範囲に時刻の区切りの種類Ｓｉの下位の時刻の区切りの種類が入っている場合（Ｓ２−８；Ｙｅｓ）には、その時刻の区切りの種類の時刻の区切りを選定する処理（Ｓ２−５）に戻る。
【００６７】
一方、データＤｎの範囲に下位の時刻の区切りの種類が入っていない場合（Ｓ２−８；Ｎｏ）には、データＤｎには間引きタグを付与せずにデータＤｎに対する間引きタグの付与の処理を終了する（Ｓ２−９）。
【００６８】
先の具体例では、時刻の区切り１４時５０分の範囲の１４時４５分から１４時５５分にデータＤ２の時刻１４時４４分は入っていない（Ｓ２−７；Ｎｏ）。そこで、データＤ２の範囲の１４時４２分３０秒から１４時５０分３０秒に時刻の区切りの種類１０分毎の下位の時刻の区切りの種類が入っているか否かを判断すると（Ｓ２−８）、Ｓ２−４でみたように一つ下位の時刻の区切りの種類である５分毎が入っている（Ｓ２−８；Ｙｅｓ）のでその時刻の区切りの種類の時刻の区切りを選定する処理（Ｓ２−５）に戻る。
【００６９】
そして、時刻の区切りの種類５分毎の時刻の区切りは１４時４５分であり（Ｓ２−５）、直前の時刻の区切りは１４時４０分で直後の時刻の区切りは１４時５０分であるから時刻の区切りの範囲は１４時４２分３０秒から１４時４７分３０秒までとなる（Ｓ２−６）。そうすると時刻の区切りの範囲にデータＤ２の時刻１４時４４分が入っている（Ｓ２−７；Ｙｅｓ）ので、データＤ２は時刻のオーダーの種類が分で時刻の区切りの種類が５分毎となって間引きタグの値Ｇは１１となる（Ｓ２−１０）。
【００７０】
上記のＳ２−１からＳ２−１０までの処理は時系列データを構成する全てのデータ毎に行う。なお、データへの間引きタグの付与は、既に取得済みでデータベース等に保存している時系列データに対して間引きタグを一括して後付けするようにしても良いし、データを新たに取得してデータベース等に保存する際に逐次的に間引きタグを付与するようにしても良い。
【００７１】
続いて、時系列データのうち短時間で大きい変化が起きているデータの検出（Ｓ３）について説明する。
【００７２】
長期間の時系列データを利用する際に単にデータを間引いて抽出するだけでは短時間でのデータの値の大きな変化を見落としてしまう可能性がある。具体的には、図４（Ａ）に示すように、もともと図中の白丸と黒丸の時系列データが得られていた場合に、黒丸の間引きデータ２だけを抽出して白丸のデータ１をまったく使わないとすると短時間３におけるデータの値の大きな変化を見落としてしまうことになる。
【００７３】
そこで、本発明では、前述の間引きによるデータの抽出に加え、時系列データのうち短時間で大きい変化が起きているデータの抽出を行う。なお、以降では、短時間のうちにデータの値に大きな変化を引き起こす原因のことをイベントと呼び、イベントに対応して短時間で大きく変化している部分のデータのことをイベントデータと呼ぶ。したがって、ここでの処理はイベントデータを検出することである。
【００７４】
イベントデータの検出はデータの１階微分値や２階微分値を基に行う。そのため、まず、データの１階微分値や２階微分値を算出する（Ｓ３−１）。
【００７５】
具体的には、１階微分値を算出するデータをデータＤｎ、データＤｎの直後に取得したデータをデータＤｎ＋１とすると、データＤｎの１階微分値Ｄ'ｎを（式２）により算出する。
【００７６】
Ｄ'ｎ＝（Ｖｎ＋１−Ｖｎ）／（Ｔｎ＋１−Ｔｎ）  …（式２）
ここに、Ｄ'ｎ：データＤｎの１階微分値、Ｖｎ＋１：データＤｎ＋１の値、Ｖｎ：データＤｎの値、Ｔｎ＋１：データＤｎ＋１の時刻、Ｔｎ：データＤｎの時刻。なお、時刻Ｔｎ＋１やＴｎの単位はもともとのデータの取得間隔に合わせて設定し、同一の単位とする。具体的には例えば、もともとのデータの取得間隔が数分間隔であればどちらも分とし、一日に一回の取得間隔であればどちらも日とする。
【００７７】
更に、データＤｎ＋１の直後に取得したデータをデータＤｎ＋２とすると、データＤｎ＋１の１階微分値Ｄ'ｎ＋１を（式３）により算出する。
【００７８】
Ｄ'ｎ＋１＝（Ｖｎ＋２−Ｖｎ＋１）／（Ｔｎ＋２−Ｔｎ＋１）  …（式３）
ここに、Ｄ'ｎ＋１：データＤｎ＋１の１階微分値、Ｖｎ＋２：データＤｎ＋２の値、Ｖｎ＋１：データＤｎ＋１の値、Ｔｎ＋２：データＤｎ＋２の時刻、Ｔｎ＋１：データＤｎ＋１の時刻。
【００７９】
そして、データＤｎの２階微分値Ｄ''ｎを（式４）により算出する。
【００８０】
Ｄ''ｎ＝（Ｄ'ｎ＋１−Ｄ'ｎ）／｛（Ｔｎ＋２−Ｔｎ）／２｝  …（式４）
ここに、Ｄ''ｎ：データＤｎの２階微分値、Ｄ'ｎ＋１：データＤｎ＋１の１階微分値、Ｄ'ｎ：データＤｎの１階微分値、Ｔｎ＋２：データＤｎ＋２の時刻、Ｔｎ：データＤｎの時刻。
【００８１】
ここで、取得したデータには、イベントによるものではないが、例えば計測機器の計測誤差等によるノイズと呼ばれるデータの変動が含まれている場合がある。したがって、取得したデータの計測値をそのまま用いて１階微分値や２階微分値（以下適宜、単に微分値と表記する）を算出した場合、このノイズをイベントと誤認してしまうことも考えられる。そのため、データの微分値を算出する際に移動平均値を用いるようにしても良い。
【００８２】
具体的には、データＤｎの直前に取得したデータをデータＤｎ−１とすると、データＤｎの移動平均値Ｍｎを（式５）により算出し、データＤｎ＋１の移動平均値Ｍｎ＋１を（式６）により算出する。
【００８３】
Ｍｎ＝（Ｖｎ−１＋Ｖｎ＋Ｖｎ＋１）／３  …（式５）
ここに、Ｍｎ：データＤｎの移動平均値、Ｖｎ−１：データＤｎ−１の値、Ｖｎ：データＤｎの値、Ｖｎ＋１：データＤｎ＋１の値。
【００８４】
Ｍｎ＋１＝（Ｖｎ＋Ｖｎ＋１＋Ｖｎ＋２）／３  …（式６）
ここに、Ｍｎ＋１：データＤｎ＋１の移動平均値、Ｖｎ：データＤｎの値、Ｖｎ＋１：データＤｎ＋１の値、Ｖｎ＋２：データＤｎ＋２の値。
【００８５】
そして、移動平均値を用いたデータＤｎの１階微分値ＤＭ'ｎを（式７）により算出する。
【００８６】
ＤＭ'ｎ＝（Ｍｎ＋１−Ｍｎ）／（Ｔｎ＋１−Ｔｎ）  …（式７）
ここに、ＤＭ'ｎ：移動平均値を用いたデータＤｎの１階微分値、Ｍｎ＋１：データＤｎ＋１の移動平均値、Ｍｎ：データＤｎの移動平均値、Ｔｎ＋１：データＤｎ＋１の時刻、Ｔｎ：データＤｎの時刻。
【００８７】
更に、データＤｎ＋２の直後に取得したデータをデータＤｎ＋３とすると、データＤｎ＋２の移動平均値Ｍｎ＋２を（式８）により算出する。
【００８８】
Ｍｎ＋２＝（Ｖｎ＋１＋Ｖｎ＋２＋Ｖｎ＋３）／３  …（式８）
ここに、Ｍｎ＋２：データＤｎ＋２の移動平均値、Ｖｎ＋１：データＤｎ＋１の値、Ｖｎ＋２：データＤｎ＋２の値、Ｖｎ＋３：データＤｎ＋３の値。
【００８９】
そして、移動平均値を用いたデータＤｎ＋１の１階微分値ＤＭ'ｎ＋１を（式９）により算出する。
【００９０】
ＤＭ'ｎ＋１＝（Ｍｎ＋２−Ｍｎ＋１）／（Ｔｎ＋２−Ｔｎ＋１）  …（式９）
ここに、ＤＭ'ｎ＋１：移動平均値を用いたデータＤｎ＋１の１階微分値、Ｍｎ＋２：データＤｎ＋２の移動平均値、Ｍｎ＋１：データＤｎ＋１の移動平均値、Ｔｎ＋２：データＤｎ＋２の時刻、Ｔｎ＋１：データＤｎ＋１の時刻。
【００９１】
そして、移動平均値を用いたデータＤｎの２階微分値ＤＭ''ｎを（式１０）により算出する。
【００９２】
ＤＭ''ｎ＝（ＤＭ'ｎ＋１−ＤＭ'ｎ）／｛（Ｔｎ＋２−Ｔｎ）／２｝  …（式１０）
ここに、ＤＭ''ｎ：移動平均値を用いたデータＤｎの２階微分値、ＤＭ'ｎ＋１：移動平均値を用いたデータＤｎ＋１の１階微分値、ＤＭ'ｎ：移動平均値を用いたデータＤｎの１階微分値、Ｔｎ＋２：データＤｎ＋２の時刻、Ｔｎ：データＤｎの時刻。
【００９３】
そして、１階微分値、２階微分値、移動平均値を用いた１階微分値、移動平均値を用いた２階微分値（以降では、移動平均値を用いた微分値も含めて単に微分値と表記する）のうちのいずれか一つ若しくは二つ以上を算出し、算出した値をデータに付与する。
【００９４】
上記のＳ３−１の処理は時系列データを構成する全てのデータ毎に行う。ただし、例えば一番最初に取得したデータや一番最後に取得したデータ等について、微分値を算出するデータの前後のデータであって微分値の算出に必要なデータがない場合には微分値を付与しない。なお、データへの微分値の付与は、既に取得済みでデータベース等に保存している時系列データに対して微分値を一括して後付けするようにしても良いし、データを新たに取得してデータベース等に保存する際に逐次的に微分値を付与するようにしても良い。
【００９５】
次に、イベントの生起を判別するための閾値（以下、イベント判別閾値と表記する）を設定する（Ｓ３−２）。
【００９６】
イベント判別閾値はＳ３−１でデータ毎に付与した微分値を基にイベントの発生と終了を判別するための閾値であって、具体的には、微分値の絶対値がこの閾値以上になった場合にイベントが発生したと判別し、その後に微分値の絶対値がこの閾値未満になった場合にイベントが終了したと判別する。
【００９７】
イベント判別閾値は、例えば、データの内容や値の大きさ、或いは注目すべきイベントの種類とそのイベントに対応して想定されるデータの値の変化の大きさ等を考慮して作業者が適当なイベント判別閾値を設定する。
【００９８】
若しくは、Ｓ３−１で算出した微分値の統計情報を利用してイベント判別閾値を設定するようにしても良い。具体的には例えば、まず、時系列データを構成する全てのデータについて微分値を算出し、微分値の絶対値を大きい順に並べた微分値の順位データを作成する。そして、例えば作業者が微分値の絶対値が大きい上位１０％を抽出したい場合には上位１０％の順位に該当する微分値の絶対値をイベント判別閾値として設定するようにしても良い。
【００９９】
なお、イベントの検出のためには、データの１階微分値、２階微分値、移動平均値を用いた１階微分値、移動平均値を用いた２階微分値のいずれか一つのみを算出すると共にそのいずれか一つについてイベント判別閾値を設定するようにしても良いし、又は二つ以上の微分値を算出すると共にそれぞれについてイベント判別閾値を設定するようにしても良い。
【０１００】
以上の処理を行うことにより、図４の具体例の場合には、図４（Ｂ）に示すように、中黒二重丸のイベントデータ４を抽出することが可能となり、短時間３におけるデータの値の大きな変化を見落とすことなく時系列データを利用することが可能となる。
【０１０１】
以上のＳ１−１からＳ３−２までの処理によりデータ毎に原則として間引きタグと微分値のどちらか一方又は両方が付与され、データ毎の間引きタグ並びに微分値としてデータと対応させて保存する（Ｓ３−３）ことにより、時系列データの保存に関する処理は終了する。
【０１０２】
次に、時系列データの抽出に関する処理である時系列データを利用するための間引きデータ及びイベントデータの抽出とそれらデータの合成（Ｓ４）について図３に示すフローに従って説明する。
【０１０３】
まず、時系列データの抽出期間を設定する（Ｓ４−１）。時系列データの抽出期間は、例えば、もともとの時系列データの収集期間や作業の目的に対応して必要とされる時系列データの期間を考慮して作業者が適当な期間を設定する。
【０１０４】
そして、Ｓ２でデータ毎に付与した間引きタグの値Ｇに基づいて間引きデータの抽出を行う（Ｓ４−２、Ｓ４−３）。
【０１０５】
時系列データから間引きデータを抽出するための間引きタグの条件は、例えば、作業者が必要とするデータの時間間隔に基づいて設定する。必要とするデータの時間間隔は、例えば、もともとの時系列データの取得間隔や作業の目的並びに時系列データの抽出期間等を考慮して作業者が適当なデータの時間間隔を決定する。そして、例えば、作業者が必要とするデータの時間間隔が１０分間隔であれば間引きタグの条件として間引きタグの値Ｇが１２以上であることを設定し、日毎のデータが必要であれば間引きタグの値Ｇが３０以上であることを設定する。
【０１０６】
また、Ｓ４−１で設定した時系列データの抽出期間と間引きデータとして抽出するデータ数の上限とから（式１１）により算出した時間間隔Ｉを基に間引きタグの条件を設定するようにしても良い。
【０１０７】
Ｉ＝Ｓ／Ｎ  …（式１１）
ここに、Ｉ：時間間隔、Ｓ：時系列データの抽出期間、Ｎ：間引きデータとして抽出するデータ数の上限。なお、Ｉ及びＳの単位は例えば［分］など時間の単位であって両者は同一の単位とする。
【０１０８】
ここで、間引きデータとして抽出するデータ数の上限は、例えば、処理・加工等することができるデータ数の上限及びイベントデータとして抽出されるデータ数の想定に基づいて作業者が適当な間引きデータ数の上限を決定する。
【０１０９】
そして、（式１１）により算出した時間間隔Ｉ以上であって且つ最も小さい時刻の区切りの種類を選定する。
【０１１０】
具体的には例えば、時系列データの抽出期間が１年間で、間引きデータとして抽出するデータ数の上限を５０００個とした場合には、時系列データの抽出期間Ｓが５２５６００［分］となるので（式１１）から時間間隔Ｉは１０５．１２［分］となる。したがって、表１の中から１０５．１２［分］以上であって且つ最も小さい時刻の区切りの種類を選定すると２時間毎となる。よって、間引きタグの条件は、間引きタグの値Ｇが２１以上で且つ２２でないこととなる。
【０１１１】
そして、データに付与した間引きタグの値Ｇが間引きタグの条件を満たす場合（Ｓ４−３；Ｙｅｓ）にはそのデータを抽出する（Ｓ４−６）。一方、間引きタグの値Ｇが間引きタグの条件を満たさない場合（Ｓ４−３；Ｎｏ）には次の処理（Ｓ４−４）に移る。
【０１１２】
続いて、イベントデータの抽出をＳ３−１でデータ毎に付与した微分値とＳ３−２で設定したイベント判別閾値を比較することにより行う（Ｓ４−４）。
【０１１３】
そして、微分値の絶対値がイベント判別閾値以上の場合（Ｓ４−４；Ｙｅｓ）にはそのデータを抽出する（Ｓ４−６）。一方、微分値の絶対値がイベント判別閾値未満の場合（Ｓ４−４；Ｎｏ）にはそのデータは抽出しない（Ｓ４−５）。
【０１１４】
上記のＳ４−２からＳ４−６までの処理を時系列データを構成する全てのデータ毎に行い、間引きデータ及びイベントデータを抽出する。そして抽出した全てのデータを時刻順に並べる（Ｓ４−７）ことにより間引き条件に合致すると共にイベントに対応したデータが抽出された時系列データが得られ、時系列データの抽出に関する処理は終了する。
【０１１５】
上述の時系列データの保存及び抽出方法は時系列データの保存及び抽出プログラム１３をコンピュータ上で実行することによっても実現される。この実施の一例を以下に示す。
【０１１６】
時系列データの保存及び抽出プログラム１３を実行するための時系列データの保存及び抽出装置５の全体構成を図５に示す。時系列データの保存及び抽出装置５は、制御部６、記憶部７、入力部８、表示部９及びメモリ１０を備え相互にバス等の信号回線により接続されている。また、時系列データの保存及び抽出装置５にはデータベース１１及び保存用データベース１２が通信回線等により接続されており、その通信回線等を介して相互にデータや制御指令等の信号の送受信（出入力）が行われる。
【０１１７】
制御部６は  記憶部７に記憶されている時系列データの保存及び抽出プログラム１３により時系列データの保存及び抽出装置５全体の制御並びに時系列データの保存及び抽出に係る演算を行うものであり、例えばＣＰＵである。記憶部７は少なくともデータやプログラムを記憶可能な装置であり、例えばハードディスクである。入力部８は少なくとも作業者の命令を制御部６に与えるためのインターフェイスであり、例えばキーボードである。表示部９は制御部６の制御により文字や図形等の表示を行うものであり、例えばディスプレイである。メモリ１０は制御部６が各種制御を実行する際に作業領域となるメモリ空間となる。データベース１１や保存用データベース１２は少なくともデータを記憶可能な装置であり、例えばデータサーバである。
【０１１８】
時系列データの保存及び抽出装置５の制御部６は、時系列データの保存及び抽出プログラム１３を実行することにより、データに付与する間引きタグを設定するタグ設定部６ａ、データの範囲の時刻を算出する第一の時刻算出部６ｂ、データの範囲に時刻の区切りが入っているか否かを判断する第一の時刻の区切り判定部６ｃ、最も上位の時刻のオーダーの種類の中で最も上位の時刻の区切りの種類を選定する選定部６ｄ、時刻の区切りの範囲の時刻を算出する第二の時刻算出部６ｅ、時刻の区切りの範囲にデータの時刻が入っているか否かを判断するデータの時刻判定部６ｆ、データに間引きタグを付与するタグ付与部６ｇ、データの範囲に下位の時刻の区切りの種類が入っているか否かを判断する第二の時刻の区切り判定部６ｈ、データの微分値を算出する微分値算出部６ｉ、イベント判別閾値を設定する閾値設定部６ｊ、時系列データの中から間引きデータを抽出する間引きデータ抽出部６ｋ、時系列データの中からイベントデータを抽出するイベントデータ抽出部６ｍが構成される。
【０１１９】
なお、データベース１１には、例えば各種の計測機器が計測した複数時点の計測データや演算機器が算出した複数時点の統計データが時系列データとして保管されている。そして、この時系列データを構成する各データにはデータ値とデータ時刻情報とが少なくとも含まれている。
【０１２０】
まず、時系列データを保存する際（Ｓ１〜Ｓ３）の時系列データの保存及び抽出プログラム１３の処理内容について説明する。
【０１２１】
制御部６のタグ設定部６ａは、Ａタグ及びＢタグの設定の内容を例えば入力部８により入力して予め記憶部７に記憶しておく（Ｓ１−１、Ｓ１−２）。更に、時刻のオーダーの種類毎の時刻の区切りの種類別に（式１）を用いて間引きタグの値Ｇを算出すると共に算出した間引きタグの値Ｇを記憶部７又はメモリ１０に記憶する。なお、Ａタグ及びＢタグの設定の内容とは、時刻のオーダーの種類とその種類別のＡタグの値、及び時刻のオーダーの種類毎の時刻の区切りの種類とその種類別のＢタグの値である。
【０１２２】
次に、制御部６の第一の時刻算出部６ｂは、データＤｎ−１、Ｄｎ、Ｄｎ＋１をデータベース１１から読み込み（Ｓ２−１）、データＤｎの範囲の時刻Ｔｎ−１／２と時刻Ｔｎ＋１／２を算出する（Ｓ２−２）。そして、データＤｎ−１、Ｄｎ、Ｄｎ＋１をメモリ１０に記憶すると共に算出した時刻Ｔｎ−１／２と時刻Ｔｎ＋１／２を記憶部７又はメモリ１０に記憶する。
【０１２３】
続いて、制御部６の第一の時刻の区切り判定部６ｃは、記憶部７に記憶しているＡタグ及びＢタグの設定の内容及びＳ２−１で記憶部７又はメモリ１０に記憶した時刻Ｔｎ−１／２と時刻Ｔｎ＋１／２を読み込む。そして、データＤｎの範囲である時刻Ｔｎ−１／２から時刻Ｔｎ＋１／２の間に時刻の区切りが入っているか否かを判断する（Ｓ２−３）。
【０１２４】
そして、データＤｎの範囲に時刻の区切りが入っていない場合（Ｓ２−３；Ｎｏ）には、データＤｎには間引きタグを付与せずにデータＤｎに対する間引きタグの付与の処理を終了する（Ｓ２−９）。なお、この場合は、データＤｎはタグが付与されない状態で保存用データベース１２に保存される。
【０１２５】
一方、データＤｎの範囲に時刻の区切りが入っている場合（Ｓ２−３；Ｙｅｓ）には、制御部６の第一の時刻の区切り判定部６ｃの判定結果に基づき、制御部６の選定部６ｄは、データＤｎの範囲に入っている時刻の区切りの種類のうち最も上位の時刻のオーダーの種類の中で最も上位の時刻の区切りの種類Ｓｉを選定する（Ｓ２−４）と共にその時刻の区切りの種類Ｓｉの時刻の区切りＳｉ・ｋを選定する（Ｓ２−５）。そして、選定した時刻の区切りの種類Ｓｉ及び時刻の区切りＳｉ・ｋを記憶部７又はメモリ１０に記憶する。
【０１２６】
次に、制御部６の第二の時刻算出部６ｅは、記憶部７に記憶しているＡタグ及びＢタグの設定の内容並びにＳ２−４及びＳ２−５で記憶部７又はメモリ１０に記憶した時刻の区切りの種類Ｓｉ及び時刻の区切りＳｉ・ｋを読み込む。そして、時刻の区切りＳｉ・ｋの範囲の時刻Ｓｉ・ｋ−１／２と時刻Ｓｉ・ｋ＋１／２を算出する（Ｓ２−６）。更に、算出した時刻Ｓｉ・ｋ−１／２及び時刻Ｓｉ・ｋ＋１／２を記憶部７又はメモリ１０に記憶する。
【０１２７】
次に、制御部６のデータの時刻判定部６ｆは、Ｓ２−１でメモリ１０に記憶したデータＤｎ並びにＳ２−６で記憶部７又はメモリ１０に記憶した時刻Ｓｉ・ｋ−１／２及び時刻Ｓｉ・ｋ＋１／２を読み込み、時刻の区切りＳｉ・ｋの範囲である時刻Ｓｉ・ｋ−１／２から時刻Ｓｉ・ｋ＋１／２の間にデータＤｎの時刻Ｔｎが入っているか否かを判断する（Ｓ２−７）。
【０１２８】
そして、時刻の区切りＳｉ・ｋの範囲に時刻Ｔｎが入っている場合（Ｓ２−７；Ｙｅｓ）には、制御部６のデータの時刻判定部６ｆの判定結果に基づき、タグ付与部６ｇはＳ１−１・Ｓ１−２で記憶部７又はメモリ１０に記憶した時刻のオーダーの種類毎の時刻の区切りの種類別の間引きタグの値Ｇの中から時刻の区切りＳｉ・ｋの間引きタグの値Ｇを読み出してデータＤｎの間引きタグの値とし（Ｓ２−１０）、データＤｎ及び間引きタグの値Ｇを保存用データベース１２に記憶する。なお、本実施形態では、間引きタグの付与が終了したデータを保存用データベース１２に保存するようにしているが、もともとの時系列データが保管されているデータベース１１に保存するようにしても良いし、時系列データの保存及び抽出装置５の記憶部７に保存するようにしても良い。
【０１２９】
一方、時刻の区切りＳｉ・ｋの範囲に時刻Ｔｎが入っていない場合（Ｓ２−７；Ｎｏ）には、制御部６の第二の時刻の区切り判定部６ｈは、記憶部７に記憶しているＡタグ及びＢタグの設定の内容及びＳ２−２で記憶部７又はメモリ１０に記憶した時刻Ｔｎ−１／２と時刻Ｔｎ＋１／２を読み込む。そして、データＤｎの範囲である時刻Ｔｎ−１／２から時刻Ｔｎ＋１／２の間に時刻の区切りの種類Ｓｉの下位の時刻の区切りの種類が入っているか否かを判断する（Ｓ２−８）。
【０１３０】
そして、データＤｎの範囲に下位の時刻の区切りの種類が入っている場合（Ｓ２−８；Ｙｅｓ）には、制御部６の第二の時刻の区切り判定部６ｈの判定結果に基づき、選定部６ｄがその時刻の区切りの種類の時刻の区切りを選定する処理（Ｓ２−５）に戻る。
【０１３１】
一方、データＤｎの範囲に下位の時刻の区切りの種類が入っていない場合（Ｓ２−８；Ｎｏ）には、データＤｎには間引きタグを付与せずにデータＤｎに対する間引きタグの付与の処理を終了する（Ｓ２−９）。なお、この場合は、データＤｎはタグが付与されない状態で保存用データベース１２に保存される。
【０１３２】
時系列データの保存及び抽出プログラム１３は上記のＳ２−１からＳ２−１０までの処理をデータベース１１に保管されている時系列データを構成する全てのデータ毎に行い、全てのデータについてＳ２−１からＳ２−１０までの処理が終了した場合に間引きタグの付与の処理を終了する。
【０１３３】
次に、制御部６の微分値算出部６ｉは、データＤｎとＤｎ＋１をメモリ１０又はデータベース１１から読み込み、（式２）によりデータＤｎの１階微分値Ｄ'ｎを算出する。更にデータＤｎ＋２をデータベース１１から読み込み、（式３）によりデータＤｎ＋１の１階微分値Ｄ'ｎ＋１を算出して（式４）によりデータＤｎの２階微分値Ｄ''ｎを算出する（Ｓ３−１）。
【０１３４】
また、移動平均値を用いたデータＤｎの１階微分値ＤＭ'ｎを算出する場合には、制御部６の微分値算出部６ｉは、データＤｎ−１、Ｄｎ、Ｄｎ＋１、Ｄｎ＋２、Ｄｎ＋３をメモリ１０又はデータベース１１から読み込み、（式５）によりデータＤｎの移動平均値Ｍｎを算出すると共に（式６）によりデータＤｎ＋１の移動平均値Ｍｎ＋１を算出して（式７）により移動平均値を用いたデータＤｎの１階微分値ＤＭ'ｎを算出する。更に、（式８）によりデータＤｎ＋２の移動平均値Ｍｎ＋２を算出すると共に（式９）により移動平均値を用いたデータＤｎ＋１の１階微分値ＤＭ'ｎ＋１を算出して（式１０）により移動平均値を用いたデータＤｎの２階微分値ＤＭ''ｎを算出する（Ｓ３−１）。
【０１３５】
そして、算出した微分値をデータＤｎの微分値として保存用データベース１２に保存する。なお、Ｓ３−１で算出する微分値の種類については、例えば、時系列データの保存及び抽出プログラム１３上前述の全ての微分値を必ず算出するようにしても良いし、又は算出する微分値の種類の指定を要求する内容のメッセージをＳ３−１で処理する段階で表示部９に表示すると共に作業者の指定を入力部８を介して微分値算出部６ｉに与えるようにしても良い。
【０１３６】
時系列データの保存及び抽出プログラム１３は上記のＳ３−１の処理をデータベース１１に保存されている時系列データを構成する全てのデータ毎に行い、全てのデータについてＳ３−１の処理が終了した場合に微分値の算出の処理を終了する。
【０１３７】
次に、イベント判別閾値の設定（Ｓ３−２）について、微分値の統計情報を利用して閾値を設定する場合には、制御部６の閾値設定部６ｊは、保存用データベース１２に保存されている時系列データを構成する全てのデータについて微分値を読み込み、微分値の絶対値を大きい順に並べたデータを作成する。そして、微分値の上位割合の順位に該当する微分値の絶対値をイベント判別閾値として設定し、設定したイベント判別閾値を記憶部７に記憶する。なお、微分値の上位割合は、例えば、予め入力部８により入力して記憶部７に記憶した値を読み込むようにしても良いし、又は微分値の上位割合の指定を要求する内容のメッセージをＳ３−２を処理する段階で表示部９に表示すると共に作業者が指定した値を入力部８を介して閾値設定部６ｊに与えるようにしても良い。
【０１３８】
一方、イベント判別閾値の設定（Ｓ３−２）について、微分値の統計情報を利用しない場合には、例えば、イベント判別閾値を入力部８により入力して記憶部７に予め記憶しておくようにしても良いし、又はイベント判別閾値の指定を要求する内容のメッセージを後述するＳ４−４を処理する段階で表示部９に表示すると共に作業者が指定する値を入力部８を介して制御部６のイベントデータ抽出部６ｍに与えるようにしても良い。
【０１３９】
以上のＳ１−１からＳ３−２までの処理によりデータ毎に原則として間引きタグと微分値のどちらか一方又は両方が付与され、データ毎の間引きタグ、微分値としてデータと対応させて保存用データベース１２に保存する（Ｓ３−３）ことにより、時系列データの保存に関する処理は終了する。
【０１４０】
続いて、上記により保存された時系列データを利用するためにデータを抽出及び合成する際（Ｓ４）の時系列データの保存及び抽出プログラム１３の処理内容について説明する。
【０１４１】
制御部６の間引きデータ抽出部６ｋは、時系列データの抽出期間Ｓの指定を要求する内容のメッセージを表示部９に表示すると共に作業者が指定する値を入力部８を介して入力する（Ｓ４−１）。そして、時系列データの抽出期間Ｓの値を記憶部７又はメモリ１０に記憶する。
【０１４２】
次に、制御部６の間引きデータ抽出部６ｋは、保存用データベース１２に保存しているデータ毎のデータの値並びに間引きタグの値及び微分値を読み込み（Ｓ４−２）、間引きタグの値が間引きタグの条件を満たすか否かを判断する（Ｓ４−３）。ここで、間引きタグの条件の設定方法としては、例えば、以下の二つの方法が考えられる。
【０１４３】
一つの方法は、まず、Ｓ４−１の時系列データの抽出期間Ｓの値の入力の後に間引きデータの時間間隔の指定を要求する内容のメッセージを表示部９に表示すると共に作業者が指定する時間間隔を入力部８を介して間引きデータ抽出部６ｋに与える。また、間引きデータ抽出部６ｋはＳ１−１・Ｓ１−２で記憶部７又はメモリ１０に記憶した時刻のオーダーの種類毎の時刻の区切りの種類別の間引きタグの値Ｇを読み込む。そして、作業者の指定の時間間隔に合う間引きタグの値Ｇを選定して間引きタグの条件として設定する。
【０１４４】
もう一つの方法は、まず、Ｓ４−１の時系列データの抽出期間Ｓの値の入力の後に間引きデータとして抽出するデータ数の上限Ｎの指定を要求する内容のメッセージを表示部９に表示すると共に作業者が指定する値を入力部８を介して間引きデータ抽出部６ｋに与える。また、間引きデータ抽出部６ｋはＳ４−１で記憶部７又はメモリ１０に記憶した時系列データの抽出期間Ｓの値を読み込む。そして、間引きデータ抽出部６ｋは（式１１）により時間間隔Ｉを算出する。更に、間引きデータ抽出部６ｋはＳ１−１・Ｓ１−２で記憶部７又はメモリ１０に記憶した時刻のオーダーの種類毎の時刻の区切りの種類別の間引きタグの値Ｇを読み込み、時間間隔Ｉ以上であって且つ最も小さい時刻の区切りの種類の間引きタグの値Ｇを選定して間引きタグの条件として設定する。
【０１４５】
そして、データの間引きタグの値が間引きタグの条件を満たす場合（Ｓ４−３；Ｙｅｓ）には、制御部６の間引きデータ抽出部６ｋはそのデータを抽出対象のデータとして記憶部７に記憶する（Ｓ４−６）。
【０１４６】
一方、データの間引きタグの値が間引きタグの条件を満たさない場合（Ｓ４−３；Ｎｏ）には、制御部６の間引きデータ抽出部６ｋは保存用データベース１２から読み込んだデータの値並びに間引きタグの値及び微分値を制御部６のイベントデータ抽出部６ｍに与える。
【０１４７】
イベントデータ抽出部６ｍはデータの微分値がイベント判別閾値以上か否かを判断する（Ｓ４−４）。ここで、イベント判別閾値については、前述の通り、例えば、Ｓ３−２で記憶部７に記憶した微分値の統計情報に基づくイベント判別閾値を読み込むようにしても良いし、入力部８により入力して記憶部７に予め記憶しておいたイベント判別閾値を読み込むようにしても良いし、又はイベント判別閾値の指定を要求する内容のメッセージをＳ４−４を処理する段階で表示部９に表示すると共に作業者が指定する値を入力部８を介してイベントデータ抽出部６ｍに与えるようにしても良い。
【０１４８】
そして、データの微分値の絶対値がイベント判別閾値以上の場合（Ｓ４−４；Ｙｅｓ）には、制御部６のイベントデータ抽出部６ｍはこのデータを抽出対象のデータとして記憶部７に記憶する（Ｓ４−６）。
【０１４９】
一方、データの微分値の絶対値がイベント判別閾値未満の場合（Ｓ４−４；Ｎｏ）には、このデータを抽出対象のデータとはしないでこのデータについてのデータ抽出の処理を終了する（Ｓ４−５）。なお、この場合は、このデータは記憶部７には記憶されない。
【０１５０】
時系列データの保存及び抽出プログラム１３は上記のＳ４−２からＳ４−６までの処理を保存用データベース１２に保存されている時系列データを構成する全てのデータ毎に行い、全てのデータについてＳ４−２からＳ４−６までの処理が終了した場合に時系列データの抽出の処理を終了する。
【０１５１】
なお、このようにして保存用データベース１２から抽出されて記憶部７に記憶された抽出データは、例えば、抽出データの推移の状況を表す折れ線グラフ等を描画するデータとして利用しても良いし、抽出データについての統計値を算出するデータとして利用しても良い。また更に、このように例えばグラフを描画したり統計値を算出したりする機能を本発明の時系列データの保存及び抽出プログラム１３に追加するようにしても良い。
【０１５２】
なお、上述の形態は本発明の好適な形態の一例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々変形実施可能である。
【図面の簡単な説明】
【０１５３】
【図１】本発明の時系列データの保存及び抽出方法並びにプログラムの実施形態の一例を説明するフローチャートである。
【図２】本実施形態の時系列データの保存に関する処理を説明するフローチャートである。
【図３】本実施形態の時系列データの抽出に関する処理を説明するフローチャートである。
【図４】本実施形態のデータの変化の状況を示す図である。
【図５】本実施形態の時系列データの保存及び抽出方法をプログラムを用いて実施する場合の時系列データの保存及び抽出装置の全体構成図である。
【図６】従来の時系列データの保存方法を説明する概念図である。
【符号の説明】
【０１５４】
２  間引きデータ
４  イベントデータ
５  時系列データの保存及び抽出装置
６  制御部
７  記憶部
８  入力部
９  表示部
１０  メモリ
１１  データベース
１２  保存用データベース
１３  時系列データの保存及び抽出プログラム
【図１】
0004790371.tif 000005
【図２】
0004790371.tif 000006
【図３】
0004790371.tif 000007
【図４】
0004790371.tif 000008
【図５】
0004790371.tif 000009
【図６】
0004790371.tif 000010