レッスン 3: マトリックス、変数、および KPI としてのインジケーターの追加 (SSRS)
このレッスンでは、Adventure Works の販売員向けの次の質問に回答する際に役立つレポート アイテムを Employee_Sales_Summary_2008R2 レポートに追加する方法を学習します。
自身の販売ノルマを総合的に達成しているか。
販売ノルマを達成しているのはどの製品カテゴリか。
Employee_Sales_Summary_2008R2 は、売上データの概要を表示するマスター レポートです。販売注文番号にドリルスルー アクションを追加して、ユーザーが販売注文番号をクリックすると、別のレポートが開いて特定の販売注文のすべての詳細が表示されるようにします。
学習する内容
このチュートリアルでは、次のタスクを実行します。
製品カテゴリと販売注文番号に基づく行グループを含むマトリックスを追加します。
販売注文番号に基づく子グループに関連付けられた行の展開/折りたたみの切り替えを追加します。
ブール型パラメーターを追加して、レポートを最初に実行したときにすべてのトグル行を表示するかどうかをユーザーが制御できるようにします。デフォルトでは折りたたまれて非表示になるように構成します。
販売注文番号にドリルスルー アクションを追加します。ターゲット レポートは後のチュートリアルで作成します。詳細については、「Sales_Order_Detail_2008R2 レポートの作成 (SSRS)」を参照してください。
各カテゴリの販売ノルマの金額を定義するための計算フィールドを含むデータセットと、このデータセットによって設定される複数値パラメーターを追加します。
KPI (主要業績評価指標) を表す次の 2 つのインジケーターをテーブルに追加します。
**すべてのカテゴリのノルマの達成。**このインジケーターは、マトリックス レベルのスコープを持ち、すべてのカテゴリの売上が月のノルマを超えているかどうかを表示します。
**各カテゴリのノルマの達成。**このインジケーターは、カテゴリ グループ レベルのスコープを持ち、売上が目標のパーセンテージ範囲に達しているかどうかに基づく状態を表示します。
パラメーターの値を変更することにより、カテゴリのノルマを対話的に変更して、各インジケーターの状態の変化を確認できます。
複合式を作成しやすくするためのレポート変数とグループ レベル変数を定義します。
デザインおよびデバッグに役立つように、複数の計算結果をテキスト ボックスに表示します。そのテキスト ボックスの表示/非表示をパラメーターに基づいて設定することにより、この省略可能な情報を表示するかどうかをユーザーが制御できるようにします。
複数のレポート アイテムを含む四角形を Tablix コーナー セルに追加します。
シナリオ テキストからマトリックスへのブックマーク リンクを追加します。
マトリックスの目的を説明する説明テキストを追加します。
このチュートリアルの推定所要時間: 30 分
必要条件
必要条件については、「AdventureWorks 2008R2 サンプル レポートの前提条件 (SSRS)」を参照してください。
このレッスンでは、「レポート サーバー プロジェクトと AdventureWorks2008R2_Base レポートの作成 (SSRS)」(レポート プロジェクト、共有データ ソース、および共有データセットの作成) と「レッスン 2: 折れ線グラフとスパークライン グラフの追加 (SSRS)」を完了していることを前提としています。
ヒント
ドキュメント アウトライン ペインを使用してレポート アイテム間の階層リレーションシップを表示する方法に関するヒントを確認してください。詳細については、「レポート デザインに関するヒント (レポート ビルダー 3.0 および SSRS)」を参照してください。
プロジェクトおよびレポートを開くには
Business Intelligence Development Studio で、前のレッスンで作成したレポート サーバー プロジェクト AdventureWorks 2008R2 サンプル レポートを開きます。
Employee_Sales_Summary_2008R2 レポートを開きます。
マトリックスの追加
比較的複雑なマトリックスをデザインする際には、マトリックスのプロパティを簡単に選択および構成できるように、直接レポート デザイン画面上でマトリックスを操作します。完成したマトリックスは、この後の手順で四角形のコンテナーに追加します。
販売注文を表示するマトリックスを追加するには
レポート デザイン画面にマトリックスを追加します。
追加したマトリックスで、次の手順を実行します。
[行] セルにカーソルを合わせ、フィールド タグをクリックします。[データセット] をポイントし、[EmployeeSalesDetail2008R2] をポイントして、[Category] をクリックします。
レポート データ ペインで、[データセット] を展開し、[EmployeeSalesDetail2008R2] を展開します。
SalesOrderNumber を、行グループ ペインの [Category] の下にドラッグします。子行グループが作成されます。
[データ] セルでフィールド タグをクリックし、[Sales] をクリックします。このセルのテキスト ボックスの書式を通貨に設定します。
[Category] セルを右クリックし、[合計の追加] をポイントして、[後] をクリックします。
必要に応じて、マトリックスの書式を設定します。
展開/折りたたみの切り替えを制御するためのパラメーターを作成するには
レポート データ ペインで、ExpandAllTableRows という名前のパラメーターを追加します。
[レポート パラメーターのプロパティ] ダイアログ ボックスで、次の手順を実行します。
[プロンプト] を「Expand all table rows?」に変更します。
[データ型] で、[ブール] を選択します。
[既定値] で、値を false に設定します。
子行グループの展開/折りたたみの切り替えを作成するには
グループ化ペインで、SalesOrderNumber の [グループ プロパティ] を開きます。
[表示] ページで、[式を基に表示/非表示を切り替える] をクリックし、式「=NOT Parameters!ExpandAllTableRows.Value」を入力します。
[次のレポート アイテムでの表示の切り替えを可能にする] チェック ボックスをオンにし、ドロップダウン リストから、親グループ Category のグループ式が割り当てられているテキスト ボックスの名前を選択します。
テキスト ボックスの名前は、そのテキスト ボックスに追加した最初のフィールドに基づいて自動的に設定されます。
別のレポートへのドリルスルー リンクを作成するには
マトリックスで、[SalesOrderNumber] を右クリックし、[テキスト ボックスのプロパティ] を開きます。
[アクション] ページで、[レポートに移動する] をクリックします。
[レポートの指定] に、「Sales_Order_Detail_2008R2」と入力します。
注 このターゲット レポートはまだ存在しないため、レポート名とパラメーター名を手動で正確に入力する必要があります。ターゲット レポートがプロジェクトに存在する場合は、レポート名と、対応するレポート パラメーターを、ドロップダウン リストから選択できます。
[追加] をクリックします。
[名前] に「SalesOrderIDStart」と入力します。
[値] に「[SalesOrderID]」と入力します。
[追加] をクリックします。
[名前] に「SalesOrderIDEnd」と入力します。
[値] に「[SalesOrderID]」と入力します。
[フォント] ページで、[色] を [青] に設定し、[文字飾り] を [下線] に設定します。
Sales_Order_Detail_2008R2 レポートには、指定した販売注文番号の範囲の各販売注文の詳細が表示されます。両方のターゲット レポート パラメーターを同じ販売注文番号に設定すると、1 つの販売注文の詳細が表示されます。
最初のノルマと範囲を提供するデータセットの追加
ノルマのデータを追加するには
レポート データ ペインで、CategoryQuotas という名前のデータセットを追加します。既存の共有データ ソースを使用し、埋め込みデータセットを指定して、次のクエリを使用します。
SELECT 1 as ID, 'Accessories' as Category, 1000 as Quota, 25 as PercentDeviation UNION SELECT 2 as ID, 'Bikes' as Category, 70000 as Quota, 5 as PercentDeviation UNION SELECT 3 as ID, 'Clothing' as Category, 2500 as Quota, 20 as PercentDeviation UNION SELECT 4 as ID, 'Components' as Category, 20000 as Quota, 10 as PercentDeviation
Quota フィールドは通貨を表します。Quota の値によって、この後の手順で作成する @CategoryQuota という名前のレポート パラメーターの初期値が設定されます。整数以外の数値を表すために、レポート パラメーターは Float データ型にする必要があります。次の手順では、Float 型の Quota に基づく計算フィールドを作成します。
計算フィールドを作成するには
レポート データ ペインで、CategoryQuotas という名前のデータセットを右クリックし、[計算フィールドの追加] をクリックします。
[追加] をクリックします。
[フィールド名] に「QuotaF」と入力します。
[フィールド ソース] の値を次の式に設定します。
=CDbl(Fields!Quota.Value)
ノルマの値をユーザーが指定できるようにするためのパラメーターの追加
複数値パラメーター @CategoryQuota を追加するには
レポート データ ペインで、新しいパラメーターを追加します。
[全般] ページで、次の手順を実行します。
[名前] を「CategoryQuota」に設定します。
[プロンプト] を「Category quotas (Accessories, Bikes, Clothing, Components):」に設定します。
[データ型] を Float に設定します。
[複数の値を許可] を選択します。
[既定値] ページで、次の手順を実行します。
[クエリから値を取得] を選択します。
[データセット] で [CategoryQuotas] を選択します。
[値フィールド] で [QuotaF] を選択します。
レポートを実行し、パラメーターが正しく表示され、各パラメーターに既定値が設定されていることを確認します。
ユーザーがカテゴリのノルマを対話的に変更できるようにするには、データセットに使用可能な値を指定しないでください。使用可能な値により、パラメーターの選択が制限されます。
レポート変数としての複合式の定義
変数を使用すると、一度複合式を定義してから、他の式の中にその複合式への参照を追加することができます。レポートが処理されると、レポート変数が 1 回評価されます。グループ変数は、グループ インスタンスごとに 1 回評価されます。
レポート変数を作成するには
レポート変数を作成するには、[レポートのプロパティ] を開きます。
[変数] ページで、次の手順を実行します。
[追加] をクリックします。
[名前] に「SumofAllParameterThresholds」と入力します。
[値] に「=CDbl(Parameters!CategoryQuota.Value(0)+Parameters!CategoryQuota.Value(1)+Parameters!CategoryQuota.Value(2)+Parameters!CategoryQuota.Value(3))」と入力します。
この式では、カテゴリのノルマの合計としてノルマの総額が計算されます。マトリックスを対象とするインジケーターを構成するときにこの変数を使用します。
グループ変数としての複合式の定義
グループ変数を作成するには
マトリックスを選択して、グループ化ペインに行グループを表示します。
Category グループを右クリックし、[グループのプロパティ] を開きます。
[変数] をクリックし、次の手順を実行します。
[追加] をクリックします。
[名前] に「IndextoCategoryQuotas」と入力します。
[値] に「=Lookup(Fields!Category.Value,Fields!Category.Value,Fields!ID.Value,"CategoryQuotas")」と入力します。
これにより、グループ値 Category の ID として 1、2、3、または 4 が取得されます。これらの ID は、アルファベット順に一覧表示されるカテゴリ Accessories、Bikes、Clothing、Components に対応しています。
[追加] をクリックします。
[名前] に「PercentDeviation」と入力します。
[値] に「=.01 * CDbl(Lookup(Fields!Category.Value,Fields!Category.Value,Fields!PercentDeviation.Value,"CategoryQuotas"))」と入力します。
これにより、グループ値 Category のパーセント偏差フィールドとして 25%、5%、20%、10% が取得されます。Bikes などのカテゴリでは、売上が大きいことが予想されるため、ノルマのパーセント偏差はより小さくなっています。Accessories などのカテゴリでは、売上が小さいため、ノルマのパーセント偏差も小さくなります。
カテゴリ グループを対象とするインジケーターを構成するときにグループ変数を使用します。
次の手順では、条件によって非表示になるテキストを追加し、各カテゴリ ノルマの範囲における最高値と最低値を計算する式の各部分を表示します。
グループ ヘッダー行の追加と計算結果の表示
実行時のプロパティ値をわかりやすくするために式を計算して表示することができます。これらの値は、条件付き表示を使用して、必要ないときには非表示にします。
Category のグループ ヘッダー行を追加するには
SalesOrderNumber が含まれているテキスト ボックスを右クリックし、必要に応じて Esc キーを押して (テキスト ボックスを選択して編集モードを終了します)、[行を挿入] をポイントし、[外側のグループ - 上] をクリックします。
Sales 列で、追加した行のセルのフィールド タグをクリックし、[Sales] をクリックします。テキスト ボックスの書式を [通貨] に設定します。
Category グループに関連付けられたヘッダー行が追加されます。
式を構成する複数の部分をテキスト ボックスに追加するには
追加したグループ ヘッダー行内の SalesOrderNumber の上にある空のテキスト ボックスを選択します。このセルのデータのスコープは Category グループです。
作業領域を広げるために、四角形を含むセルの行の高さと列の幅を広げます。
テキスト ボックスに、rectCategoryQuotas という名前の四角形を挿入します。四角形のコンテナーを使用すると、マトリックス内のセルとの一貫性を保つように罫線のスタイルと色を設定できます。
四角形に、tbCategoryQuotas という名前のテキスト ボックスを追加して、次のテキストを入力します。
Quota:
Quota という名前のプレースホルダーを作成して、値を「=CDbl(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))」に設定し、書式を [通貨] に設定します。
次の行に、マイナス記号 (-)、PercentDeviation という名前のプレースホルダー、コロン (:)、および MinimumThreshold という名前のプレースホルダーを入力します。
PercentDeviation の [プレースホルダー] の値を式「=FormatPercent(Variables!PercentDeviation.Value,0)」に変更します。
MinimumThreshold の [プレースホルダー] の値を式「=(1.0-Variables!PercentDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))」に変更します。
次の行に、プラス記号 (+)、PercentDeviation という名前のプレースホルダー、コロン (:)、および MaximumThreshold という名前のプレースホルダーを入力します。
PercentDeviation の [プレースホルダー] の値を式「=FormatPercent(Variables!PercentDeviation.Value,0)」に変更します。
MaximumThreshold の [プレースホルダー] の値を式「=(1.0+Variables!PercentDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))」に変更します。
必要に応じて、テキストの書式を設定します (すべてのテキストを右揃えにするなど)。
[表示] ページで、[式を基に表示/非表示を切り替える] をクリックし、式「=NOT Parameters!ShowAll.Value」を入力します。
テキスト ボックスで、テキストを右揃えにします。
レポートを実行します。
Accessories については、次のテキストが表示されます。
Quota: $1,000
-25%: $750
+25%: $1,250
四角形の罫線のスタイルがマトリックスの他の部分と一致していないことに注意してください。
入れ子になった四角形の罫線のプロパティを指定するには
tbCategoryQuotas という名前のテキスト ボックスをクリックし、プロパティ ペインに rectCategoryQuotas の [四角形のプロパティ] が表示されるまで Esc キーを押します。
プロパティ ペインで、次の操作を行います。
[BorderColor] を [LightGrey] に変更します。
[BorderStyle] を [Solid] に変更します。
レポートを実行します。
マトリックスのセルの罫線が一致するようになります。
すべてのカテゴリの売上のインジケーターの追加
マトリックスのコーナー セルに追加したレポート アイテムのスコープは、マトリックスのデータに設定されます。コーナーで複数のテキスト ボックスをマージし、四角形のコンテナーを追加して、そこに複数のレポート アイテムを追加することができます。コーナー セルは、スコープがマトリックスのデータに設定された値を表示するのに適した領域です。四角形の中の各アイテムの表示/非表示は個別に制御できます。
詳細については、「Tablix データ領域部分について (レポート ビルダー 3.0 および SSRS)」を参照してください。
マトリックスのデータを対象とするインジケーターを追加するには
コーナー セルは、最初の行の最初の列のセルで、"Category" というテキストが含まれています。コーナー セルのアイテムのデータ範囲は、フィルター適用後のマトリックス内のすべてのデータです。テキスト ボックス、インジケーター、および条件に応じてカテゴリの売上全体のノルマの計算結果の表示/非表示を切り替えるテキスト ボックスを追加します。
テキスト ボックスを右クリックし、[挿入] をポイントして、[四角形] をクリックします。テキスト ボックスが四角形に置き換わります。
四角形の名前を「rectMatrixCorner」に変更します。
コーナー セルの行の高さと列の幅を広げて作業領域を広げます。
四角形にテキスト ボックスを追加します。「Met Quota?」というテキストを 2 行で入力します。
テキスト ボックスの横にインジケーターを挿入します。[指向性] で、ツールヒントを使用して [3 つの上下の三角形] をクリックします。
インジケーターの上部をテキスト ボックスの上部に揃えます。
[インジケーターのプロパティ] を開きます。
[値と状態] ページで、次の手順を実行します。
[値] で [Sum(Sales)] を選択します。
[状態の単位] で [数値] を選択します。
[インジケーターの状態] で、中間の状態を削除します。
マトリックス スコープで、ノルマを満たしているか満たしていないかの 2 つの状態に表示を制限します。
最初の状態では、[開始] に「0」を入力します。
[終了] に、式「=Variables!SumParameterThresholds.Value」を入力します。
2 番目の状態では、[開始] に、最初の状態の [終了] に使用した式をコピーします。
[終了] に、式「=Max(Sum(Fields!Sales.Value))」を入力します。
インジケーターの下に、tbMatrixQuotas という名前のテキスト ボックスを追加して、次のテキストを入力します。
Quota:
Quota という名前のプレースホルダーを作成して、値を「=Variables!SumofAllParameterThresholds.Value」に設定し、書式を [通貨] に設定します。
Total:
Total という名前のプレースホルダーを作成して、値を「=Sum(Fields!Sales.Value)」に設定し、書式を [通貨] に設定します。
[表示] ページで、[式を基に表示/非表示を切り替える] をクリックし、式「=NOT Parameters!ShowAll.Value」を入力します。
テキスト ボックスで、テキストを右揃えにします。
Quota:
追加したテキストの横にカーソルを置き、右クリックして [プレースホルダーの作成] をクリックします。
[ラベル] に「MAX」と入力します。
[値] に「=Variables!SumParameterThresholds.Value」と入力します。
[数値] ページの [カテゴリ] で、[通貨] をクリックします。[小数点以下桁数] を 0 に設定します。
四角形に、テキスト ボックスを追加して、「Total: 」というテキストを入力します。
追加したテキストの横にカーソルを置き、右クリックして [プレースホルダーの作成] をクリックします。
[ラベル] に「Total」と入力します。
[値] に「Sum(Fields!Sales.Value)」と入力します。
[数値] ページの [カテゴリ] で、[通貨] をクリックします。[小数点以下桁数] を 0 に設定します。
[テキスト ボックスのプロパティ] を開きます。[変数] ページで、次の操作を行います。
[式を基に表示/非表示を切り替える] をクリックします。
式 =NOT Parameters!ShowAll.Value を使用します。
必要に応じて、四角形とそれに含まれるレポート アイテムの書式を設定します。たとえば、次の手順を行います。
テキスト ボックスとゲージ パネルの [塗りつぶし] の色を行ヘッダーの背景色と同じ色に設定します。
四角形の BorderColor プロパティと BorderStyle プロパティをマトリックス セルと同じ値に設定します。
ゲージ パネルの BorderStyle プロパティを None に設定します。
各カテゴリの売上のインジケーターの追加
Category 行グループを対象とするインジケーターを追加するには
マトリックスの最後の列ヘッダーのハンドルを右クリックし、[列の挿入] をポイントして、[外側のグループ - 右] をクリックします。
新しい列で、Category に関連付けられたグループ行に、rectCategoryIndicator という名前の四角形を挿入します。
四角形に、インジケーターを挿入します。[記号] で、ツールヒントを使用して [3 つの記号 (丸囲みなし)] をクリックします。
このセルのデータの範囲は、各製品カテゴリのデータになります。
追加されるインジケーターは、ゲージ パネルのレポート アイテムです。必要に応じて、ゲージ パネルのゲージの幅と高さを調整します。
[インジケーターのプロパティ] を開き、[値と状態] ページに移動します。
[値] で [Sum(Sales)] を選択します。
[状態の単位] で [数値] を選択します。
最初の状態で、次の手順を実行します。
[アイコン] で、X が表示されていることを確認します。
[色] で [黄] を選択します。
[開始] に「0」と入力します。
[終了] に、式「=(1.0-Variables!PercentDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))」を入力します。
2 番目の状態で、次の手順を実行します。
[アイコン] で、記号を √ に変更します。
[色] で [ライム グリーン] を選択します。
[開始] に、最初の状態の [終了] に使用した式をコピーします。
[終了] に、式「=(1.0+Variables!PctDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!QuotaIndex.Value)-1))」を入力します。
3 番目の状態で、次の手順を実行します。
[アイコン] で、! が表示されていることを確認します。
[色] で [濃い紫] を選択します。
[開始] に、2 番目の状態の [終了] に使用した式をコピーします。
[終了] に、式「=Max(Sum(Fields!Sales.Value))」を入力します。
列ヘッダーのテキストを「Met Category Quota?」に設定します。
マトリックスの四角形のコンテナーの追加
マトリックスの四角形のコンテナーと、マトリックスの目的を説明するテキストを追加します。
四角形のコンテナーを追加するには
レポートの本文に、rectMatrix という名前の四角形を挿入します。
四角形に、テキスト ボックスを追加し、「Compare sales to quotas by category」と入力します。
必要に応じて書式を設定します。
マトリックスを選択します。マトリックスの左上隅を四角形内のテキスト ボックスの下にドラッグします。必要に応じて、四角形は拡大されます。
四角形を選択します。プロパティ ペインで、[ブックマーク] を「QuotasRectangle」に設定します。
[レイアウト] ツール バーを使用して、四角形 rectCharts と rectMatrix の上部を揃えます。
シナリオ テキストからマトリックスへのリンクの追加
テキストからブックマークへのリンクを追加するには
シナリオ テキストを含むテキスト ボックスで、テキストを選択します。
マウスを使用して、"matrix" という単語を強調表示します。
右クリックして、[テキストのプロパティ] ダイアログ ボックスを開きます。
[フォント] ページで、[色] を [青] に設定し、[文字飾り] を [下線] に設定します。
[アクション] ページで、[ブックマークに移動する] をクリックします。
[ブックマークの選択] に「QuotasRectangle」と入力します。
ReportMonth の既定値の変更
グループ インジケーターの設定を確認するために、インジケーターの 3 つの範囲のすべてに該当するデータを使用します。
@ReportMonth の既定値を設定するには
レポート データ ペインで、@ReportMonth の [レポートのプロパティ] を開きます。
[既定値] ページで、[値] に「11」と入力します。
11 月の売上データが使用されます。
レポートのプレビュー
レポートをプレビューして確認するには
レポートをプレビューします。
次の点を確認します。
2 つのメインの四角形のコンテナーが並んで表示されること。
既定では、販売注文のマトリックス行が折りたたまれていること。
@ExpandAllTableRows の値を変更すると、レポートの実行時にマトリックス内のすべての行の展開と折りたたみが切り替わること。
テーブル コーナーのインジケーターが緑色であること。
カテゴリ インジケーターに次の画像が表示されていること。
Accessories 黄色のマーク (X)
Bikes 緑のチェックマーク (√)
Clothing 黄色のマーク (X)
Components 紫の感嘆符 (!)
@ShowAll パラメーターの値に基づいて、計算情報を表示または非表示にできる。
ノルマにさまざまな値を入力すると、インジケーターが正しい状態を表示すること。
レポートを .pdf ファイルなどの印刷に対応した形式にエクスポートする場合は、レポート ビューアー ツール バーの [印刷レイアウト] ボタンを使用して、レポートが期待どおりに表示されることを確認します。予期しない水平方向の改ページが複数あった場合は、必要に応じて、空白文字の削除やコンテナーの幅の調整を行います。詳細については、「レポート デザインに関するヒント (レポート ビルダー 3.0 および SSRS)」を参照してください。