Framework for Automating SQL Server Reporting Services (SSRS) data driven subscriptions – Part 2
Description: What the goal was to find a way to automate how an end user could subscribe to a SSRS Data Driven Subscription without any intervention from the Business Intelligence Developer. And also enable the end users to have their own selections. And finally if they did not want to receive the report any longer to then delete their subscription.
In Part-2 we will be creating our SSRS Report, creating the Data Driven Subscription and then finally linking this to our Power View Report
Here is the link to Part 1: FRAMEWORK FOR AUTOMATING SQL SERVER REPORTING SERVICES (SSRS) DATA DRIVEN SUBSCRIPTIONS – PART 1
So what we wanted to do, is to create a SQL Server Reporting Services (SSRS) report, then use the data driven subscription (DDS) to email the reports to the people that created the request in the Share Point List. And then finally have a link to a Power View report for more user interaction with their data.
NOTE: This will all be completed on SQL Server 2012
Example:
· We have our data from our SharePoint List stored in the following table:
o [dbo].[Mart_TD_SharePoint_ReportSubscriptions]
· We are going to create a report which will show the Internet Sales.
o Within this report it will have the Date Range Selected by the User
o It will also have the Product Line selected by the User.
· Once the report is created we will then create our Data Driven Subscription.
· We will also create a Power View report based on the same Cube where our report gets its data from.
o Once the Power View Report is created we will then add a link to our SSRS report for the users to click on for more information.
Creating our SSRS Report
The first thing that we are going to need to do is to create our SSRS report with the required parameters so that this can be used in our Data Driven Subscription.
As with our Example we will require the following parameters in our report.
· Start Date
· End Date
· Product Line
1. If need be create a new SSRS Project.
2. Then as with our example we created our report with the following name:
3. Next we created our Shared Data Source to our SQL Server Analysis Services (SSAS) cube.
a. We then added this Shared Data Source to our report.
4. We are now also going to create another Shared Data Source which will connect to our SQL Server table where we have stored our details for our DDS
a. NOTE: This will be your SQL Server where you have got your [dbo].[Mart_TD_SharePoint_ReportSubscriptions]
b. We created the following Shared Data Source as per our example:
5. Next we are going to create our 3 Parameters as detailed above:
c. NOTE: The reason for the above to Parameters that they are set to Text is because we are going to be getting these values later via our DDS, which will then be passed dynamically to our query.
i. Along with this, the end user will never use this report due to it being emailed to them.
d. Also we will be passing the DateKey Values to our MDX Query as explained further in the example.
6. Next we create our MDX Query
a. NOTE: Initially we will hard code the values so that we can create our report and test that it works.
b. So you would create your new Dataset as below:
c. Here is the MDX Query:
Selectnonempty {[Measures].[Internet Sales Amount]} on 0
,nonempty {(
[Date].[Date].&[20070701]:[Date].[Date].&[20070731]
,[Product].[Product Line].&[S]
)} on 1
from [Adventure Works]
i.
d. It would look like the following:
e. Next click on Fields, and we changed it to the following so that it is more friendly:
f. Then click Ok.
7. We then created our Chart and completed all the formatting in order to get the report looking good.
a. This is how we put in our values into the Chart:
c. So once completed the report will look like the following:
8. The next thing that we are going to do is add our Parameters to our MDX Query
a. Go into your Data Set you created above: InternetSales_Dates_ProductLine
b. On the right hand side next to query click on the Function button:
d. Remove the current MDX query and replace it with the following below:
=“Select non empty {[Measures].[Internet Sales Amount]} on 0 ,non empty {([Date].[Date].&[“+Parameters!StartDateKey.Value+“]:[Date].[Date].&[“+parameters!EndDateKey.Value+“],[Product].[Product Line].&[“+Parameters!ProductLine.Value+“])} on 1 from [Adventure Works]”
i.
e. NOTE: The above must all be on one line otherwise it will not work.
f. Then click Ok to go back to your report.
9. Now Preview the report putting in values for the Parameters:
b. After clicking View Report you should see the following:
10. Now you can deploy the report to your Reporting Server.
a. NOTE: Remember to deploy the report as well as the Shared Data Sources.
Configuring and creating your Data Driven Subscription (DDS)
1. The first thing that you will need to do is to change the data source for your report to use stored credentials.
a. As with our example we are going to complete the following for our 2 Shared Data Sources from our Report we deployed earlier
b. The reason for this is so that when the report runs from the job schedule later, it will be running from a SQL Server Agent job, which will then require a way to be authenticated for the data source.
c. So this has to be completed before configuring your DDS.
d. We configured ours to use a Domain account as shown below:
e. Then click Test Connection to ensure that it will connect and work:
f. Then click Apply to save the changes.
2. You can now test your report on the report server just to ensure that if you pass the correct parameters it will work.
3. Next we are going to configure our DDS as explained below:
a. Click on the arrow next to your report and select Manage as shown below
c. Then click on Subscriptions
d. Now click on new Data-driven Subscription
e. This will then start the Report Subscription Wizard
f. On the first screen Step 1 – Create a data-driven subscription: Internet Sales – Report Subscription we configured it with the following:
ii. As you can see from above we gave it a name.
iii. We then specified that it will be delivered via email
1. NOTE: You will have to have configured your SSRS Server to relay email through a server for this option to appear.
iv. And finally we specified to use a Shared Data Source.
1. NOTE: This is what we configured in step 1 above.
v. Click Next.
g. On the Step 2 – Create a data-driven subscription: Internet Sales – Report Subscription we then selected our Shared Data Source:
ii. NOTE: You must select the SQL Server data source connection because in the following step we are going to use a TSQL Query to get our required information.
iii. Click Next
h. On the Step 3 – Create a data-driven subscription: Internet Sales – Report Subscription this is where we use a TSQL Query to pass the details which will be required in the later steps
SELECT
[Product Line For Query]
,[Email Address]
,[StartDateKey]
,[EndDateKey]
,‘This report Subscription is for Product Line ‘+[Product Line]+‘ and Date Range: ‘+[Date Range]asSubjectDetails
FROM [dbo].[Mart_TD_SharePoint_ReportSubscriptions]with (nolock)
i.
ii. NOTE: You will see that we have put in an extra column so that we can use this as our Subject for our email.
iii. Then click on Validate, this will ensure that it can make the connection to the Shared Data Source which you configured in the previous step.
v. Click Next
i. Now on the Step 4 – Create a data-driven subscription: Internet Sales – Report Subscription, we are going to configure the sending of the email with the following below:
i. To:
1. This is the to email address
2. You will change it to Get the value from the database, and select Email Address
ii. Subject
1. This is the subject for your email that is being sent
2. You will change it to Get the value from the database, and select Subject Details
iii. In our example we changed the Include Link to No Value
1. NOTE: This is because we did not want them to click back to the report that was emailed.
iv. Click Next
j. On the Step 5 – Create a data-driven subscription: Internet Sales – Report Subscription, this is where you configure what parameters will be passed from your query in Step 3 above
i. As with our example we configured it with the following:
ii. Click Next
k. On the Step 6 – Create a data-driven subscription: Internet Sales – Report Subscription, this is where you can configure if you want to create a schedule.
i. We wanted to create a schedule so that the report would be emailed out
iii. Click Next
l. On the final screen Step 7 – Create a data-driven subscription: Internet Sales – Report Subscription, this is where you can configure your schedule which for our requirements we configured it with the following below:
m. Then click Finish to complete your Data Driven Report Subscription
i. NOTE: If you have not configured your Shared Data Source to use stored credentials you will get the following when you click Finish
ii. The current action cannot be completed. The user data source credentials do not meet the requirements to run this report or shared dataset. Either the user data source credentials are not stored in the report server database, or the user data source is configured not to require credentials but the unattended execution account is not specified. (rsInvalidDataSourceCredentialSetting) Get Online Help
iii. You will then need to go back and modify the Shared Data Source and then re-create your DDS
n. You will then see the following:
4. Now if you want to manually test this and you have access to the SQL Server, you can find the report subscription if you go into your SSRS Server and open the SQL Server Agent, then the Job Activity Monitor
a. Then the way to find it is to look for the Job Names that start with a GUID
b. As with our example it had the following name:
c. You can also confirm by looking at the Next Run
ii. NOTE: When you create your subscription it will always be for the following day to start.
d. Right click and select Start Job as Step
i. It should complete very quickly and be successful
5. Now if you go and check your email you should see the following below:
a. NOTE: For our subscription we had selected the following
i. Date Range: July 2007 – June 2008
ii. Product Line: Mountain
c. Which as you can see from above we received.
Creating the Power View Report and putting the link into the SSRS Report
1. We then went ahead and created our Power View report which connected to our SSAS Cube and looked like the following:
b. NOTE: This is before we put in any filters to only show our selection from our report.
2. Next we went back into our SSRS report and put in the following below so that we can use it as a Hyperlink in our report
a. Then in the bottom of the report right click and select Insert and then Text Box
c. Double click in the Textbox or within your table so that it is highlighted.
i. Then right click and select Create Placeholder
iii. Now this will open the Placeholder Properties
iv. In the General Window you first need to put in your text or expression into the Value area.
1. Click on the function button
2. As with our example we put in the following below.
3. You will see that we have already formatted it with our HTML Tags
=“<a href=””http://powerviewServer/powerpivot/_layouts/15/ReportServer/AdHocReportDesigner.aspx?RelativeReportUrl=/powerpivot/Shared%20Documents/Adventure%20Works%20DW%202012/Report%20Subscription%20-%20Adventure%20Works.rdlx&ViewMode=Presentation&PreviewBar=False&rf=[Product].[Product%20Line]%20eq%20%27Mountain%27 “”>Click HERE to view more information</a>”
v. From the above example we have set the Preview Bar to false so that when people are viewing the report, they can only view the report and not make any changes.
1. It is highlighted above in RED
2. &PreviewBar=False
vi. From the above example we have hardcoded our Filter above with Mountain
1. It is highlighted in Purple
2. &rf=[Product].[Product%20Line]%20eq%20%27Mountain%27
vii. Now what we will do is to replace the hardcodes value with our value from our query, which is shown below:
&rf=[Product].[Product%20Line]%20eq%20%27″+First(Fields!Product_Line.Value, “InternetSales_Dates_ProductLine”)+”%27
viii. So now the entire HTML Tag from above will look like the following:
=“<a href=””http://powerview2013dev/powerpivot/_layouts/15/ReportServer/AdHocReportDesigner.aspx?RelativeReportUrl=/powerpivot/Shared%20Documents/Adventure%20Works%20DW%202012/Report%20Subscription%20-%20Adventure%20Works.rdlx&ViewMode=Presentation&PreviewBar=False&rf=[Product].[Product%20Line]%20eq%20%27”+First(Fields!Product_Line.Value, “InternetSales_Dates_ProductLine”)+“%27 “”>Click HERE to view more information</a>”
ix. Once you have formatted your expression with your HTML tags then click Ok.
d. The final part is to enable your Placeholder for HTML.
i. Under Markup Type click on HTML – Interpret HTML tags as styles
iii. Then click Ok.
e. It should now look like the following:
3. Once the report is run or emailed it will then look like this at the bottom of the report:
4. Finally deploy your changes to your report server.
5. Then to test to make sure it works correctly, run the job again as explained above.
a. Once you get the email, as with our example we had selected Mountain.
b. After clicking the above link to view more information we saw the following Power View Report.
[…] NOTE: This follows on from the FRAMEWORK FOR AUTOMATING SQL SERVER REPORTING SERVICES (SSRS) DATA DRIVEN SUBSCRIPTIONS – PART 1 and FRAMEWORK FOR AUTOMATING SQL SERVER REPORTING SERVICES (SSRS) DATA DRIVEN SUBSCRIPTIONS – PART 2 […]