Skip to main content

Displaying Images from Analysis Services

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:

Final


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.

SSRSDataSet

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:

SSRSImageProperties

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

Ares Download said…
You have created nice blog. Also you have picked nice image. I liked it so much and think to use it. Thanks for sharing..
Unknown said…
Thanks, works perfectly. Any idea how to detect the "No Image..." situation and respond accordingly (i.e. set the expression to Nothing)
Jessica M. Moss said…
Kevin,

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
Unknown said…
Thanks for responding. I realized that later when I added a text box displaying the image contents and saw that those "No Image" rows had a value.
Søren C. T. said…
This comment has been removed by the author.

Popular posts from this blog

Reporting Services 2008 Configuration Mistake

To start working with the management side of SQL Server Reporting Services 2008, I decided to set up a report server and report manager. Unfortunately, I made a mistake while setting up my configuration that left me a little perplexed. Here are the steps I took to cause, track down, and solve the issue. Problem: I began by opening the Reporting Services Configuration Manager from the Start Menu. I clicked through each of the menu options and accepted the defaults for any question with a warning symbol, since warning symbol typically designate an action item. After two minutes, all of the warning symbols had disappeared, and I was ready to begin managing my report server. Unfortunately, opening up a browser and trying to open up the report manager resulted in the dreaded " The report server has encountered a configuration error. (rsServerConfigurationError) " message. Sherlock-ing it: I put on my sleuthing hat and went to the log file directory: C:\Program Files\Microsoft...

Manipulating Excel Spreadsheets in SSIS

Tom, an attendee at last weekend’s SQLSaturday Olympia , asked me how to refresh a spreadsheet from within SQL Server Integration Services. My first thought was to turn on the connection’s “Refresh data when opening the file” option in the spreadsheet itself and avoid the situation entirely; however, this may not always be a viable solution. Here are the steps to perform the refresh from within an SSIS package. First, ensure that Microsoft.Office.Interop.Excel is registered in the GAC. If not, install the 2007 Microsoft Office system Primary Interop Assemblies . This will need to be done on any machine where you plan on running this package. Next, create a script task in your SSIS package that contains the following code (include your spreadsheet name): Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Runtime Imports Microsoft.Office.Interop.Excel Public Class ScriptMain Public Sub Main() Dts.TaskResult = Dts.Results.Success Dim excel...

Display Top N Rows

In SQL Server Reporting Services, you can dynamically limit the number of rows that are displayed in a table or a matrix. Here are the steps to create a sample report showing this. 1. Create a DataSource connecting to the AdventureWorksDW database and a DataSet with the following query: SELECT DimEmployee.FirstName, DimEmployee.LastName, SUM(FactResellerSales.SalesAmount) AS SalesAmount FROM DimEmployee INNER JOIN FactResellerSales ON DimEmployee.EmployeeKey = FactResellerSales.EmployeeKey WHERE (FactResellerSales.OrderDateKey = 20011001) GROUP BY DimEmployee.FirstName, DimEmployee.LastName 2. Add a report parameter named “NumberPpl” of data type integer. 3. Add a table to the body of the report with the data fields of firstName, lastName, and salesAmount. Sort by the column salesAmount from ‘Z to A’. 4. Set the Filters option of the table as shown below. (This is where the real work is happening!) 5. Preview the report, modifying the value for the parameter NumberPpl to see the number...