SSRSのデータセットにRedmineのチケット情報を読み込む
前の記事で、データソースにRedmine Rest Api を指定したので、これを使用して、データセットにチケット情報を読み込む方法を調査しました。Visual Studio上でプレビューして動作を確認しています。
検証環境
- SQL Server 2017 Standard の Reporting Services
- Visual Studio 2017 Professional
- Redmine 3.4.8
データセットの読み込み
実は、データソースに指定したURLが、チケット番号を指定して情報を取得するAPIのURLなので、データセットではデータソースを選択するだけで、いくらかの情報は取得できます。
しかし、余分な情報はデータセットの時点で削っておきたい!XMLデータの場合は、SQLの代わりに要素パス構文というのを使用します。
詳しい内容は、リンク先を読んでもらうとして、今回は「カスタムフィールドの一覧を取得する」データセットと「チケットのステータスを取得する」データセットの二つを作成しました。
カスタムフィールドの一覧を取得する
要素パス構文で記述したクエリ
issue {}/custom_fields {}/custom_field {@id,@name}/value
実行結果(カスタムフィールド数分表示される)
id | name | value |
---|---|---|
1 | カスタムフィールド名A | カスタムフィールド値1 |
2 | カスタムフィールド名B | カスタムフィールド値2 |
チケットのステータスを取得する
要素パス構文で記述したクエリ
issue {id,subject,created_on,updated_on}/status {@name}
実行結果
id | subject | created_on | updated_on | name |
---|---|---|---|---|
100 | チケット名1 | チケット作成日時 | チケット更新日時 | ステータス値 |
データの絞り込み
チケットのステータスを取得するクエリは、1レコードしか返ってこないけれど、カスタムフィールドの一覧を取得するクエリは複数レコード返ってきます。1つのカスタムフィールドの値を取得したい場合もあるでしょう。
要素パス構文には、条件による絞り込みの機能は無さそうなので、この場合、データセットのフィルターを使用します。データセットのプロパティからフィルターを開いて「id = 数値」のように指定して絞り込む事が出来ます。
以上です。