Use Outlook, Microsoft Flow and Paginated Reports to create Power BI Report and Dashboard E-Mail Subscriptions with PDF attachments

image

I hear this ask quite a bit these days – I want to be able to create e-mail subscriptions with PDF (or other file format) attachments of my full Power BI report or dashboard.  Well, you can actually do this already, thanks to Microsoft Flow and Paginated Reports in Power BI Premium or SQL Server Reporting Services/Power BI Report Server if you chose to do so.

If you read my blog post last week, I showed you how to use Flow to take your e-mail attachments and save them to a OneDrive for Business folder.  While I did it for PDF’s in that example, you can do it for any attachment type, including images, which is what you get today as an attachment when you subscribe to a Power BI Report or Dashboard.  The challenge is if you want an attachment of a full Power BI report, you only get one report page image per subscription.  However, you can stitch those items together into a paginated report that’s hosted either in Power BI Premium or SSRS and set that up as a subscription with a full report attachment.  Here’s how –

Let’s say I have four report pages total in my Power BI report.  I’ll create four subscriptions, 1 for each page.

image

Next, I’m going to create a paginated report where I show each of those images on a different page.  Since they are optimized for landscape, I am going to change my report properties to landscape in Power BI Report Builder.

image

With paginated reports, you can surface images one of three ways in your report.  You can do it either as an embedded image, an external image, or from a Database. 

image

Embedded images are what I used for the Paginated Report Bear sample report – I literally just saved the image files in the rdl you could download.  That doesn’t help in this use case. 

If I want to use an external images for each of the files, which is a URL image I point to, than I can create a Flow where I save the e-mail attachments from my Power BI subscriptions to a folder in OneDrive (personal), and then use the embed URL from each of those images as external sources for my report.  Each time I save a new image with the same name, my embed URL doesn’t change, so I can update the images as often as I like using Flow and my report will always show the latest.  I just need to add four images to my paginated report, each with a link to one of the report page URLs, and I’m done!

Anyone who cares about security is going bonkers right now, since sticking them in my personal OneDrive means they’re publicly available to anyone in the world.  A better (and safer) solution I’m using is saving them to an Azure SQL database, and then surfacing them as “Database” images in my paginated report.  My flow looks like this for that scenario –

image

What I did here was create a table in an Azure SQL database with three fields, and the Attachment field is an Image field.  (This is an admittedly sloppy table written for a blog post vs. production use.)  I also narrowed down the scope of the attachments by limiting the flow to those e-mails from the following address (I could be even more precise, but dinner is waiting in the other room) –

image

Now when my Flow is triggered (it checks my inbox every minute), if it finds a new item matching that rule, I see a new entry in my SQL table like so. 

image 

With them saved to a SQL database, I have a few different options how to surface them in my report.  Either I do them as standalone items with a page break in between (Check out these two pages when I export out the report out to Word) –

image

With this method, I’m setting my SQL query to always show the most recent image for each page of my report.

Or perhaps in a table as a collection showing different report states over time if I want to show all the report images

image

Now, with my images saved in a paginated report, I can load it to either the Power BI service OR SQL Server Reporting Services, setup my subscription, choose the output format (PDF, Word, etc.) and there you have it – full report attachments of my Power BI reports sent as e-mail subscriptions!

Thanks for reading!

Create your first table export report from a Power BI Dataset in Paginated Report Builder

Welcome back!

In last week’s post, I promised to walk you through how to create a simple table report in Power BI Paginated Report Builder from a Power BI dataset.  Why would someone want to do this, you ask?  Well, how many tables in your Power BI Desktop reports look like this?

image

So while you can interact with it in the browser and scroll to see all the rows, when you export it out to PDF, it looks like this.

image

Having tables in Power BI reports auto-expand when exporting is a common ask amongst Power BI users.  Unfortunately, the current behavior won’t be changing anytime soon.  With paginated reports, however, your tables can auto-expand across several pages upon export, and they’re designed for just this type of use case.  Let’s walk through how to build a paginated report for this table against the same Power BI dataset.

Make sure you’ve downloaded and installed Power BI Report Builder as a first step.  Once that’s done, create a new blank report as your project.

image

From there, right-click on the “Data Sources” folder and select “Add Data Source”

image

You have two options at this point –

