新しいレポートの作成

新しいカスタム レポートを作成するには:

1    [レポート] ディレクトリ ツリーで、新しいレポートを追加するフォルダ([要件]、[テスト計画]、[問題] など)を選択します。これにより、ディレクトリ ツリー内でレポートが保存される場所が決まります。

2    ツールバーの [子レポートの新規作成] ボタンをクリックします。

3    [レポートの新規作成] ダイアログで、新しく作成するレポートの名前を入力します。この名前は、[レポート] ツリーに表示されます。

4    他のユーザーもこのレポートを使う場合には、[このレポートを他のユーザーと共有する] チェック ボックスをオンにします。

5    [説明] フィールドにレポートの説明を入力します。

6    Issue Manager でレポート実行の完了を待機する最大時間を指定するには、タイムアウト設定(秒)を [タイムアウト] フィールドに入力します。

7    [結果カテゴリ] ドロップダウン リストから、結果種別を選択します。この設定では、レポート作成時にフィルタ対象になるデータベース テーブルおよびビューを指定します。選択できる結果の種類は以下のとおりです。

-   [問題] - 問題を返します(インポートされた問題を含む)。

-   [アーカイブされた問題] - アーカイブされた問題を返します。

8    結果種別ごとに一連の選択基準が用意されています。選択した [結果カテゴリ] に合わせて、レポートで使用する [選択基準] を指定します。通常、これらの選択基準は、ビューやその他の直感的なグループ化(カスタム プロパティなど)によって、プロパティを分類するためのものです。

9    [プロパティ] ドロップダウン リストから、フィルタを適用するプロパティを選択します。選択基準の中には、プロパティが動的なものもあります(カスタム テスト定義プロパティなど)。

10    クエリの [演算子] を選択します。選択可能な演算子はプロパティによって異なります。演算子には、=、不一致、>、<、>=、<=、部分一致、部分不一致があります。文字列は常に小文字で比較します。文字列で利用できるワイルド カードは * と ? です(* は任意の数の文字に、? は必ず 1 つの文字に一致します)。

11    クエリの絞り込みで使用する [値] を選択します。

12    (省略可能)レポートにクエリ文字列を追加するには、[1 つ追加] ボタンをクリックします。既存のクエリ文字列は、文字列の [削除] アイコンをクリックすると削除できます。複数文字列を定義するとき、[AND][OR] ラジオ ボタンが [1 つ追加] ボタンの横に表示されます。このラジオ ボタンで、すべての基準を満たすクエリを行うのか(AND)、クエリ文字列の基準の 1 つだけを満たせばよいのか(OR)を定義します。

13    [次へ] をクリックし、[レポートの新規作成] ダイアログでレポートの列を設定します。

14    [列の追加] ボタンをクリックして [列の追加] ダイアログを開きます。使用できるレポートの列がすべて表示されます。レポートに含める対象を選択し、[OK] をクリックします(CTRL キーを押したまま選択すると複数の列を選択できます)。

メモ: [すべて削除] ボタンをクリックすると、レポートからすべての列を削除できます。

15    選択した列が [レポートの新規作成] ダイアログに表形式で表示されます。ここで、各レポート列の表示方法を設定できます。列ごとに、 [ソート] 列の上下の矢印を使って、ソートの方向([昇順]、[降順]、[ソートなし])を指定します。

16    列をソート対象に指定すると、[ソート順序] の列にドロップダウン リストが表示されます。 それを使うと、列のソート順を簡単に指定できます。必要に応じて番号を設定します。

17    各列にエイリアスを指定します。これは生成レポートで各列に付けられるラベルの名前です。

18    [グループ化] によって SQL の集約機能を利用できます(複数の要素の選択、合計値の問い合わせなど)。列の選択ダイアログで [グループ化] チェック ボックスをオンにし、SQL の GROUP BY 機能を使うことを指定します。

19    SQL の GROUP BY 機能の対象に選択されていない列は、自動的に集約に設定されます(つまり、1 つの合計値が計算されます)。[集約] ドロップダウン リストから、適切な集約方法を選択します([件数]、[合計値]、[平均値]、[最小値]、[最大値]、[標準偏差])。

20    [アクション] の列を使うと、ビューの中で列の並びを上下に移動できます。[上へ移動] および [下へ移動] を使う場合でもレポートの結果には影響しません。

メモ: レポートの列は、列の [削除] アイコンをクリックすると削除できます。

21    [完了] をクリックして新しいレポートを完了します。

詳細クエリの記述

手作業で SQL をコーディングすると、詳細なレポートを作成することができます。データベース スキーマの内容を知っている場合には、ほとんどどのようなレポートでも作成できます。[詳細クエリ モード] ボタンをクリックすると、前のセクションで説明したクエリ文字列のドロップダウン リストが消え、[レポート データ クエリ] フィールドが現れます。そこに既存のコードを入力したり新規に SQL コードを記述することができます。

先に説明したようにドロップダウン リストを使ってクエリ文字列を作成し(レポート基準が有効であれば、それに相当する SQL 文が生成され表示されます)、それから詳細クエリ モードに移って修正を加える、という方法も良いでしょう。

