PI OLEDB Enterprise 定間隔ヒストリデータでの ‘1y’ 及び ‘1mo’ について

以下のコンテンツに関連する内容です。

PI OLEDB Enterpriseで定間隔ヒストリデータ取得時に範囲より広い時間間隔を指定した場合の挙動について

 

■ 概要

PI OLEDB Enterprise にて 定間隔ヒストリデータ を取得するため、

[Data].[ft_InterpolateRange] からデータ取得をしております。

 

[Data].[ft_InterpolateRange].TimeStep に’1y’ 又は ‘1mo’ を指定した時に、

Time列に意図しない時間が入ってくることがあります。(下図参照)

 

□ '1y' を指定した場合


01_sql_1y.png.png

 

□ '1mo' を指定した場合


02_sql_1mo.png.png

 

 

これは PI OLEDB Enterprise の仕様と考えて良いでしょうか?

仕様である場合、どういった仕様になっているのか記載されたドキュメント等を教えていただけないでしょうか。

 

 

 

以下は補足情報です。

■ PI DataLink で同じ内容を取得した場合

意図した通りの時間が返ってきました。

 

□ ‘1y’ の場合


03_datalink_1y.png.png

 

□ ‘1mo’ の場合


04_datalink_1mo.png.png

 

■ 調べた内容□ ‘1y’ について

・ うるう年の 2/29 を範囲に含んでいると意図した日時で取得できる

“2019/03/01 00:00:00” ~ “2020/03/01 00:00:00” ⇒ OK

“2019/02/01 00:00:00” ~ “2020/02/01 00:00:00” ⇒ NG

・ うるう年の 2/29 を範囲に含まない場合、365日 + 6時間以上の範囲を指定すれば意図した日時で取得できる

“2019/02/01 00:00:00” ~ “2020/02/01 06:00:00” ⇒ OK

“2019/02/01 00:00:00” ~ “2020/02/01 05:59:59” ⇒ NG

※ この例で取得できたのは、”2019/02/01 00:00:00” と “2020/02/01 00:00:00” の2レコード

※ 6時間というのは、うるう年を考慮した時間と考えると計算が合う

((365日 * 4年) + 1日) / 4年 = 365日 + 6時間

・ 上記の結果から、’1y’の定義が2種類あるのではないかと思われる

うるう年を考慮した時間 ⇒ 取得期間と指定間隔の関係性チェック

きっちり1年(うるう年も含めて正しい1年) ⇒ 実際に取得する間隔

 

□ ‘1mo’ について

・ 2月の場合(1ヶ月が28日の場合)

“2019/02/01 00:00:00” ~ “2019/03/01 00:00:00” ⇒ NG

 

“2019/02/01 00:00:00” ~ “2019/03/02 00:00:00” ⇒ NG

 

“2019/02/01 00:00:00” ~ “2019/03/03 00:00:00” ⇒ OK

 

※ この例で取得できたのは、”2019/02/01 00:00:00” と “2019/03/01 00:00:00” の2レコード

・ うるう年の2月の場合(1ヶ月が29日の場合)

“2020/02/01 00:00:00” ~ “2020/03/01 00:00:00” ⇒ NG

 

“2020/02/01 00:00:00” ~ “2020/03/02 00:00:00” ⇒ OK

 

※ この例で取得できたのは、”2020/02/01 00:00:00” と “2020/03/01 00:00:00” の2レコード

・ 上記の結果から、’1mo’の定義が2種類あるのではないかと思われる

30日 ⇒ 取得期間と指定間隔の関係性チェック

 

きっちり1月(28日~31日で変動) ⇒ 実際に取得する間隔