Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
1 year ago

Report performance is very poor.

Hello, I have the following example of a dashboard whose strong point is not performance. It has 5 slicers, 6 charts, 6 cards, and a field parameter slicer.

I have it modeled as a star (although a touch of snowflake)

It takes me a long time to interact and many times it exceeds the second. When I click on the plus symbol, it usually takes me the longest to use "Evaluated parameters" and "Other".

How can I reduce these times of GDP? The model has 380k rows (fact table) and will have to increase in rows because it is updated every day.

4 Replies

  • Try these methods to imporve performnace:-

     

    • Use the Performance Analyser, DAX studio and Tabular Editor to identify bottle necks (learrn how on Youtube and Google)
    • Consider more capacity or alternatives to the Power BI default storage which are specially geared for analysing very large data volumes. For example Fabric Direct Lake.
    • Remove unneeded rows and columns as soon as possible in a query, especially in big fact tables.
    • Use DAX measures rather than calculated columns, unless they are for filtering.
    • Learn about “Query Folding” and use it whenever possible and position incompatible commands at the end of the query, to ensure as many steps as possible are executed on the source system.
    • Use Data Flows to reuse data, rather than re-extract.
    • Consider incremental refreshes.
    • Schedule refreshes carefully to avoid conflict with peak times of other refreshes or reporting because evereyting runs on the same CPU.
    • Partition data. For example, have highly detailed recent transaction data for the previous 3 months required by the Operations department, but aggregate and summarize older data for general analysis.
    • Consider hybrid / composite data models. For example, customer tables with import mode for summary totals with a relationship to a direct query if the users want to drill down and view individual transactions for selected customers.
    • Use ETL to reduce cardinality (how many instances are related to another instance)
    • Add relationships sparingly.
    • Turn off the default auto import of relationships
    • Turn off the default auto date indexes and use a well-designed calendar table instead.
    • Use the correct data types for fields (integers, decimals, text or dates)
    • Split data/time columns into separate date and time columns, because they are more efficient.
    • Substitute string based natural keys with integer numeric surrogate keys.
    • Use null rather than zeros for aggregable columns.
    • Sort fact tables to aid compression
    • Archive data.
    • Use DAX temporary variables and best commands to improve performance. (Too many Dax hints and tips to list here).

    Please be nice and click thumbs for me suggetsion several methods.,

    and clcik [accept solution] if any work.
    You can can acceot multiple solution from mulriple helpers for the same problem.

    Thank you !

  • You can ignore the timings for "other". That includes things like time waiting for other visuals to load, and is totally outside your control.

    Given the small number of rows in the fact table I think that the DAX measures are not well optimised. The best way to get to the bottom of performance issues is using DAX Studio. 

    You can connect DAX Studio to your local instance of Power BI and enable All Queries. When that is enabled, refresh the visuals in your report, e.g. by making a selection in one of the slicers.

    Filter the output of All Queries in DAX Studio to just show Type DAX. You can then look down the list of queries checking the duration. When you find the queries with the longest durations double-clicking on the Query column will put that query into the query window so that you can read it more easily, and you can enable server timings and execute that query, looking at server timings to try and work out what is causing the performance problem.

    If multiple measures are included in the query, try commenting them out and including only 1 at a time. That should help identify if one measure is causing the problems. 

  • Anonymous's avatar
    Anonymous
    Not applicable

    HI Syndicate_Admin ,
    Thanks for reaching out to the Microsoft fabric community forum.

     

    Try These to Improve Report Performance :


    1. Analyze Visual Performance

    Use Performance Analyzer in Power BI Desktop:

    • Go to View > Performance Analyzer.

    • Click Start Recording, interact with slicers, and note which visuals are slow.

    • Export and analyze slow visuals to understand what is taking time — DAX evaluation, visual rendering, or query load.

    2. Optimize DAX Measures

    • Avoid complex nested IF or SWITCH statements in measures tied to field parameters.

    • Precompute logic in Power Query when possible.

    • Replace CALCULATE(FILTER( . . . ) )patterns with optimized alternatives like TREATAS, KPI tables, or disconnected tables for filters.

    3. Field Parameter Optimization

    Field parameters can cause model-wide recalculation:

    • Limit the number of fields in the parameter to only the necessary ones.

    • Avoid using multiple heavy measures that recalculate for each field selection.

    • Consider replacing with bookmarks or separate pages if only a few metrics are toggled.

    4. Reduce Number of Visuals

    Each visual triggers a DAX query:

    • Consider combining multiple cards into a single matrix visual or KPI visual.

    • Use toggle buttons with bookmarks to show/hide groups of visuals instead of showing all at once.

    5. Enable Query Reduction

    Go to File > Options > Query Reduction:

    • Enable options like “Disable cross-highlighting by default”, and

    • “Apply changes” button for slicers. This avoids running a query on every change.

    6. Use Aggregated Tables

    If you're slicing data that comes from detailed fact tables:

    • Create aggregated tables for visuals that don’t need detailed data (like totals or trends).

    • Use composite models or SUMMARIZECOLUMNS with pre-aggregated data.

    7. Check Relationships and Cardinality

    • High-cardinality columns (like long text fields or IDs) slow down the model.

    • Try to reduce cardinality in fields used in visuals and slicers.

    8. Turn Off Visual Interactions

    • Not all visuals need to be cross-filtered.

    • Go to Format > Edit Interactions, and disable interactions between slicers and charts where not needed.

    If the response has addressed your query, please Accept it as a solution and give a 'Kudos' so other members can easily find it

    Best Regards,
    Sreeteja.
    Community Support Team 

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi Syndicate_Admin ,

      Just wanted to check if you had the opportunity to review the suggestion provided?

      If the response has addressed your query, please Accept it as a solution and give a 'Kudos' so other members can easily find it.

       

      Thank you.