While many people use Power BI, but never try report builder, but report builder is a handy tool for certain projects. If you have large volumes of detailed data that would take up too much space in your data model, or you find that direct queries are too slow, paginated reports can provide an alternative.
In this example, we’ll grab some data from Kaggle. I want a big customer file that I can work with. In real life, you’re most likely to be importing this from a Data Warehouse, but the only difference here is the connection and import; all the methods of work will be the same once you’ve imported the data into your dataset.
Here is the file I will use, entitled Bank Customer Segmentation 1M+ rows.
https://www.kaggle.com/datasets/shivamb/bank-customer-segmentation
The file we have is from a fictitious bank; someone has randomly generated a date for.
On inspection in Excel, the file is 1,048,569 rows

You can download the report builder for free from here:
https://www.microsoft.com/en-us/download/details.aspx?id=10594
Open the report builder after you’ve installed it and select a blank report to get started:

No the first thing we want to do is get our data, so right click on the Datasets folder and select ‘Get Data’, and you can log in your Power BI account here. If you don’t have one, there is a free trial. I’ll let you figure that bit out.
Once you’ve logged in, you’ll get the data source screen where you can select your data source. There are a whole host of data connector files here to choose from, including data warehouses such as Google BigQuery, SQL Server, Snowflake, as well as other tools such as Google Analytics, and in this case, because I’m lazy, I will just use the CSV file that I downloaded, but it doesn’t matter for learning report builder.

On the next screen, you need to enter your data connection information, but in this example, there is the option of uploading a file at the top below connection settings.
The main difference here is that with a connection to a data warehouse or whatever, once you publish your report to the Power BI service, the report will refresh with the latest data when the report is reloaded, whereas I will need to upload my file again.

Once my file is uploaded, I get a preview of the data, and I can change a few things, like the delimiter, which is set to comma-delimited by default.

Next, I click on Transform Data, which takes me down to a scaled-down version of Power Query compared to the version included with Power BI Desktop.

Here you can do things like add custom columns and format your data.
Click Create to import your dataset from Power Query into the Report Builder design window.

So let’s start by building a simple paginated report. I will use a simple table: Insert a table, and then I will drag my fields into the table.

Design and formatting the paginated report
First, we need to turn on the properties window (View > Properties), where we can easily edit things like fonts and background colours.
I got our mutual friend to create a logo for me and supplied the background colours in RGB format,
For the logo, I will add it to the head of the report (Insert Header). I add a rectangle and move the image into the rectangle, so I can control its properties. The design is now coming to life (Roar).

I can preview the report to test how it works by selecting Home > Run:
It takes a while to load as it loads the whole dataset, not page by page.
Below is the screenshot of the report in preview mode. There are a million rows, so it breaks the page across pages by default: It paginates the report. The logo in the header displays across pages, but the headers do not, so I need to fix that.

Fixing Row Headers in place with Power BI Report Builder
To fix the row headers in place, we need to do the following:
Select the table (Tablix) and select advanced mode in the bottom right corner. The row and column groups will display at the bottom of the screen.

In the row groups box (bottom left), I can control the positioning of the rows during pagination and scrolling.
I set the following for the Title row and the headers row:
FixedData = True. This will fix the row in position when I scroll.
KeepWithGroup = After. This is to stop the row from breaking from the row below.
RepeatOnNewPage = True. This I to repeat the row on each page.
I set these on both the title row and the headers row (click on static for each, and the properties will show on the right). To turn on properties, click View> Properties from the main ribbon.
Now, when I scroll, the header and title are fixed at the top of the page and also stay in place when I navigate pages.

Now we have a basic report working, let’s publish it to the service. Remember, if we had a connection to a data warehouse table, the report would grab the latest data for us, but for now, we’re lazy and just using a static file that won’t change.
To do so, Select File Publish and select the workspace you want to publish to:

Once I’ve published my report, I can view it on the service and give others access:
The report takes a while to load the 1 M-plus rows. Once it’s loaded, you can see some of the features available, such as export to Excel, which is a popular option. So can also set up a subscription to the report so the report will run and email it to you. This can be a useful option for some reports.

