複数のレポートからのデータ フィードの生成 (Report Builder)

Reporting Services Atom 表示拡張機能は、改ページ調整されたレポートから利用できるデータ フィードおよびレポート内のデータ領域からのデータ フィードを一覧表示する Atom サービス ドキュメントを生成します。 この拡張機能を使用すると、レポートから生成されたデータ フィードを使用できるアプリケーションで読み取りおよび交換が可能な、Atom に準拠したデータ フィードを生成できます。 たとえば、Atom 表示拡張機能を使用して、Power Pivot または Power BI で使用できるデータ フィードを生成できます。

Atom サービス ドキュメントには、レポート内の各データ領域について 1 つ以上のデータ フィードが一覧表示されます。 データ領域の種類およびデータ領域に表示されるデータによっては、 Reporting Services は、1 つのデータ領域から複数のデータ フィードを生成することがあります。 たとえば、マトリックスまたはグラフでは、複数のデータ フィードを提供できます。 Atom 表示拡張機能によって Atom サービス ドキュメントが作成されると、各データ フィードに対して一意な識別子が作成されます。URL 内でこの識別子を使用することで、データ フィードの内容にアクセスできます。

Atom 表示拡張機能でデータ フィード用のデータを生成する方法は、コンマ区切り値 (CSV) 表示拡張機能でデータから CSV ファイルを提供する方法に似ています。 CSV ファイルと同様に、データ フィードは、レポート データのフラット化された表現です。 たとえば、グループ内の売上を合計する行グループを含むテーブルでは、すべてのデータ行で合計が繰り返され、合計のみを含む独立した行がありません。

Atom サービス ドキュメントおよびデータ フィードは、 Reporting Services レポート サーバー、または Reporting Servicesと統合された SharePoint サイトを使用して生成できます。

Atom は、一式の関連標準に適用されます。 Atom サービス ドキュメントは RFC 5023 Atom パブリッシング プロトコル仕様に準拠し、データ フィードは RFC 4287 Atom 配信形式プロトコル仕様に準拠します。

以降のセクションでは、Atom 表示拡張機能の使用法に関する追加情報を提供します。

ページ分割されたレポートの定義ファイル (.rdl) は、Microsoft レポート ビルダー、Power BI レポート ビルダー、または SQL Server Data Tools のレポート デザイナーを使用して作成および変更できます。

データ フィードとしてのレポート

運用レポートをデータ フィードとしてエクスポートすることも、データ フィードの形式でアプリケーションにデータを提供することを第 1 の目的とするレポートを作成することもできます。 データ フィードとしてレポートを使用することで、クライアント データ プロバイダーを介してデータに簡単にアクセスできない場合に、アプリケーションにデータを提供する別の方法が得られます。 または、データ ソースの複雑さを隠し、データの使用を簡単にする場合は、データ フィードとして使用できます。 レポート データをデータ フィードとして使用するもう 1 つの利点は、Reporting Services の機能を使用できることです。 これらの機能には、データ フィードを提供するレポートを管理するためのセキュリティ、スケジュール設定、レポートスナップショットが含まれます。

Atom 表示拡張機能を有効に利用するためには、レポートがどのようにデータ フィードに表示されるかを理解する必要があります。 既存のレポートを使用している場合は、レポートによって生成されるデータ フィードを予測できると便利です。 データ フィードとして使用する専用のレポートを作成している場合は、データ フィードの有用性を最大限に高めるために、データを組み込んでレポート レイアウトを微調整できることが重要です。

詳細については、「1 つのレポートからのデータ フィードの生成 (Report Builder および SSRS)」を参照してください。

Atom サービス ドキュメント (.atomsvc ファイル)

Atom サービス ドキュメントは、1 つまたは複数のデータ フィードへの接続を指定します。 接続は、少なくとも、フィードを生成するデータ サービスへの単純な URL です。

Atom 表示拡張機能を使用してレポート データを表示すると、Atom サービス ドキュメントによってレポートで利用できるデータ フィードが一覧表示されます。 このドキュメントには、レポート内の各データ領域について 1 つ以上のデータ フィードが一覧表示されます。 テーブルおよびゲージから生成されるデータ フィードはそれぞれ 1 つのみです。これに対し、マトリックス、リスト、およびグラフの場合、表示するデータによっては複数のフィードが生成される場合があります。

次の図に、2 つのテーブルと 1 つのグラフを使用するレポートを示します。

2 つのテーブルと 1 つのグラフを使用するレポートの図。

このレポートから生成される Atom サービス ドキュメントには、各テーブルから 1 つずつ、グラフから 1 つの、合計 3 つのデータ フィードが含まれます。

マトリックス データ領域には、マトリックスの構造に応じて複数のデータ フィードが含まれる場合があります。 次の図に、2 つのデータ フィードを生成するマトリックスが使用されているレポートを示します。

2 つのデータ フィードを生成するマトリックスが使用されているレポートの図。

