SSRS stacked bar chart multiple series, utilizing category groups for different date fields - reporting-services

The source data is a SSAS cube, which contains information about tickets, particularly priority, date opened, and date closed.
Each ticket has a priority and date opened value, though the closed value may be null or another placeholder value (subject to change).
A ticket is represented by a record in the source table with the mentioned attributes, and in the cube each of the dates are linked to a date dimension record (with the exception of the potentially null closed date).
I utilize a named-set to limit the data from the cube to the past 13 months.
The desired result is a multiple column stacked bar chart, the Series Grouping should be Priority thereby creating the stack with Y-axis representing a ticket count dependent on the X-axis which is a grouping by month.
Each month grouping should have a stack dependent on the opened and closed dates.
The closest I've come is utilizing the category expressions but I have beginners knowledge in this.
Any suggestions in either the way I'm pulling the dataset from the cube with MDX to alleviate the creation of the chart or features of the SSRS chart control are welcome.
Thank you.

After exhaustive investigation, it seems that this is a common problem when using Role-Playing Dimensions in your OLAP cube. That is multiple joins from a single fact back to a single dimension. For example when attempting to generate a report with Date on an axis, where the Date dimension is the Role-Playing Dimension, there is a non-user friendly experience.
This article helped in providing a solution to modeling the data in a slight different way.
http://visual-intelligence.nu/how-to-avoid-role-playing-dimensions-in-ssas/

Related

Preserving row labels where no data exists SSRS Tablix

I have a dataset that shows capacity groupings for grads of different years. Groupings as follows:
0-100000
100000-250000
250000-500000
500000-1000000
1000000+
However for some of the years there are no grads which fulfil any of the capacity groupings. How do I still retain these labels, even if there is no data?
Need
I've seen similar issues posted, but nothing that quite captures exactly what I am trying to accomplish. So far I've tried to add blank rows in the backend SQL by unioning in a temp table to fill all the blank values, but it seems a bit cumbersome/inefficient... Is there some kind of trick within SSRS or does it really just come down to data manipulation with SQL?
-Thanks

SSRS 2016 - Customise Output based on values in data

I have been tasked with creating a report that needs to display in chronological order, but within that report there is data from 2 sources that covers 2 different areas of business.
What I have been asked for, is when the type of business changes, the header row is repeated with the correct column headings for that type - i.e. :
Type 1 :
Order Ref / Sales Exec / Contract Term / Despatch Date / Agreement Type / Hardware ID
Type 2 :
Order Ref / Sale Type / Contract Term / Despatch Date / Start Date / Hardware ID
Also each header row should have a different background color by the type also (although I think I can do this already). Within the report the header row could be needed multiple times if the types flip from one to the other as the report traverses through the orders in date order.
I was first looking at adding a grouping by type, but that will interrupt the chronological flow of course.
Just to complicate matters there are different numbers of item columns for each type in reality, but I might have to just leave blanks where we have less columns for one type.
Or is there some way of having sub reports that are reporting for an "outer loop" of the actual order references?
It's almost like I need to construct the report in some sort of looped code.
How can I achieve this?
You can do this using table grouping. The outermost group would be by day and then within that you would group by type. Within that you can add a group that isn't grouped by anything so that it will list all the details depending on the number of records in the dataset. So the design would end up looking something like this:
This is how it looks when you run it.
Of course you can play around with how everything is organized, but the general structure should work for you. Or at least point you in the right direction.

Creating a Stacked Pareto in SSRS 2016

