SQL Server Reporting Services (SSRS) は、Microsoft SQL Serverの拡張機能であり、企業向けにデータ分析やレポート作成を強化するツールです。
特に、異なるデータソースを統合してレポートを作成できる点が特徴的で、複数のデータベース、Excel、Webサービス、クラウドデータソースなどを組み合わせて分析が可能です。
本記事では、SSRSを活用し、複数のデータソースを統合してレポートを作成する方法を詳しく解説します。また、実践的な演習問題とその解答も紹介します。
SSRSの基本概念
SSRSでは、以下の主要なコンポーネントを理解することが重要です。
- データソース (Data Source)
- SSRSがデータを取得するための接続情報を含むオブジェクト。
- SQL Server、Oracle、MySQL、Web API など、多様なデータソースをサポート。
- データセット (Data Set)
- レポート内で使用するデータの集合を定義。
- クエリまたはストアドプロシージャを使い、データを取得可能。
- レポート (Report)
- テーブル、マトリックス、チャートなどを用いて、データを視覚的に表現。
- 複数のデータソースのデータを統合する機能を持つ。
SSRSを用いた複数データソースのレポート作成
複数のデータソースの利用シナリオ
企業のデータは、SQL Server だけでなく、クラウド(Azure SQL Database)、NoSQL(MongoDB)、外部API(REST API)など、さまざまな場所に分散しています。SSRSでは、それらのデータを統合して一つのレポートとして出力することが可能です。
例えば、以下のようなシナリオが考えられます。
- 社内データ (SQL Server) + クラウドデータ (Azure SQL Database)
- 例: 顧客情報はSQL Serverに、販売データはAzure SQL Databaseに保存されている場合。
- データベース (SQL Server) + 外部API (Webサービス)
- 例: 売上データはSQL Serverにあるが、為替レートは外部のAPIから取得する場合。
- 異なるデータベース間 (SQL Server + Oracle)
- 例: 製品データはOracleに、在庫データはSQL Serverにある場合。
複数データソースを設定する手順
- データソースの追加
- SSRSレポートビルダーまたはSQL Server Data Tools (SSDT) で、新しいレポートを作成。
データソース
を追加し、異なるデータソース(例: SQL Server、Azure SQL、Web API)を登録。
- データセットの作成
- それぞれのデータソースに対応したデータセットを作成。
- クエリまたはストアドプロシージャを利用してデータを取得。
- レポート内でデータを統合
- LookUp 関数または LookUpSet を使用し、異なるデータセットのデータを統合。
- JOIN できないデータソースの場合、データをリスト形式で組み合わせる。
SSRSのLookUp関数を使ったデータ統合
SSRSでは、異なるデータセットのデータを統合するために LookUp 関数が使用できます。
LookUp関数の基本構文
=LookUp(Fields!キー値.Value, Fields!対応キー.Value, Fields!取得したい値.Value, "データセット名")
LookUp関数の使用例
例えば、以下のような2つのデータセットがあるとします。
データセット1 (ds_Products)
ProductID | ProductName |
---|---|
1 | PC |
2 | Printer |
データセット2 (ds_Sales)
SaleID | ProductID | Amount |
---|---|---|
1001 | 1 | 50000 |
1002 | 2 | 20000 |
LookUp を使用して、売上データのレポートに ProductName を表示する場合、次のように記述します。
=LookUp(Fields!ProductID.Value, Fields!ProductID.Value, Fields!ProductName.Value, "ds_Products")
これにより、 ds_Sales の ProductID に基づいて ds_Products から ProductName を取得し、レポートに表示できます。
演習問題と解答
問題1
次の2つのデータセットを統合し、レポートに表示するクエリを考えてください。
データセットA (ds_Customers)
CustomerID | CustomerName |
---|---|
101 | 田中 太郎 |
102 | 山田 花子 |
データセットB (ds_Orders)
OrderID | CustomerID | OrderTotal |
---|---|---|
5001 | 101 | 12000 |
5002 | 102 | 8000 |
解答
LookUp 関数を使用し、 ds_Orders のレポートに CustomerName を表示する。
=LookUp(Fields!CustomerID.Value, Fields!CustomerID.Value, Fields!CustomerName.Value, "ds_Customers")
この式をレポート内の TextBox に設定すると、 OrderTotal と対応する CustomerName を表示できます。
まとめ
本記事では、SSRSを利用して複数のデータソースからレポートを作成する方法を解説しました。
特に、LookUp 関数を活用したデータ統合のテクニックは、多くのシナリオで有用です。
これを活用し、より高度なレポート設計を行ってみてください。