One of the things we love in business intelligence is pretty pictures. We want to be able to show graphs and KPIs that really highlight information and direct people to an accurate conclusion. We also want to be able to show images that help tell a story, such as a picture of a certain location or the logo for a store. Analysis Services provides the functionality to show images, but it’s a little buried. Let’s walk through the steps of making it easier for you to access! Our final product will look like this:
Setting up Analysis Services to show the image
Let’s work with the AdventureWorks 2008 R2 sample database and Analysis Services cube. In the product dimension, there is already an attribute in the database and Analysis Services cube called LargePhoto with a data type of varbinary(max). This contains an image that is associated with each product in the dimension. In fact, in the Analysis Services dimension, we can see that it has been set up so that the ValueColumn for that attribute uses that value, while the key (and by default, the name) column uses the surrogate key of the product dimension.
To make the logo as accessible as possible, we want to include the value as a measure. This will allow report developers to drag and drop the value directly onto their query pane in Reporting Services.
Let’s create a measure called [Product Photo] with the expression:
[Product].[Large Photo].MEMBER_VALUE
Using the image in Reporting Services
After building and deploying the new cube, we can set up our SSRS dataset.
We use the dataset in a table that contains Products in the first column’s detail row, and an image in the second column’s detail row. Set up the image properties as shown here:
This will use the photo associated with that product to display as an image for each row, and you get the final product as shown above!
Version used: SSAS 2008 R2, SSRS 2008 R2, Report Builder 3.0
Comments
The "No Image..." is actually an image stored in the database. If the value is null, you can check for that and display anything you'd like.
Jessica