Cognos 直近数時間・数日の結果を自動レポート保存する方法

Cognos BI & Analyticsで、PDFやExcel,HTML形式などで、レポートの保存を行う際に、日時のプロンプトを使用していて、常に直近3時間とか、直近数日の結果を自動的に指定して、保存したいという要件が良くあります。
レポート内にフィルターを設定して、期間を固定してしまえばできますが、レポートが固定になってしまうので、今回はEvent Studioを用いた柔軟性のある方法をご紹介します。

##レポートイメージ
例としてのレポートのイメージは、こんな感じです。
レポートを実行すると、日時のプロンプトで、From日時とTo日時が選択されるとします。
![001.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/13f4c6bf-d07f-0b30-3766-7f0e3426bb3d.png)

レポートの表示イメージは、こんな感じです。
![002.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/ca49055f-79bd-6e45-8c42-8c4c169eecc4.png)

##実装方法
さてこの状態で、直近3時間のデータに絞ってレポート保存したいと思います。
つまり、To日時のプロンプトに「現在時刻」、From日時のプロンプトに「3時間前の時刻」が入れば良いわけです。

まずは、Framework Managerで、以下のように「現在」
![003.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/d47be8e8-444e-e016-c56b-774e129bb3a2.png)

「3時間前」のデータアイテムを作成します。
![004.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/77ffd53e-5e1b-9fb5-e3fe-8ba70d5dcb3a.png)

次にEvent Studioを開き、「タスクの追加」から「レポートの実行」を追加し、先ほどのレポートを指定します。
オプション：のところで、レポートをPDF保存する指定をしています。
プロンプト値：のところが本題で、pFrom(From日時)のところで、メソッドに「アイテムを使用」を選択し、値に先ほどFMで作成した[3時間前]を置いています。
pToも同様に[現在]を置いています。
![005.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/b58e7064-ac30-3e79-64b9-dbe41cb75848.png)

後はこのEvent Studioのエントリーをスケジュール実行するだけです。

結果のイメージですが、2017/2/8 17:46:04に実行したレポートでは、直近3時間なので、14:47:00のデータも入っています。
![006.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/1c6e9a89-3884-f787-3ce1-c0a799714f2b.png)

2017/2/8 17:47:03に実行したレポートでは、以下の通り14:47:00のデータは入りません。
![007.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/df82480d-fcfc-6f44-a264-13c63df1e53f.png)

このようにEvent Studioを使用する事で、レポートの定義を変えなくても、プロンプトの時間指定が柔軟に行えます。

参考までに、以下のデータアイテムをFramework Managerで作成すれば、直近3時間以外にも、色々な指定ができますので、是非ご活用下さい。

**本日の最初から**
\_make_timestamp ( 
 extract ( year,localtimestamp ),
 extract ( month,localtimestamp ),
 extract ( day,localtimestamp )
)

**本日の最後まで**
\_add_seconds (_make_timestamp ( 
 extract ( year,localtimestamp ),
 extract ( month,localtimestamp ),
 extract ( day,localtimestamp )
),86399)

**昨日の最初から**
\_make_timestamp ( 
 extract ( year,\_add_days ( localtimestamp, -1) ),
 extract ( month,\_add_days ( localtimestamp, -1) ),
 extract ( day,\_add_days ( localtimestamp, -1) )
)

**10日前**
\_make_timestamp ( 
 extract ( year,\_add_days ( localtimestamp, -9) ),
 extract ( month,\_add_days ( localtimestamp, -9) ),
 extract ( day,\_add_days ( localtimestamp, -9) )
)

**今月の初日**
\_make_timestamp ( 
 extract ( year,\_first_of_month ( localtimestamp ) ),
 extract ( month,\_first_of_month ( localtimestamp ) ),
 extract ( day,\_first_of_month ( localtimestamp ) )
)

**今月の最後**
\_add_seconds (  \_make_timestamp ( 
 extract ( year,\_last_of_month ( localtimestamp ) ),
 extract ( month,\_last_of_month ( localtimestamp ) ),
 extract ( day,\_last_of_month ( localtimestamp ) )
),86399)

**先月の初日**
\_make_timestamp ( 
 extract ( year,\_first_of_month ( \_add_months ( localtimestamp ,-1))),
 extract ( month,\_first_of_month ( \_add_months ( localtimestamp ,-1))),
 extract ( day,\_first_of_month ( \_add_months ( localtimestamp ,-1)) )
)

**先月の最後**
\_add_seconds (  \_make_timestamp ( 
 extract ( year,\_last_of_month ( \_add_months ( localtimestamp ,-1))),
 extract ( month,\_last_of_month ( \_add_months ( localtimestamp ,-1))),
 extract ( day,\_last_of_month ( \_add_months ( localtimestamp ,-1)) )
), 86399)