Use a Conditional Preview Image in Paginated Reports subscriptions in Power BI

Recently in Power BI, a new feature was added for Paginated Reports e-mail subscriptions where you could optionally add a preview image in the body of your e-mail message.  By default, this is the first page of your report.  However, it doesn’t have to be.  For example, in my e-mail subscription, I see the following preview image –

image  

But when I view the report in the PDF attachment or in the web, I see the following report links as my first page –

image

How is this possible?

Well, one of the cool things you can do with Paginated Reports is set the visibility of items in your report to be conditional.  You do this by adding an expression that sets the condition for when it should be shown or hidden.  Since the preview image in your e-mail subscription uses the “IMAGE” output format, all I did was set the visibility of an item to be conditional based on that.  So I took all of the items you see in that preview image and added them to a tablix, then made that conditionally visible based on the following expression –
=ucase(Globals!RenderFormat.Name) <> “IMAGE”   

Now, the report renderer knows to hide that part of the report whenever the renderer is something other than the “IMAGE” output format.  I’ve attached the sample report below so you can try this out yourself.  You can test this in the Power BI service (if you have Premium) by setting up a new e-mail subscription with it, or in Power BI Report Builder by exporting it to a TIFF file.

Download Sample Report

Thanks for reading!

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!

Use Microsoft Flow to archive PDF’s of your Paginated Reports in Power BI

With the recent announcement around E-Mail Subscription support for Paginated Reports in Power BI, you can now have full PDF’s of those reports sent to your inbox on a regular basis. This has been an ask for quite some time in Power BI, but many users have also been looking for the ability to subscribe and have these files delivered a specific location as well, like a OneDrive for Business folder. While we don’t have native functionality for that yet in Power BI, you can use Microsoft Flow to achieve this by taking the e-mail attachment from your inbox and moving it.  Here’s a step by step way to do just that.

First, go to https://flow.microsoft.com/ and do a search for “OneDrive”

The first result returned (for me, anyways) is “Save Office 365 email attachments to OneDrive for Business”

image

Select that, and you’ll see the following recipe –

image

It’ll confirm you’ve provided your credentials for both Office 365 Outlook and OneDrive for Business

image

At this point, you can simply hit “Create Flow” and be done if you wanted to.  However, if you do so, all attachments sent to your Office 365 inbox will be saved in a folder called “Email attachments from Flow”.  Instead, you might not want EVERY attachment in your inbox to go into this folder, but instead just the ones from your Power BI subscriptions, or maybe just a few specific subscriptions.  If that’s the case, we’ll need to make a couple quick changes.  Hit the “Edit” button at the top of the screen

image

The recipe will look like this right now

image

Click on the “Show Advanced Options” under new email.  You’ll see a number of new options you can set to narrow the criteria under which this Flow will run.

image

I’m going to set one where the Subject Filter is based on my e-mail subscription subject name

image

Now it’ll only be done for that particular subscription.  However, I’d like it to add the date to the name of the file so I can easily keep track of which PDF file is for which date.  To do that, I’m going to edit this item

image

by adding two new steps and modifying the “Create file” to append the date to the attachment name.  Add two “Compose” steps – in the first, add the attachment name.  In the second, add the following expression  –

concat(utcnow(‘yyyy-MM-dd’),’_’,outputs(‘Compose’))

Finally, change the “Create file” name to the Output of Compose 2.  This will change the file name to a combination of the date and the attachment name.   Once you’re done, your steps in the “Apply to each attachment” item should look like this –

image

And your entire Flow like this –

imageimage

To make sure it works, let’s test it out.  I’ve sent myself a sample e-mail

image

So I’ll run a Test clicking the “Test Icon” in the upper right-hand corner

image

And I’ll use the data from Office 365 Outlook, since I already have the mail in my inbox

image

The test runs, and says it has been successfulimage

Checking my OneDrive folder, I see that sure enough the attachment is there with the proper date format appended.

image

That’s all you need to do.  Just hit save, and it’ll automatically run against your inbox on an ongoing basis without any work needed on your part.

Microsoft Flow, in combination with Power BI Paginated Reports, provides a powerful way to save report snapshots or, with several additional file types soon to be available for your paginated reports subscriptions, data extracts, in a central location for you to easily archive and share.

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!

Yes, you can export unlimited** rows of data from Paginated Reports in Power BI

image

This question has come up more than I can count, so I am doing a super quick blog post to answer it for folks.