このレポートから生成される Atom サービス ドキュメントには、動的なピア列 Territory と Year に対応する 2 つのデータ フィードが含まれます。 次の図に、各データ フィードの内容を示します。

各フィードの内容を示す図。

データ フィード

データ フィードは、時間が経過しても変化しない一貫した表形式と、レポートを実行するたびに変化する可能性のある可変データから成る、XML ファイルです。 Reporting Services によって生成されるデータ フィードは、ADO.NET Data Services によって生成されるデータ フィードと同じ形式です。

データ フィードには、ヘッダー セクションとデータ セクションの 2 つのセクションが含まれます。 Atom 仕様には、各セクションの要素が定義されています。 ヘッダーには、データ フィードで使用する文字エンコード スキーマなどの情報が含まれています。

ヘッダー セクション

次の XML コードは、データ フィードのヘッダー セクションを示しています。

<?xml version="1.0" encoding="utf-8" standalone="yes"?><feed xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">

<title type="text"></title>

<id>uuid:1795992c-a6f3-40ec-9243-fbfd0b1a5be3;id=166321</id>

<updated>2009-05-08T23:09:58Z</updated>

データ セクション

データ フィードのデータ セクションには、Atom 表示拡張機能によって生成されたフラット化された行セット内の行ごとに 1 つの <entry> 要素が含まれています。

次の図に、グループと合計を使用するレポートを示します。

グループと合計を使用するレポートの図。

次の XML は、データ フィード内のレポートの <entry> 要素を示しています。 <entry> 要素には、グループの売上および注文の合計と、すべてのグループの売上および注文の合計が含まれています。 <entry> 要素には、レポート上のすべての値が含まれます。

<entry><id>uuid:1795992c-a6f3-40ec-9243-fbfd0b1a5be3;id=166322</id><title type="text"></title><updated>2009-05-08T23:09:58Z</updated><author /><content type="application/xml"><m:properties>

<d:ProductCategory_Value>Accessories</d:ProductCategory_Value>

<d:OrderYear_Value m:type="Edm.Int32">2001</d:OrderYear_Value>

<d:SumLineTotal_Value m:type="Edm.Decimal">20235.364608</d:SumLineTotal_Value>

<d:SumOrderQty_Value m:type="Edm.Int32">1003</d:SumOrderQty_Value>

<d:SumLineTotal_Total_2_1 m:type="Edm.Decimal">1272072.883926</d:SumLineTotal_Total_2_1>

<d:SumOrderQty_Total_2_1 m:type="Edm.Double">61932</d:SumOrderQty_Total_2_1>

<d:SumLineTotal_Total_2_2 m:type="Edm.Decimal">109846381.399888</d:SumLineTotal_Total_2_2>

<d:SumOrderQty_Total_2_2 m:type="Edm.Double">274914</d:SumOrderQty_Total_2_2></m:properties></content>

</entry>

データ フィードを操作する

レポートによって生成されるすべてのデータ フィードには、データ フィードを生成するデータ領域の親のスコープ内のレポート アイテムが含まれます。 複数のテーブルと 1 つのグラフが含まれているレポートを想像してください。 レポート本文のテキスト ボックスは、各データ領域の説明テキストを提供します。 レポートによって生成されるすべてのデータ フィードのすべてのエントリには、テキスト ボックスの値が含まれます。 たとえば、テキストが "販売地域別の月次売上の平均を示すグラフ" の場合、3 つのすべてのデータ フィードの各行にこのテキストが含まれます。

入れ子になったデータ領域のような階層データ リレーションシップがレポート レイアウトに含まれている場合、これらのリレーションシップは、レポート データのフラット化された行セットに含まれます。

一般に、入れ子になったデータ領域のデータ行は幅が広くなります。入れ子になったテーブルおよびマトリックスにグループや合計が含まれる場合は特にそうです。 期待どおりのデータが生成されるかどうかを確認するには、レポートをデータ フィードにエクスポートした後でデータ フィードを表示すると便利です。

Atom 表示拡張機能によって Atom サービス ドキュメントが作成されると、データ フィードに対して一意な識別子が作成されます。URL 内でこの識別子を使用することで、データ フィードの内容を確認できます。 前に示したサンプルの Atom サービス ドキュメントには、URL https://ServerName/ReportServer?%2fProduct+Sales+Summary&rs%3aCommand=Render&rs%3aFormat=ATOM&rc%3aItemPath=Tablix1 が含まれています。 この URL は、レポート (Product Sales Summary)、Atom 表示形式 (ATOM)、およびレポート アイテムの名前 (Tablix1) を識別します。

レポート アイテムの名前には、直感的でなく覚えにくい、レポート アイテムのレポート定義言語 (RDL) 要素の名前が既定で使用されます。 たとえば、レポートに配置された最初のマトリックスの既定の名前は Tablix1 となります。 データ フィードでは、これらの名前が使用されます。

