質問

WebベースのSSRSレポートビルダーをエンドユーザーに展開して、運用アプリケーションデータベースに対して独自のレポートを作成できるようにするアイデアを検討しています。これまで見てきたことから、このツールはVS Biz Intel Studioのレポートデザイナーよりも使いやすく、インストールも簡単で、エンドユーザーにとってレポートの展開ははるかに理解しやすいです(さらに最大のことはSQLがありません推測)。

ユーザーにこの種の力を与える落とし穴について、何か考えや経験はありますか?現在、データをフラットファイルにエクスポートするために多くのリクエストを受け取っているため、データを読み取ってAccessでレポートを作成できるため、SSRSの方がAccesssよりも優れていると思います...

役に立ちましたか?

解決

レポートモデル設計のヒント:

1。データマートを構築する

レポートビルダーのようないくつかのツールがあります:Business Objects、Oracle Discoverer、カップルに名前を付けます。これらにはすべて、エンドユーザーレポートツールへの道を提供するメタデータレイヤーがありますが、効果的なソリューションを作成するためには、適切な形式のスプーンフィードデータである必要があります。これは、何らかのデータマートの構築についても考える必要があることを意味します。

クリーンなデータなしで、ツールは本番データベースのすべての落とし穴を公開するため、ユーザーは正しい結果を得るためにこれらを理解する必要があります。つまり、レポートは実際にクリーンなデータソースから取得する必要があります。

これらのツールが生成するSQLをほぼゼロで制御できるため、本番データベースを処理するクエリを生成できます。つまり、レポートは別のサーバーで実行する必要があります。アドホックツールに適したスキーマ(スタースキーマなど)は、パフォーマンスに関する潜在的な最悪の問題を軽減します。

2。データを消去する

アドホックツールを使用するループには開発者がいないため、ユーザーはデータの問題を知らなくてもツールを単純に使用します。 不正確なクエリ結果は常にツールの障害とみなされます。信頼性を確保するために、これらの落とし穴はツールの上流のデータセットから排除する必要があります。

3。ナビゲーションを堅牢でバカなものにする

レポートビルダーは、あるエンティティから別のエンティティへの移動に関する制限を設定できます。これらがなければ、複数のテーブルをm:mの関係で結合できます。これはファントラップと呼ばれ、誤った合計を返します。個々のファクトテーブルが共通のディメンションに集約されるように、つまり、結合される前にロールアップされるようにモデルをセットアップする必要があります。これを正しく行うと、エラーのクラスがなくなります。ほとんどのツールには、これを防ぐためのメカニズムがあります。

4。データを集約する

これはBusiness Objectsから無料で入手できますが、Report Builderを使用して各ベースメジャーに明示的に集計メジャーを配置する必要があります。基本メジャーを非表示にし、集計を公開します。これは、システムがユーザーが選択したディメンションの粒度にデータをロールアップすることを意味します。

結論

実稼働データベース上にアドホックツールを直接配置しても、うまく機能しない可能性があります。データには落とし穴が多すぎるため、スキーマはレポートに役立ちません。これは、データマートを作成してデータをスクラブし、ツールに準備するための作業を開始することを意味します。アドホック抽出の構築にかなりの時間を費やしている場合、開発者の時間だけでビジネスケースが発生する可能性があります。

編集:レポートモデルウィザードは(ほとんどの場合と同様に)実行すると非常に混乱します。無関係な集計の生成を制限するなどの設定を調整する必要があります。過去には、合計を生成し、すべてのベースメジャーを非表示にし、集計をベースメジャーであるかのように公開することで、かなり良い結果が得られました。これにより、Business Objectsによく似た動作が得られました。特定のインスタンスでは、カウント、最小/最大、平均も公開することもできます。

私が考えている特定のインスタンスは、その中に約1,500のフィールドがある非常に大きなレポートモデルであったため、ウィザードから生成された集約フェストは、合計10,000以上のフィールドでは管理できませんでした。また、Analysis Servicesのようなフォルダー構造を設定し、これらを使用してフィールドを整理することもできます。最後に、フィールドに説明を入力すると、エンドユーザーツールでその上にカーソルを合わせると、ツールチップとして表示されます。

他のヒント

前の回答に関するコメント:
1. SQL Server Reporting Servicesレポートビルダーで使用されるセマンティッククエリモデルは、m:m関係のファントラップ/不正な合計を防止するという明確な意図を持って設計されました。この機能を有効にするために余分な努力は必要ありません。レポートビルダーによって生成されるクエリの構造に固有のものです。
2.モデルウィザードは、デフォルトで数値フィールドに集計メジャーを作成するため、集計を公開するために余分な労力は必要ありません。必要に応じて集計計算を追加または削除して、モデルをカスタマイズできます。

全体的に、古い格言「ゴミ出しのゴミ」は確かに適用されます。データがクリーンでない場合は、レポートビルダーまたはその他のアドホックレポートツールがそれをより明確にします。

アーロン・マイヤーズ
ソフトウェア開発エンジニア、SQL Server Reporting Services
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top