This is the definitive guide to income statements in Power BI. It includes tips and tricks, new features in Zebra BI visuals, and specific best practices for making your income statements more understandable, actionable, easier to create, more flexible to work with, and much easier to maintain. We will look at how to prepare your data, how to make a basic income statement in Power BI, and how to move forward once you know the basics.
Note: This Definitive Guide to Income Statements in Power BI is based on our 1-hour webinar on the same topic. If you prefer to watch the video, scroll to the bottom of this tutorial, enter your details, and we'll send you the webinar recording and all PBIX examples to go along with it.
The first look at our Power BI income statement
Here is what we will be building - our income statement, Profit and Loss statement, or P&L statement, which is much more than that.
Let's look at the main features:
This is a hierarchical statement. You can expand and collapse specific rows - for example, the cost of goods sold in this example comprises product cost, service, and other costs. We are using a hierarchy with several levels.
They included calculations. You can track KPIs, such as operating income as a percent of revenue or net income as a percent of revenue.
Live comments. Different comments are shown to explain your data if you switch between months.
Report view switching. In addition to switching between month-to-date and year-to-date views, you can switch from the income statement to the balance sheet and cash flow views. Each of these views also contains dynamic comments and all other features. One simple slicer gets you access to the holy trinity of financial statements.
The anatomy of a financial report
So, what do you need to build something like this?
Here are the 10 things that make up this effective report:
The calendarfilter because you're reporting by month and year.
Period calculations so you can switch between month-to-date and year-to-date views and full-year views.
Account hierarchy is crucial for every financial report. The structure of your accounts needs to be clean, and data from several sources must be merged. It has to have a proper hierarchy across several levels and so on.
Subtotals are essentially calculations of your rows. For example, the cost of goods sold comprises product, service, and other costs.
Results are similar to subtotals but offer more. Instead of just aggregating your financial data, they are calculations. Take the gross margin row, for example, which is calculated as revenue minus the cost of goods sold.
Inverted rows that allow us to work effectively with KPIs. In financial reporting, some KPIs are wrong, and some are good, so you need a way to handle this in your visualization.
Report switch to move between different reports.
Visualization so you don't have to rely on tables alone but can tell a story with a combination of tables and charts. In this example, we used very effective waterfall charts.
Variances are at the heart of any business report, like the income statement. They show how your results stack against your plan, the previous year's results, etc.
Comments are very important for financial reporting as financial reports are typically delivered to the top management, who prefer comments. They need short explanations that explain what's going on.
Watch video recording & Get follow-along PBIX example
If you are one of those who rather watch video tutorials when you have time on your hands, enter your data below to get immediate access to the full 1-hour video recording of the webinar and all PBIX examples used in the this tutorial.
Preparing the financial data model
Where to start if you want to build a Power BI income statement? First, you must fix your data, which is a significant challenge.
Let's start with the ideal financial model. Ideally, your fact table would consist of nothing but numbers.
Your main fact table with numbers shown in Power BI
In addition to values, our fact table has data about accounts (AccountID), business units (BusinessUnitID), date, and scenarios, which describe whether this data is actual, plan, or forecast data.
Around this data, you have dimensions. You probably have a table named Accounts. This table should contain the whole hierarchy of your accounts and the entire structure. This table is then related to your fact table to ensure that accounts properly filter your values and other data.
A sample accounts table
Next are the Calendar table, your fact table, and the Period calculations table. For financial reporting, it is recommended that you use a short and straightforward disconnected table for your period calculations.
A sample calendar table
You might also have business units or regions or another way to group and categorize your data.
If you want to use dynamic comments, create another fact table containing all your comments. It should be linked to your calendar to ensure your comments refer to a specific month.
You also might want to link your comments table to your account table to comment on specific accounts, such as product revenue, costs, or a specific cost type. If you need comments on specific regions or business units, relate your comments table to these dimensions.
Below is the screenshot of a sample data model showing the central fact table (Financials) with comments (another fact table) and individual dimensions, such as business units, accounts, calendar, and period calculations. The data model also shows relations between individual fact tables and dimensions.
The basic data model for financial reporting
Merging the data
The next step is to populate the data into our model.
You should put all your data - actuals, plans, and previous year - into a single table.
The important thing is to prepare a hierarchy of your accounts, such as product revenue, service revenue, gross margin, etc. You might have several levels of hierarchy. For example, your inventory falls under the current assets group that falls under the more general assets group. Each of these columns needs to have an ID. These IDs will serve you as you display your data in different reports.
We used a trick to create a slicer for switching between different types of reports. We have merged the accounts from the income statement with those from the balance sheet and cash flow statements.
A table with merged accounts from different report types
We now have all the accounts in the same table. The idea here is very simple - after merging the tables, we added another column (ReportType) that marks each row with the report type. This allows you to filter out all the accounts for the income statement, balance sheet, or cash flow report.
We'll use this ReportType column to create a slicer a bit later.
Marking the important KPIs
Here is another helpful trick. We have marked certain accounts. Such as Revenue or Gross margin as an important KPI. This value is stored in the IsKPI column and marked with value 1.
Creating an IsKPI column that will help us quickly filter out the most important KPIs
This will help us build quick financial reports from across the three types of financial reports. We can mark certain accounts from our Power BI income statement, balance sheet, and cash flow statement as necessary. Then, we can quickly create reports with data from all three statements.
We can do that because we merged everything into a large data table.
Let's add a Zebra BI Table. We're using the latest version that offers some exciting features.
Start by adding the actuals (Value AC) and the comparison to the previous year (Value PY) from the Financials table. Then add the Account field to the Category placeholder to get a simple income statement.
A simple income statement in Power BI
The next step is to add the Account Groups field and drop it in the Category placeholder in the Visualizations pane.
Switch the previous year (PY) and actual revenues (AC) columns to the waterfall chart view.
Switching the chart to the waterfall chart view
Then switch sorting to Sort by Account Group and Sort ascending.
This is something you need to get right in your data. To get the sort order of your accounts right, you have to make sure that the IDs of your accounts are sorted in the right order in your table of accounts.
You need to give the correct IDs to all your accounts - for example, your product revenue will be your number one, your service and other revenue will be number two, and so on.
The same goes for your account group IDs. Your revenue here is the first account group. Your cost of goods sold is the second account group, and so on.
If you didn't do this, your accounts would have been sorted alphabetically by default, and you don't want that.
Once we have that in place, we must ensure that the rows with expenses, costs, and so on are inverted. You have two options to do this.
If you're using regular native Power BI visuals, there's no way to handle this. You must return to your data and ensure your costs are negative numbers. Many people do that, but we believe keeping positive numbers across the board is better.
If using the Zebra BI visuals, right-click the row name and ensure you invert this number. You can invert numbers like product and service costs.
Inverting the costs of products
These costs make up the cost of goods sold subtotal, which is automatically summed up and inverted because we have correctly set up the hierarchy of accounts.
A gross margin account is another type of subtotal. However, it's a result. In Zebra BI, right-click on it and mark it as a result. Zebra BI then takes the revenue and the costs to calculate the gross margin immediately.
Marking the Gross margin account as a result of revenue and costs
You should then invert your operating expenses as they constitute costs and mark Operating Income as a Result. Income before income taxes is another result, and the Provision for income taxes is also inverted as an expense.
Your final income is, of course, a result of preceding accounts.
If you use Zebra BI, you don't have to do anything special about variances because our extension does it all for you. It automatically adds the absolute variance to the previous year and the relative variance to the previous year. Find out more about presenting variances in a way that makes an impact.
Absolute and relative variances in Zebra BI
Adding a formula to your Power BI income statement
Next, we are adding a formula for the gross margin percentage. The formula editor is a new feature only available in Zebra BI 4.5.
We'll add the Gross margin percentage by using a formula. Right-click on the account name and click Add Formula.
Adding a formula to your report
The formula for this is:
Gross margin % = [Gross margin] / [Revenue]
It's all very intuitive. Start typing Gross margin, and Zebra BI will suggest the right account here. Confirm the suggestion by clicking or pressing Tab.
If you are working with a percentage number, click the percent button to format this formula as a percent.
You also have some formatting options, such as decimal places, bold, and italics. Once you're done, click Add. This adds an entire row and calculates values for all columns.
Interface for adding and editing formulas
You can do the same for other calculations, such as operating income as a percentage of revenue. Add another formula:
Operating income % = [Operating income] / [Revenue]
Switching between three financial statements
Now let's look at the slicer. The easiest way to understand how it works is to remove it. Once you remove it, all your accounts are shown - your P&L, cash flow, and balance sheet.
Power BI income statement with the slicer removed
The easiest way to restore it is to take the Report Type field from your Accounts table and drop it onto the visual. Once you have it there, turn that part of the visual into a slicer using your Visualizations pane. You can use it as a dropdown menu or turn it into a horizontal list for easier switching.
You can then move on to editing your balance sheet. You must also invert liabilities to make sure your visual makes sense.
Adding dynamic comments
While we previously explained how to build a comments table, I would like to share how to add comment markers in your visual to indicate where comments belong.
To learn more about creating dynamic comments in Power BI, look at our ultimate guide (+ PBIX example) here: Dynamic Commentary in Power BI.
This is another new feature of Zebra BI 4.5, and it adds a new placeholder to your Visualizations pane. Add two fields to it: comment number and the actual Comments. Add the Comments field as a secondary field in the Comments placeholder.
The new Comments placeholder in Zebra BI
Zebra BI visual lets the user hover over the numbers on the visual and see the exact tooltip text above the comment marker.
You can even design the tooltips. Do this in the standard tooltip settings of Power BI, where you can choose the color, text size, transparency, and other properties.
Advanced income statements in Power BI
You have now laid the groundwork for different reports. For example, you might not want to switch between months using the dropdown menu and would like to have them in one table.
To do that, take your Month field from your Calendar group and put it in the Group placeholder. Then remove the dropdown month selector. This creates a wide table that needs to be worked on a bit. You can condense it and focus on actual and variances, hide some columns, and reduce the font size.
There is one more thing you can do on a table like this. You can add quarters where the months making up individual quarters can be collapsed or expanded.
Quarters grouping results in the income statement
It's easy to do. Just add your Quarters field on the top of the Month field in your Group placeholder.
Quarters added to the Group placeholder in the Visualizations pane
You could also add a grand total which is essentially your year-to-date value. Hover over the Q1 label on your chart so a small plus sign is displayed. Click on it and select the Show grand total item. This will add the grand total as the last column in the table.
Using Period calculation
You can build on this view and create a month versus year-to-date view. Remove the Month and Quarter fields from your Group. Then, instead of using the MTD and YTD slicer, you can take your period calculation and put it in the group placeholder.
Visualization showing month-to-date and year-to-date tables on the same page
This gives you a tremendous single-page overview of your month-to-date and year-to-date data. You can select individual months on the horizontal month slicer to switch between them.
Instead of the period calculation, you can now bring in your business units to do a breakdown by business unit. Replace the Period calculation field in your Group placeholder with the Business unit field to get the income statement for all the business units.
P&L statement by business groups
The powerful thing here is that you have all the data ready, and you could easily switch to a cash flow view if you had the data. And that is the beauty of merging all your accounts into one big accounts table. You can do all your financial reporting directly using just one data model.
Trend charts
One thing that is kind of chronically missing in financial reporting is trend charts. Financial reports are typically just tables, although it doesn't have to be like this. You should ensure that you also include charts showing the trends in the movement of values. Let's look at the example we'll be building.
Trend charts showing movements in values
Start by adding the Zebra BI charts visual. We'll compare actual values versus the previous year's values broken down by month. Add Value AC to your Values placeholder, Value PY field to your Previous Year placeholder, and Month field (Calendar table) to your Category placeholder.
Creating trend charts
To make sure you can switch between different KPIs, pull your Account groups field onto your workspace. This lists KPIs you can switch between gross margin, operating expenses, operating income, net income, etc.
An even better approach is to take the Account groups field and pull it onto your Group placeholder. This creates multiple charts within the same visual or small multiples. This is one of the best features of Zebra BI charts.
Small multiples with the most important KPIs
Because we merged all the accounts, you could also switch from this P&L statement to your cash flow report balance sheet.
Let's look at one more trick here. If you look at the chart, you see your revenue grew by 4.5%, but your gross margin stayed almost the same. Something happened here, and you can find the culprit in the cost of goods sold, which grew by 12.5%. You need to invert this element to show this is a negative development. Simply right-click on the label and select Invert.
Inverting a chart to show negative trends
The waterfall (bridge) chart
The bridge chart is interesting, especially for the cash flow or net income. Essentially, you have the opening and closing balance of your cash. You take all the changes and present them in a waterfall chart.
A waterfall chart showing the impact of different factors on cash flow
In this case, we could invert the chart, something made possible by the Zebra BI charts visual. In the Visualizations pane, click the Formatbutton and expand the Chart settings. Then toggle the Show vertical charts option.
Inverted bridge chart showing a breakdown of the cash balance
The bridge charts work quite nicely in financial reporting, and the financial management and the top executives love these types of charts. You can do the same thing with the net income plan or the previous year and compare it to net income actuals. If you are unsure which chart to use, our tutorial on choosing the right visual will help.
How to impress with your Power BI income statements
We began by preparing the data and data model for a rich visual report that integrates three of the most common financial reports - income statement, balance sheet, and cash flow report.
Leveraging advanced Zebra BI features, we turned a basic income statement report into a rich and meaningful report that integrates groups, variances, dynamic comments, calculations, and period calculations.
Enter your data below and get the follow-along PBIX file to try this.
Watch video recording & Get follow-along PBIX example
If you'd like to try any of these tricks yourself, enter your data below to get immediate access to the full 1-hour video recording of the webinar and all PBIX examples used in the this tutorial.
If you take just a couple of minutes, you can rethink your approach to creating and designing your business reports. In this article, you can find key Excel report templates for some of the most commonly used business reports.
This is the definitive guide to income statements in Power BI. It includes tips and tricks and a couple of new features in Zebra BI visuals. I have been able to construct full financial statements that conform to predefined layouts.
Hi Asif, only the result is bolded by default, all the other things you need to bold manually. Right-click on the Row >> Format >> B. Hope this helps. 🙂 If you need more details check out this article.
Thanks for checking out our blog post! I’m part of the Zebra BI team, and I just wanted to jump in and share something. If you’re looking to start making actionable reports, we’d love for you to try our product for free (Free Zebra BI version)!
And here’s a little something extra: use this link to get a special 10% discount if you sign up.
Excelentes gráficos
|Thats amaying what you do
This is the definitive guide to income statements in Power BI. It includes tips and tricks and a couple of new features in Zebra BI visuals. I have been able to construct full financial statements that conform to predefined layouts.
Thanks, Dan!
I tried keeping layout same with bold font, +-= signs but unable to do it myself. Is it the feature of paid version?
Hi Asif, only the result is bolded by default, all the other things you need to bold manually. Right-click on the Row >> Format >> B. Hope this helps. 🙂 If you need more details check out this article.
Excellent!
Superb!
Amazing!
Hi Gabriel. Thanks a lot for your feedback. We appreciate it. 🙂 Can we kindly ask you to give us your feedback here.
Thanks for checking out our blog post! I’m part of the Zebra BI team, and I just wanted to jump in and share something. If you’re looking to start making actionable reports, we’d love for you to try our product for free (Free Zebra BI version)!
And here’s a little something extra: use this link to get a special 10% discount if you sign up.