1. You choose SQL Server Analysis Services as your source and connect to your Power BI Dataset in the service.  (Currently, this requires your dataset be in a workspace backed by Power BI Premium, but this will work against datasets in non-premium workspaces in the near future.)  You’re doing so using the “XMLA endpoint” that was discussed in a recent announcement.  As Christian states in the post, use the following URL format to address a workspace as though it were an Analysis Services server name –

powerbi://api.powerbi.com/v1.0/myorg/[your workspace name]

myorg can be replaced with your tenant name (e.g. “mycompany.com”).

[your workspace name] is case sensitive and can include spaces.

If you’d prefer, you can easily copy the full URL you need from the dataset settings and paste that into your Connection string.  I’ll do that for my report –

image

My connection string looks like the following after pasting it in.  Power BI Report Builder will automatically place “Data Source=” in front of the connection string I’ve pasted in to make sure it works properly.

image

Click “OK” to save this data source in your report.

2.  Alternately, you can use a Power BI Desktop file locally as your SQL Server Analysis Services data source to create this report against by using the diagnostics port Microsoft documented in 2018.  This may help accelerate development in certain scenarios by allowing you to build this out when you’re traveling on a plane, etc, and also allow you to test performance of the paginated report in more advanced scenarios you want to tackle (I confirmed with Adam Wilson there was no issue with letting folks know about this).  Just make sure you change your connection string for your data source after publishing your Power BI Desktop file and prior to publishing the paginated report to your Power BI workspace using the information I just covered.

Now matter which option you’ve chosen, the tutorial I walkthrough proceeds the same way.

Next, right-click on the “Add Dataset” to add a new dataset to your report.

image

Datasets in paginated reports are a little different than those in Power BI reports you might be used to.  A dataset in a paginated report is just a single query that runs against the selected data source and returns data.  You can have several datasets in your report, but in this example, we just need one.

image

I’ll name my dataset, select the data source I want to run it against, and click the “Query Designer” to create my query I want to run and return data from.  As I mentioned on Twitter earlier this week, Paginated Report Builder has a visual designer that will craft the DAX query once I drag and drop the fields in I need.  I just need three for this particular query, and get the following result when I execute it.

image

Looks like I have everything, so I click OK and then save my dataset.

image

Now let’s build the table for our report.  Select the Insert tab, then click Table and choose to run the Table Wizard

image

I select the dataset I just created, and drag and drop the fields into the groups accordingly.  I want each row have a “State”, and have each “Year” be a column.  My values are a simple sum of the “DODs” field.  This allows me to have subtotals and grand totals for my groups if I choose to do so.  I have what I need, so I click Next.

image

I’ll leave the “Show subtotals and grand totals” checked and complete the table wizard.

image

I’m going to delete the column group on the right of my table that says “Total” at the top by right-clicking on it.  With that change, my table looks like the following.

image

You don’t see data changing live when you’re designing the report like you do with Power BI Desktop.  Instead, it’s a similar experience to designing a Mail Merge document in Microsoft Word – you’re creating a layout of how you’d like your report to look, then feed the data from the data source to generate the report/document.  To see the report you’ve designed with your actual data, click “Run” from the toolbar under the Home tab.

image

Here’s what my report looks like.

image

I’ll export it to PDF to confirm it will auto-expand across multiple pages, and sure enough it does.

image

If you’ve stayed with me this far through the post, thank you and you’ve finished creating a simple table report against a Power BI dataset.  There’s clearly much more I could do to make this look prettier, but it isn’t necessary in this particular scenario for my users (which is, well, me).  In a follow-up later this month, I’ll have a short final post around publishing this to the service and linking to it from my Power BI report there.

Have a great weekend!

Ten reasons why you should download and learn to use Power BI Paginated Report Builder

Happy weekend all!

Yesterday was a big day for the Power BI team, as we released the first edition of Power BI Paginated Report Builder.  Why is this such a big deal?  Well, while Report Builder has been around for years, many Power BI users have not only never used the product, they’ve never tried to build a paginated report, period.  Now they can do just that, and I’m going to cover the top ten reasons why, if you use Power BI, you should download and learn to use Power BI Paginated Report Builder.

Download Power BI Paginated Report Builder

1. It’s Free.

It’s completely free to download and use.  Who doesn’t like free?

2. It doesn’t require Power BI Premium (or even Pro) to use it.