メモ: 詳細クエリモードから簡易モードに戻ることはできません。

SQL で詳細クエリを直接記述するには:

1    [レポート] ディレクトリ ツリーで、新しいレポートを追加したいフォルダ([要件]、[テスト計画]、[問題]など)を選択します。これによって、レポートがディレクトリ ツリーのどこに保存されるかが決まります。

2    ツールバーの [子レポートの新規作成] ボタンをクリックします。

3    [レポートの新規作成] ダイアログで、新しく作成するレポートの名前を入力します。この名前が [レポート] ツリーに表示されます。

4    他のユーザーもこのレポートを使えるようにしたい場合には、[このレポートを他のユーザーと共有する] チェック ボックスをオンにしてください。

5    [説明] フィールドにレポートの説明を入力します。

6    [詳細クエリ モード] ボタンをクリックして [レポート データ クエリ] フィールドを表示します。必要に応じて、既に記述したコードをこのフィールドに挿入するか、新しいコードを直接書き込みます。SQL クエリを記述する際には、Issue Manager の関数プレースホルダのドロップダウン リストを利用することができます。利用可能なプレースホルダの詳細については、次のセクションを参照してください。あらかじめ定義された関数を挿入するには、[プレースホルダの挿入] ドロップダウンリストから適切なプレースホルダを選択してください。

メモ: クエリの SQL コードを手作業で編集する場合には、編集後に [SQL のチェック] ボタンをクリックして編集内容を確認することをお勧めします。

7    レポートのプロパティの編集が済んだら、[完了] ボタンをクリックして設定を保存します。

利用可能な関数

詳細クエリを記述する際に、関数ごとに提供されているプレースホルダを利用することができます。関数プレースホルダは、実行時に SQL コードに置き換えられます。関数はパラメータのように使うことができますが、名前の先頭には $ (ドル マーク)が付きます。

メモ: パラメータとは違い、プレースホルダは実行時にカスタマイズすることができない定義済みレポート要素です。

 

使用可能な関数プレースホルダの一覧を以下の表に示します。

関数

機能

$TODAY

現在のシステム日付(データベース サーバーのもの)を返します。$TODAY-1(前日)や $TODAY-7(1 週間前)のように書くこともできます。

CreatedAt > ${$TODAY}

$DATE(column)

日付を返します(時間は含みません)。

 

$DATE('string')

渡された文字列をデータベース日付に変換します。

CreatedAt > ${$DATE('01/10/2005')}

$DAYS[p1;p2]

渡された 2 つのパラメータの間の日数の差を計算します。2 つのパラメータは、テーブルやビューの列でも $TODAY でも構いません。

${&DAYS[CreatedAt;$TODAY]} > 7

(この 1 週間以内に作成された行を返します)

$WEEK(param)

渡されたパラメータの週番号を返します。パラメータは $TODAY や列で指定します。

 

$MONTH(param)

渡されたパラメータの月を数字で返します。パラメータは $TODAY や列で指定します。

 

$YEAR(param)

渡されたパラメータの年を数字で返します。パラメータは $TODAY や列で指定します。

 

$USERID

現在ログインしているユーザーの ID。

 

$USERNAME

現在ログインしているユーザーの名前。

 

$PROJECTID

現在選択しているプロジェクトの ID。

 

$PROJECTNAME

現在選択しているプロジェクトの名前。

 

$REPORTNAME

現在選択しているレポートの名前。

 

$REPORTID

現在選択しているレポートの ID。

 

$THISWEEK

IM_Defect および IM_DefectHistory のテーブルには日付情報を持つ列がいくつか追加されて、素早い問い合わせができるようになっています。

問題が作成または変更された週についての情報は、WeekCreated および WeekLastMod の列に格納されます。週は次のような文字列で表されます。

2005-10-02(SUN)-->2005-10-08(SAT)

$THISWEEK は現在の週についてこの文字列を作成します。

 

$THISMONTH

IM_Defect および IM_DefectHistory のテーブルには日付情報を持つ列がいくつか追加されて、素早い問い合わせができるようになっています。

MonthCreated および MonthLastMod で使われる月の情報は、次のような文字列で表されます。

200511

$THISMONTH は現在の月についてこの文字列を作成します。

 

サンプル カスタム レポート

以下に示すのは、[<month> に <user> が変更したすべての問題] という組み込み済みレポートのコードです。

これはカスタム レポートではありませんが、$THISMONTH 関数(作成月)や username パラメータ(issueHistoryProp_UserCreated)が使われているため、サンプルとして役立つでしょう。

SELECT r.DefectID, r.Synopsis, r.Status, r.InboxAssigned, r.Severity, r.ProductCode, r.Component, r.ProjectID FROM IM_V_Defects r INNER JOIN (SELECT DISTINCT issues.IssueID_pk as id FROM IM_V_Defects issues WITH (NOLOCK) INNER JOIN IM_DefectHistory history WITH (NOLOCK) ON history.IssueID_fk = issues.IssueID_pk WHERE issues.ProjectID = 98 AND history.MonthCreated like '${$THISMONTH|作成月}' AND LOWER(history.UserCreated) like 'username') data ON r.IssueID_pk = data.id ORDER BY r.DefectID ASC