views:

3465

answers:

2

I'm looking into the idea of rolling out the web-based SSRS Report Builder to our end users to allow them to create their own reports against our production application databases. From what I have seen so far, this tool is easier to use than the VS Biz Intel Studio report designer, plus it is easier to install, and deploying the reports is much more understandable for an end user (plus the biggest thing is no SQL I guess).

Does anyone have any thoughts or experience on the pitfalls of giving users this kind of power? Right now, we get a lot of requests to export the data to a flat file so they can read it in and then build reports in Access against it, so I figure SSRS would be better than Accesss...

+10  A: 

Some tips for report model design:

1. Build a data mart

There are several tools like Report Builder: Business Objects, Oracle Discoverer to name a couple. They all have metadata layers that get you some of the way to an end-user reporting tool, however they still really need to be spoon-fed data in a suitable format in order to produce an effective solution. This means that you really need to think in terms of building some sort of data-mart as well.

Without clean data, the tools will expose all of the gotchas in the production database, so users will have to understand these to get correct results out. This means that the reporting should really come off a clean data source.

You have approximately zero control over the SQL that these tools produce, so they are quite capable of producing queries that will herniate your production database. This means that your reporting should take place on a separate server. A schema that is friendly to ad-hoc tools (such as a star schema) will mitigate the worst of the potential issues with performance.

2. Clean the data

There is no developer in the loop with ad-hoc tools, so users will naively use the tool without knowing what the data issues are. Inaccurate query results will always be viewed as the fault of the tool. For credibility, these pitfalls need to be eliminated from the data set upstream of the tool.

3. Make the navigation robust and idiot-proof

Report builder can set up restrictions on moving from one entity to another. Without these, it's possible to join multiple tables together in a m:m relationship. This is called a Fan Trap and will return incorrect totals. You need to set up the model so that individual fact tables are aggregated on common dimensions - i.e. rolled up before they are joined. Getting this right eliminates a class of errors. Most tools have some mechanism for preventing this.

4. Make the data aggregate

You get this for free from Business Objects, but you will have to put an aggregate measure over each base measure explicitly with Report Builder. Hide the base measures and expose the aggregates. This means that the system will roll up the data to the grain of the dimensions the user has chosen.

Conclusion

Placing an ad-hoc tool directly over a production database is not likely to work well. The data will have too many pitfalls and the schema will not lend itself to reporting. This means that you are up for some work building a data mart to scrub the data and prep it for the tool. If you are spending significant time building ad-hoc extracts, there might be a business case simply in the developer time this would save later on.

EDIT: The Report Model Wizard (like most such things) makes quite a mess when run. You'll have to tweak the settings such as restricting the generation of irrelevant aggregates. In the past I've had quite good results by generating sums, hiding all of the base measures and exposing the aggregates as if they were base measures. This gave behaviour much like Business Objects. On specific instances you might also want to expose count, min/max or averages as well.

The particular instance I'm thinking of was quite a large report model with about 1,500 fields in it, so the aggregate-fest generated from the wizard was un-manageable with 10,000+ fields in total. You can also set up folder structures a bit like Analysis Services and use these to organise the fields. Finally, if entered the description on the field will show up as a tooltip if you hover over it in the end user tool.

ConcernedOfTunbridgeWells
Excellent information! Thank you - this is a great explanation of where data-marts fit in the puzzle, and these are a lot of issues I hadn't thought of.
Sam Schutte
+6  A: 
Just a few comments on the previous answer:
1. The semantic query model used by SQL Server Reporting Services Report Builder was designed with the explicit intent of preventing Fan Traps/incorrect totals on m:m relationships. No extra effort is required to enable this functionality; it is inherent in the structure of queries generated by Report Builder.
2. The model wizard creates aggregate measures over numeric fields by default, so no extra effort is required to expose aggregates. You may customize the model by adding or removing aggregate calculations as appropriate.

Overall, the old adage "garbage in garbage out" certainly applies. If your data is not clean then Report Builder or other ad hoc reporting tools will just make that more apparent.

Aaron Meyers
Software Development Engineer, SQL Server Reporting Services
Cool - thanks Aaron!
Sam Schutte
By default, what you get from the wizard is fairly messy. I tend to recommend hiding the un-aggregated measures away and renaming the sum measures, presenting them as if they were base measures. Also, make use of folders to organise measures. At one point I had occasion to make a report model that had nearly 1500 fields in total; documenting and organising the data in the report model was quite a major undertaking.
ConcernedOfTunbridgeWells
However, I think that getting clean data presented to the report model is the biggest win.
ConcernedOfTunbridgeWells