29 Power BI Best Practices
This guide covers the 29 best practices you need to improve your Power BI security, performance, and design. As the 2021 Microsoft Power BI Partner of the Year, we are recognized for our expertise in Power BI implementation and optimization.
- Enable Row-Level Security (RLS)
- Use certified custom visuals
- Categorize report data by business impact
Row-Level Security restricts user access to certain rows in a database depending on the characteristics (role) of the user executing a query. With RLS, Power BI only imports data the user is authorized to view.
Power BI certified visuals are custom visuals on AppSource that have passed rigorous quality testing. Microsoft verifies that certified custom visuals have robust, high-performance code. Certified custom visuals are the only custom visuals that can be viewed in Export to PowerPoint mode and email subscriptions.
Use Power BI sensitivity labels to classify data as high, medium, or low business impact. High Business Impact (HBI) data requires users to request a policy exception to share the data externally. Low Business Impact (LBI) and Medium Business Impact (MBI) data do not require exceptions.
By using Power BI data sensitivity labels, you raise user awareness about security and how reports should be shared inside and outside the organization.
- Limit the number of visuals in dashboards and reports
Using too many visuals on a single report slows report performance. Limit widget visuals to eight per report page and grids to one per page. Limit tiles to 10 per dashboard. In general, limit pages 30 points, assuming each type of visual is worth a different number of points:
- Cards: 1
- Gauges: 2
- Charts: 3
- Maps: 3
- Grids: 5
By default, all visuals on a report page can interact with one another. By disabling unnecessary interactions, you reduce the number of queries fired at the back end, which improves report performance.
Personal Gateway imports data into Power BI. On-premises data gateway (also known as Enterprise Gateway) imports nothing, which is more efficient when working with large databases.
If you use the same gateway for a scheduled refresh and a live connection, live connection performance will slow down during the scheduled refresh.
Custom visuals can perform poorly when handling large datasets or complex aggregations. Uncertified custom visuals are generally not tested by the Power BI team. If a custom visual performs poorly, consider replacing it with a different visual.
Create calculated measures instead of calculated columns. Where possible, push calculated columns and measures to the source. The closer they are to the source, the faster they are likely to perform.
Snowflake schema has a complex query structure, making it difficult to implement changes. Star schema is easy to read, uses fewer joins, and tends to reduce data redundancy.
Slicers are a great way of allowing users to navigate data, but they come at a performance cost. Each slicer generates two queries: one fetches the data, the other fetches selection details. Adding too many slicers drastically slows performance. To remove unnecessary slicers, use the Filter pane to evaluate which slicers are used the least.
With the tenant and data source in the same region, you can limit the effects of network latency. Sharing a region ensures faster data transfer and faster query execution.
Ensure the model is as narrow and lean as possible. Power BI works on columnar indexes, meaning longer and leaner tables perform better. When you need to import a large table, partition it and process multiple partitions in parallel.
Templates enable you to develop branded reports faster. With templates, you can save custom color palettes and themes, ensuring corporate branding is pre-applied to all pages. Templates also automatically connect to commonly used data sources and offer commonly used DAX measures.
Reduce the number of queries sent by Power BI using the Query reduction settings. For slicers, select the “Add an Apply button to each slicer to apply changes when you’re ready” option. For filters, select “Add a single Apply button to the filter pane to apply changes at once (preview).”
Many-to-many and bi-directional relationships navigate more pathways and check more data points. As a result, bi-directional relationships against high-cardinality columns negatively impact report performance.
Floating point data types can result in unpredictable round-off errors and can decrease the performance of reports.
Using a date table enables you to leverage the time-series function in Power BI. However, the auto-generated date table creates a date table for each date column, drastically increasing the model size.
You can use a single date table to reduce model size, placing any required relationships in fact tables. When building your date table, split the date and time to improve data compression. Find out how to turn off the auto-generated date table here and how to set and use custom date tables here.
Disable attribute hierarchy for measure columns and for any columns you don’t want end users to use. This reduces data size and load time.
Use bookmarks, drill-through pages, and tooltips to reduce the amount of data loaded on page load. This improves page load time for landing pages.
For static images, use report backgrounds rather than multiple visuals. This conveys the same information to the end user at a fraction of the performance cost.
- Ensure the cache update frequency aligns with the data source refresh frequency
- Use white or light background colors
- Shorten numbers
- Use tooltips to provide more information on visuals and metrics
- Use names that are meaningful to users
- Allow users to personalize visuals in a report
- Avoid scrolls within the visual and on page
- Use drillthrough buttons instead of expecting users to right-click on data points
By default, the Power BI cache update frequency is set to one hour. Cache update frequency should be set at similar intervals to data source refresh frequency. If, for example, your data set refreshes only once per day, you should update the cache frequency accordingly. This improves report performance and accuracy for end users.
White or light backgrounds are printer friendly, ensuring your reports can be easily shared online and offline.
At most, show up to four numerals when displaying numbers. Be consistent across decimal points, limiting measures to two numerals to the right of the decimal point. When necessary, scale for thousands or millions.
Report tooltips are a great way of sharing additional information in a limited report space. Limit which visuals you use in report tooltips to ensure information isn’t overwhelming.
Power BI allows you to give aliases to report objects. Avoid ambiguity for end users when naming columns and measures by using business-friendly names. To avoid confusing users, consider hiding unused columns.
Enable “Personalize visuals” in report settings when sharing reports with users. This enables users to gain further insights through ad-hoc exploration. Combine this feature with personal bookmarks to enable self-service BI.
Multiple scrolls on a single page lead to a negative user experience. Limit your page size to the standard report sizes when possible. Use the Bookmark and Selection pane to toggle the visibility of visuals if needed.
Drillthrough buttons are more intuitive than right-click because they clearly signal actions and results to users. Use conditional formatting to ensure button text is context-driven, further enhancing the user experience.
- Optimization guide for Power BI – Microsoft Corporation, published January 28, 2022
- Visualizations in Power BI reports – Microsoft Corporation, published November 5, 2021
- Tips for designing a great Power BI dashboard – Microsoft Corporation, published September 15, 2021
Download the Infographics
- Best practices for Power BI security
- Best practices for Power BI performance
- Best practices for Power BI design
Check out our free Dr. Power BI tool. Dr. Power BI analyzes your Power BI reports to identify quick solutions for common problems.
DAX Best Practice Guide
Improve your Power BI speed and functionality with our 22 DAX best practices
Read More →