データ領域の DataElementName プロパティを使用してわかりやすい名前を付けることで、データ フィードの操作を容易にすることができます。 DataElementName の値を設定した場合、データ フィードのサブ要素 <d> でこの値が既定のデータ領域名の代わりに使用されます。 たとえば、データ領域の既定の名前が Tablix1DataElementNameSalesByTerritoryYear を設定している場合、データ フィードの <d>SalesByTerritoryYear を使用します。 データ領域に、前に説明したマトリックス レポートのような 2 つのデータ フィードがある場合、データ フィードで使用される名前は SalesByTerritoryYear _Territory および SalesByTerritoryYear _Year です。

レポート上に表示されたデータとデータ フィード内のデータを比較した場合、いくつかの相違があります。 通常、レポートに表示される数値データや日時データは書式設定されていますが、データ フィードには書式設定されていないデータが含まれます。

データ フィードは、.atom のファイル名拡張子で保存されます。 テキスト エディターまたは XML エディター (たとえば、メモ帳や XML Editor) を使用して、ファイルの構造および内容を確認できます。

レポート データをフラット化する

Atom レンダラーは、XML 形式のフラット化された行セットとしてレポート データを提供します。 データ テーブルをフラット化する場合のルールは、いくつかの例外を除き、CSV レンダラーに適用されるルールと同じです。

  • スコープ内のアイテムは、詳細レベルにフラット化されます。 CSV レンダラーとは異なり、最上位レベルにあるテキスト ボックスは、データ フィードに書き込まれるすべてのエントリに含められます。

  • レポート パラメーター値は、出力の行ごとに表示されます。

階層データとグループ化データは、Atom に準拠した形式で表示するためにフラット化する必要があります。 表示拡張機能では、レポートをフラット化して、データ領域内で入れ子になっているグループを表すツリー構造にします。 レポートをフラット化すると、次の結果が発生します。

  • 行階層がフラット化されてから列階層がフラット化されます。

  • 行階層のメンバーがデータ フィードに表示された後、列階層のメンバーが表示されます。

  • 列が並べ替えられます。本文中のテキスト ボックスが左から右、上から下に並べ替えられた後、データ領域が左から右、上から下に並べ替えられます。

  • データ領域内の列が、コーナーのメンバー、行階層メンバー、列階層メンバー、セルの順に並べ替えられます。

  • ピア データ領域は、一般的なデータ領域または動的な先祖を共有する、データ領域または動的グループです。 ピア データがフラットなツリーの分岐で識別されます。

詳細については、テーブル、マトリックス、および一覧 (レポート ビルダーおよび SSRS) に関するページをご覧ください。

Atom レンダリング ルール

Atom 表示拡張機能は、データ フィードを表示するときに次の情報を無視します。

  • 書式設定およびレイアウト

  • ページ ヘッダー

  • ページ フッター

  • カスタム レポート アイテム

  • 四角形

  • 路線

  • イメージ

  • 自動集計

その他のレポート アイテムは、まず先頭から末尾に、そして左から右に向かって並べ替えられます。 その後、各アイテムが列に生成されます。 レポートに一覧やテーブルなどの入れ子になったデータ アイテムがある場合は、親アイテムが各行に繰り返し使用されます。

次の表では、表示した際のレポート アイテムの外観について説明します。

Item 表示動作
テーブル テーブルを展開して表示します。最も詳細なレベルでの各行と列に対応した、行と列が作成されます。 集計の行と列には、列見出しまたは行見出しは付けられません。 ドリルスルー レポートはサポートされていません。
Matrix マトリックスを展開して表示します。最も詳細なレベルでの各行と列に対応した、行と列が作成されます。 集計の行と列には、列見出しまたは行見出しは付けられません。
一覧取得 一覧の詳細行またはインスタンスそれぞれに対応するレコードが表示されます。
サブレポート 親アイテムは、コンテンツのインスタンスごとに繰り返し表示されます。
グラフ それぞれのグラフ値にすべてのグラフ ラベルを付けてレコードを表示します。 階層内の系列およびカテゴリのラベルは、フラット化され、グラフ値の行内に含まれています。
データ バー グラフのように表示されます。 通常、データ バーには階層またはラベルは含まれません。
スパークライン グラフのように表示されます。 通常、スパークラインには階層またはラベルは含まれません。
ゲージ 線形スケールの最小値/最大値、範囲の開始値/終了値、およびポインターの値を含む単一のレコードとして表示されます。
インジケーター アクティブな状態名、使用可能な状態、およびデータ値を持つ単一のレコードとして表示されます。
マップ 各マップ データ領域にデータ フィードを生成します。 複数のマップ レイヤーが同じデータ領域を使用している場合、データ フィードにはすべてのマップ レイヤーが含まれます。 データ フィードには、マップ レイヤーのマップ メンバーごとにラベルと値を持つレコードが含まれます。

デバイス情報設定

使用するエンコード スキーマなど、このレンダラーのいくつかの既定の設定は変更することができます。 詳細については、「ATOM のデバイス情報設定」を参照してください。

その他の質問 Reporting Services のフォーラムに質問してみてください