As many in the community know, Paginated Reports are available in Premium workspaces only (Here’s a link to up vote making this feature more widely available in Power BI – Paginated Reports in Pro and Premium).  However, just like Power BI Desktop, there’s no Power BI license required to use it locally.  So not only can you author reports, you can render and view them like you would in the service.  Take a look at the sample report Paginated Report Bear created back in November in the tool –

image

I have a similar experience as I would as a consumer in Power BI, including several key items I’ll cover shortly.

3. You can use it to connect to any Power BI dataset in Premium to build reports

As my colleague Christian Wade announced last week, you can now use the XMLA endpoint to access your Power BI datasets in Premium.  Paginated Report Builder supports this connectivity option as well, and it’s super easy to do.  Simply copy the connection string from the “Settings” tab of your dataset in the Power BI service –

image

Then create a new “SQL Server Analysis Services” data source in Power BI Report Builder.  Type the phrase “Data Source =” in the Connection string dialog, paste the copied string from Power BI in there and hit “Test Connection”.  You’ll be asked to sign into Power BI, and assuming you’ve followed these simple steps, it’ll connect successfully and you can start building paginated reports with it!

image

4. You can connect to any Power BI dataset via XMLA, even if that capacity or workspace doesn’t also support Paginated Reports

While Paginated Reports are only available in a P1 SKU and above (or A4 SKU and above), the XMLA endpoint is available in every SKU, including down to A1 or EM1.  So you can create and use Power BI datasets from any workspace that supports the XMLA endpoint when authoring your reports.  The only restriction is that when we support publishing reports with Power BI datasets to the service later this month, you just need to publish it back to a workspace that does support Paginated Reports.  Don’t worry that your dataset might be sitting in a different capacity or workspace – we’ll explain more when we announce support in the official blogpost.

5. With the ability to use the same Power BI datasets used for your interactive reports, you can easily create basic paginated reports for scenarios as simple as exporting tables of data, or a print-friendly view of your Power BI Desktop report.

I’ll be the first to admit many things in Paginated Report Builder are harder for report authors to achieve than they are in Power BI Desktop.  But for many basic scenarios, like creating a simple table I know users will want to export out large amount of data from, Paginated Report Builder makes that very, very simple and is often times a better option.  I’ll have a walk through in a follow-up post where I can show you how to do either of these scenarios with your Power BI datasets, in some cases in a matter of minutes.

6. Paginated Reports published back to Power BI don’t have any data export limitations

I covered this in an earlier blogpost – Yes, you can export unlimited** rows of data from Paginated Reports in Power BI, but if your organization has Premium workspaces that support Paginated Reports, this is worth keeping in mind.  Now that you can create paginated reports against your datasets in Power BI Premium, having a simple paginated report for export scenarios might help unlock certain scenarios you couldn’t before for your users.

7. You can print your reports right from Paginated Report Builder

You probably noticed in the earlier screenshot there was a print option for a report you’re viewing in the tool.  You weren’t imaging it – you can print out your report right from the toolbar, and can even look at a Print Layout view of your report while interacting with it.  This option isn’t even available in SQL Server Reporting Services (!), and is a great way to see how your report will look once you do print it out.

image

8. You can export your report from Paginated Report Builder to several different formats, including PDF, Word, Excel and PowerPoint.

In addition to the ability to Print, you can also export to several different formats right from the toolbar when viewing your report.  This is a powerful capability that few tools have in their authoring environment right out of the box.

9. In a future update, we’ll have support to connect to Power BI datasets in non-Premium workspaces when authoring reports. 

This will make this even more of a no-brainer, as it’ll open up all the scenarios we’ve discussed in this post to any Power BI dataset.  Look for more details on this in the coming weeks.

10. There’s a lot of material to help you get started

A great place to start is with Patrick LeBlanc from the Guy in a Cube channel, who I work closely with.  He has put together several videos around Paginated Reports to help get you going.  Additionally, you should see several more in the coming weeks as more and more functionality is announced, plus the blog posts I’ll be adding as well.  I’ve added the playlist from YouTube below.

Paginated Reports playlist

I could keep going, but ten feels like a good place to stop on a lazy Saturday.  If you’ve never tried paginated reports before, now is your chance!  Go download Power BI Paginated Report Builder today and learn what all the fuss is about.

Thanks for reading!