The following best practices can be used to enhance the refresh times of massive Power Pivot models that are constricted by very complex relationships in Power BI:
Optimize Relationships: Use single-direction relationships as much as possible, which will lessen the complexity available for processing. Avoid many-to-many relationships where possible, and have well-defined and indexed relationships.
Index Source Data: With database lookups, index the source columns involved in join and filtering conditions so that well-indexing speeds up querying and decreases the load time in refreshing.
Streamline Power Query Steps: In Power Query, these transformation steps need to be as few as possible. Merge or delete redundant steps; load only necessary data requiring transformation; and deactivate "Enable Load" on intermediary tables that are not needed in the final model.
Controlled Calculated Tables and Columns: Exchange any calculated tables or columns with their equivalent pre-calculated data in the source where readily achievable. Executing calculations undertaken through DAX threatens to introduce heavier workloads on the refreshes against the model.
Partition and Incremental Refresh: Implement the incremental refreshing policy for very large datasets, focusing on those that need to process changed or added data instead of reloading the entire bulk.
Optimize Measures: Check and Optimize DAX measures so that they remain efficient and do not repeat the same calculations during refresh.
Together, all these steps enhance refresh performance for large Power Pivot data models, enabling smooth and fast updates.