By Zonaira Khairi

Series 1: Optimizing Complex DATAVERSE-Semantic Models in Power BI

In the world of CRM reporting, creating high-performance, reliable Power BI dashboards can be challenging—especially when working with complex Dataverse-based data models. Did you know poorly optimized Power BI reports can drastically impact decision-making by increasing refresh times and slowing down insights? 

I recently faced significant hurdles while optimizing Power BI reports for a D365 Sales CRM project. The data model included over 25 interconnected tables, and some reports required combining data from two distinct data sources. These complexities led to inefficiencies, slow refresh times, and challenges in maintaining consistency across reports. 

By addressing these challenges with targeted optimizations, I transformed the reports into efficient, scalable solutions. In this blog, I’ll Walk you through the steps I took to overcome these obstacles and share practical tips to help you achieve the same. 

The first part introduces the challenges and steps to optimize semantic models, with a detailed focus on foundational improvements like streamlining semantic models, moving logic from DAX to Power Query, and optimizing relationships. 

Steps Taken to Optimize Power BI Reports

1. Streamlined Semantic Models:

Centralized shared logic into fewer semantic models, reducing duplication, inefficiencies, and maintenance effort. 

Step 1: Get Data from existing Semantic Model

In Home tab get data from semantic model 

Step 2: Connect with Semantic Model

You will get all the published semantic models, and you can select an existing semantic model you want to use and connect.

Dataverse Power BI Optimization

After publishing the report, you can go to the Power BI service and see that two reports are created using one semantic model.

2. Shifting Logic from DAX to Source or Power Query

Key tables were being created directly using DAX code, such as Bridge table. This approach increased model complexity and slowed performance. Tables created using DAX were replaced with transformations in Power Query or Dataverse queries. This shift improved model performance.

3. Integrating Incremental Refresh for Performance Optimization

For large datasets, I configured incremental refresh to load only new or updated records. This drastically reduced the refresh time and resource usage.

Step 1: Create Parameters

  • Go to “Home” > “Manage Parameters” > “New Parameter.”
  • Create “RangeStart” and “RangeEnd” parameters with data type “Date/Time.”
Dataverse Power BI Optimization

Step 2: Apply Parameters to Date Columns

In “Query Editor,” filter the date column using parameters:

Dataverse Power BI Optimization
Dataverse Power BI Optimization

Step 3: Configure Incremental Refresh

  • Right-click on your dataset in the “Fields” pane and select “Incremental refresh.”
  • Configure settings for historical data and refresh frequency.
Dataverse Power BI Optimization

4. Optimizing Relationship Filters for Efficient Data Modeling

Many relationships were set to bi-directional cross-filtering, which unnecessarily consumed resources and created performance bottlenecks.

Changed most relationships to single-directional filtering to minimize resource consumption.

Step 1: Identify Tables with Bi-directional Relationships

Locate the tables that have bidirectional relationships in the model view.

Dataverse Power BI Optimization

Step 2: Cross-Filtration into Single Direction

Select the relationship and cross-filter>single then apply changes.

Dataverse Power BI Optimization

Conclusion: Wrapping Up Foundational Optimizations

Optimizing Power BI reports for complex Dataverse-based semantic models can be daunting, but the results are transformative. By streamlining semantic models, shifting logic to Power Query, and optimizing relationship filters, I was able to significantly enhance the performance and maintainability of reports. These foundational improvements have laid the groundwork for faster refresh times, simplified data models, and scalable solutions.

While this first part focused on essential steps to address inefficiencies, the journey doesn’t end here. In the next blog, I’ll dive into advanced optimizations such as integrating incremental refresh, enhancing time intelligence, and transitioning to explicit measures. These techniques will take your Power BI reports to the next level, ensuring even greater performance and usability. Stay tuned!

Let's Shape the Future Together!

Ready to shape the future of your business? Connect with ITKnocks, your catalyst for innovation. Let’s collaborate and transform possibilities into reality. Contact us, and let the possibilities unfold!