Many people are well aware of the limitations around exporting data in Power BI today.  The biggest one I hear about is you can’t export more than 150,000 rows to Excel from a Power BI Report visual.  Since people always want to export data, the question came to me immediately when we released the paginated report capabilities in Power BI if we had the same restriction.  I know from several customers I’ve worked with in the past that many of their SSRS reports are/were nothing more than a single table with some parameters that users visit to dump out the data they need to an Excel or CSV file, so I wasn’t that surprised it came up.

The answer is no, we don’t put any cap on the number of rows you can export from a paginated report in Power BI to Excel, CSV, or any of the formats we support.  The only limitation is the amount of memory that’s available for Paginated Reports in your Premium capacity.  Hence the asterisk in the blog title – eventually you’ll run out of memory if you try to export too much at one time, so if you try to export a table of 1 trillion rows and 40 columns to a CSV file, I’m fairly sure you’re out of luck and will fail.  But as you can see by the picture, I exported one of my reports with over 240,000 rows out to a CSV file without a hitch.

There’s much, much more you can do with Paginated Reports in Power BI (and Patrick LeBlanc has done some awesome videos about a number of those items on the Guy in a Cube YouTube channel), but for those folks who want to use paginated reports to help them with this use case, you absolutely can do so.

Thanks for reading!

Ask Me Anything Unanswered Chat Questions Answered

Last week, I participated in an “Ask Me Anything” session where I answered questions around both Paginated Reports in Power BI, as well as questions around SQL Server Reporting Services and Power BI Report Server.

As I wasn’t able to get to all the questions posted in the chat, I said I’d answer those I didn’t get to in a follow-up post on my personal blog.  So, without further adieu, here’s a recap of the related unanswered questions with my responses.  I’ve broken them into sections focused on Paginated Reports in the cloud, as well as the on-prem offerings (SSRS/PBIRS).

Paginated Reports in Power BI

“any update on parameters? right now they are only on the page header, any chance that this area will get a makeover?”

– You’ll see us doing work to rationalize the toolbar in paginated reports with Power BI reports to the extent it makes sense.  There are certain patterns for paginated reports authors prefer in terms of parameter layout/grouping that we don’t want to disrupt, but the idea is to make the chrome around the reports look/feel similar across both report types.

Will the RLS will be available in paginated reports too?”

– Yes, when paginated reports support connecting to Power BI datasets, we will respect RLS.  We’ll also support it against other data sources when we support user-based authentication for them.

“Is there a recommended resource for testing / exploring paginated reports – i.e., a sample paginated report that can be used as a template?”

– Great question.  I’ll put together a list of resources in a follow-up post, but at a minimum recommend you download Report Builder and follow the tutorial.

“Is printing of multi-page table the main advantage of SSRS reports over Power BI tables/matrix?”

This is another good question – it isn’t an either/or, but rather which is the best tool for what you need to accomplish.  I’m going to cover this in a separate post as well.

“Is there plan to allow embedding Paginated report in SharePoint Online as we can today with PowerBI Report?”

– Yes, this is planned.

“power BI service will we get subscriptions for paginated reports in the same way we have now in SSRS? Also will this be extended to Power Bi reports and dashboards in Power Bi service. Including Data Driven Subscriptions?”

Yes!  You’ll see the current subscriptions in Power BI evolving to give you the options you have with SSRS today for both report types.  This includes scheduling, the ability to send with specific filters/parameters applied, attachment support, etc.

“for now I’m not able to find paginated reports using the search function on the Home page. Any timing when/if this is coming?”

This is a known bug that we’re working with other teams to get resolved.  You should see this fixed in the next couple months.

Power BI Report Server/SSRS

“can we share a .pbix report through emails?”

We aren’t planning to add subscription support for Power BI Reports in Power BI Report Server in the short term.

“Would love to hear about how RLS will be implemented to PBIRS.”

This work is well underway for the January 2019 release of Power BI Report Server.  It will be similar to what you do in the service today, where you set the roles in the desktop and assign users to those roles in the server through the web browser.

“And along the same lines, what about standard templates, such as headers/footers?”

This is an improvement we’d like to look at for the Power BI service as it relates to Paginated Reports, so we’d also look to bring it back to the on-prem product as well.

Looks like the other questions related these areas were all addressed either in the session or in the chat itself.  If you have additional questions, feel free to check the existing FAQ, or leave a comment in the blog comments below!