About the Series ...
This article is a member of the series MSSQL Server Reporting Services. The series is designed to introduce MSSQL Server Reporting Services ("Reporting Services"), with the objective of presenting an overview of its features, together with many tips and techniques for real-world use. For more information on the series, as well as the hardware / software requirements to prepare for the exercises we will undertake, please see my initial Database Journal article, A New Paradigm for Enterprise Reporting.
As I have stated since the charter article of the series, published about the time Reporting Services was first publicly released, my conviction is that Reporting Services will commoditize business intelligence, particularly in its role as a component in an integrated Microsoft BI solution. Having been impressed from my first exposure to this exciting application, when it was in early beta, my certainty in its destiny grows stronger by the day, as I convert formerly dominant enterprise Business Intelligence systems, such as Cognos, Business Objects, Crystal, and others, to the Reporting Services architecture. I receive constant requests to conduct strategy sessions about these conversions with large organizations in a diverse range of industries the interest grows daily as awareness of the solution becomes pervasive. Indeed, the five- to six-plus figures that many can shave from their annual IT budgets represent a compelling sweetener to examining this incredible toolset.
Basic assumptions underlying the series are that you have correctly installed Reporting Services, including current service packs, along with the applications upon which Reporting Services relies, and that you have access and the other rights / privileges required to complete the steps we undertake in my articles. For details on the specifics of the adjustments necessary to quickly allow full freedom to complete the exercises in this and subsequent articles, as well as important assumptions regarding rights and privileges in general, please see earlier articles in the series, as well as the Reporting Services Books Online.
About the Mastering OLAP Reporting Articles...
As I have noted in many articles and presentations, one of the first things that becomes clear to "early adopters" of Reporting Services is that the "knowledgebase" for OLAP reporting with this tool is, to say the least, sparse. (I recently heard an internal "reporting guru" say, during a BI strategy session with a major soft drink manufacturer in Atlanta, that "we didn't evaluate Reporting Services because it doesn't do cubes ...") As most of us are aware, minimal, if any, attention is given to using Analysis Services cubes as data sources for reports in the handful of books that have been published on Reporting Services to date. All are written from the perspective of relational reporting, as if with existing popular tools for that purpose. One Reporting Services book discusses OLAP reporting with Reporting Services, and then performs illustrative exercises with Office Web Components (OWC), instead. Another depicts an MDX snippet at the end of the book, as if as an afterthought. All of the early books focus entirely on relational reporting, and most make heavy use, typically enough, of the Books Online and other scraps of documentation that we already have anyway. (I could go on, but my overall opinion of the technical book industry is already well known.)
As I stated in my article, Mastering OLAP Reporting: Cascading Prompts, the purpose of the Mastering OLAP Reporting subset of my Reporting Services series is to focus on techniques for using Reporting Services for OLAP reporting. In many cases, which I try to outline in my articles at appropriate junctures, the functionality of the reporting solutions of well-established, but expensive, solutions, such as Cognos PowerPlay, can be met in most respects by Reporting Services at a tiny fraction of the cost. The vacuum of documentation in this arena, to date, represents a serious "undersell" of Reporting Services from an OLAP reporting perspective. I hope to contribute to making this arena more accessible to everyone, and to share my implementation and conversion experiences as the series evolves. In the meantime, rest assured that the OLAP potential in Reporting Services will be yet another reason that the application "commoditizes" Business Intelligence.
For more information about the Mastering OLAP Reporting articles, see the section entitled "About the Mastering OLAP Reporting Articles" in my article Ad Hoc TopCount and BottomCount Parameters.
In an earlier article, Black Belt Components: Ad Hoc Conditional Formatting for OLAP Reports, as well as within other articles of the Reporting Services series, we have discussed conditional formatting in general, and have set out to examine approaches to meeting specific business requirements based upon conditions. While the Immediate If - or IIF() - function is a popular means of mechanizing conditional formatting, we will introduce a somewhat more powerful function in this session, the SWITCH() function. We will perform a practice exercise where we leverage SWITCH() to achieve a desired conditional result that is a part of a business requirement of a group of hypothetical information consumers.
We will use SWITCH() to enact conditional formatting in a couple of different ways. First, we will use it to drive formatting of a value to meet requirements that are based upon the magnitude of the value itself. As a part of our practice with SWITCH() to achieve our ends, we will delve into a popular formatting convention for negative (and other "outlier") numbers. Next, we will extend our examination of SWITCH() to include its use to enforce the default drilldown states of members of a given group level within a sample matrix report, to achieve another presentation objective.
Virtually all major OLAP reporting solutions on the market provide for capabilities to meet simple conditional formatting needs. Many, including Cognos PowerPlay, make selection and application of these presentation attributes easy for even novice users. Our focus in this article, as it is within many of the articles of this series, will be to demonstrate that these features, and far more, are easily replicated within Reporting Services.
In this article we will:
- Discuss presentation nuances to meet a common business need within the reporting environment, the requirement to present one of multiple possible formats (or to "conditionally format"), based upon the value of a given report measure;
- Discuss briefly the SWITCH() function, and how it can be leveraged to meet the presentation needs of a hypothetical group of information consumers to meet a conditional formatting need;
- Prepare for our practice session by creating a project within Reporting Services, and by creating a "clone" report (based upon an existing sample OLAP report to save time), within which we will perform our exercises;
- Present, as a part of our examination of conditional formatting, a technique for formatting negative values as enclosed within parentheses, using red characters to draw attention;
- Present an approach for conditionally controlling the presentation of the default drilldown state of a given line item within a matrix report region;
- Preview the report in Report Designer, to verify the operation of the calculations that form the scope of our practice exercise.