I work in a manufacturing environment. We record defects (scrap and rework) on parts for 9 different reasons (eg Weld Fault). I need to chart this for a dashboard in SSRS.
In SSRS, I am pulling the data out into a stacked bar chart so I can see total defects per defect type (and it's split by Scrap / Rework) , and this works great, however I want it to appear as a Stacked Pareto format (so, most common on the left, and reduces down to the right)
I'm relatively new to SSRS so this is a learning curve. I'm guessing I need to do something with the Running Value - I've looked at using this to sort by, but according to the error received I cannot sort by RunningValue.
Does anyone have any suggestions as to how I could create a stacked Pareto?
Assuming you already have a stacked barchart, but it is not sorted largest to smallest.
All you should need to do is right mouse click on your category group, then click on the sorting tab then enter into the Expression something like
=Count(Fields!Type.Value)
or
=Sum(Fields!Items.Value)
Depending on whether your bars sum a field or are counts of records in your dataset. It should be the same as the series calculation, ie what highlighted below
To make largest to smallest you will need to change the sort order to Z to A.

Calculated measure on role playing dimension?

I have a ssrs report based on a ssas cube. In the report I want to group the companys results by organizational structure. The structure can change from year to year and the history is kept in a SCD 2 dimension. The organizational structure is grouped in 4 levels (Division, Work Area, Base unit, Responsible Unit). All results are registered on the lowest level. A usuall action is that a Resonsible unit is moved between Divisions.
In the report I want to have 2 columns, the results for choosen year in the first column and the result for previous year in the second column. The user can choose wich year he/she wants to run the report for. In the cube I have created two Calculated measures, Result_current_year and Result_previous_year. My fact rows are connected to the dimension with a warehouseID (AE_WID_HISTORY).
Now to my problem. The measures are bound to the organizational structure that was present in that year. This is not what my customer wants. They want to compare the result from both years according to the organizational structure of the current year.
My idea of solution is to create a new column in the fact table that holds the foreign key to the row of the dimension representing next years organizational structure. The problem is that this value doesnt exist when the row is created. To accomplish this I have to loop over the fact table the year after and update all rows with the correct value. In the cube I would then create a roleplaying dimension that represents next years organizational structure. In my calculated measure "Result_previous_year" I would then use this roleplaying dimension.
Is this possible and if YES, how would the MDX for the calculated measure "Result_previous_year" look?
I honestly think that your problem definition is your answer.
They want to compare the result from both years according to the organizational structure of the current year
This means that there is no point in going through all the hassle implementing a SCD.
All you need is the current snapshot of the dimension structure and to make sure all facts have the real ID of Responsible unit (not the one generated by the warehouse). That way, no matter where the RU ends up next year, all the sales history will automatically move with it into the next years organisational structure.
As for the MDX for previous year, it depends on details of how things are structured in your case, but basically hooking on to [DimDate].[Year].CURRENTMEMBER and .LAGing that should be all that is necessary to find the 'previous year' member. Consider as well creating relative time hierarchies which would contain Current Year, Previous Year, Current Month etc. This makes report development sooooo much more convenient! When you write your query MDX you can reuse these relative items independent of the measure. That way you will avoid creating year-based measures as well.

Span chart series across multiple charts. SSRS Report Builder

I have a report which contains input parameters "Server Groups" and "Servers"
The report displays a number of performance metrics (in chart form). Each metric has it's own chart and data is obtained via a SCOM database.
The problem I'm having is that some server groups contain many servers usually over 10 which makes plotting data on a chart (+10 Series) very cluttered and difficult to read.
Is there a feature within Report Builder 3.0 that will generate a second chart and plot series # 6-10 and a third chart for series # 11-15 and so on?
I've looked at placing the chart in a matrix and also using multiple chart areas but haven't been able to find a solution.
Can anyone suggest a solution, perhaps there is a expression I could use?
Thanks
=================================
OK, I had put this issue aside for some time but now I had to revisit it. It still remains unresolved but I think I'm getting closer.
I can place the charts in a table and then group the table by the series data (servers). This will give me one series (server) per chart. I can also use this expression... =Ceiling(RowNumber(Nothing)/10)
which would work if I wanted to generate a new chart per X number lines retrieved from the database. The problem is there are many multiple lines of data per series because there is a date component to the data retrieved.
Can anyone suggest an expression that might fit my requirements?
One thought is to put your chart inside a list. Then you would need to add a column to your results that assigns the group. I'm not sure the best way to do that for your dataset, but if you can find a way to come up with a ranking of your servers from 1 to n, and then use a case statement to assign servers 1-5 to group 1, 6-10 to group 2, etc. Then your list can use this server grouping. The rendered reprot will show a chart containing data for each server grouping separately.