Forum Discussion

h4tt3n's avatar
h4tt3n
Icon for Helper V rankHelper V
6 years ago
Solved

Power BI laptop installation using explicably large amount of memory, causing errors

Hello folks,

 

Power BI premium user here. I am using Power BI installed on a laptop to create energy consumption reports to our customers. They are typically in the ten to hundred thousand row range and haven't caused any performance problems so far. But after returning from the christmas holidays it appears that my reports consume considerably more ram than before, and the "bigger" ones ( ~45k rows ) won't refresh and throws the following error for each table, some of which are a single row.

 

Refresh

'.
Some_Table
Failed to save modifications to the server. Error returned: 'There's not enough memory to complete this operation. Please try again later when there may be more memory available.
'.
Close

 

Strangely, when I refresh in query editor it works just fine, but as soon as I click "save and upload" and exit from query editor, I get the data refresh error again.

 

I have 8 GB of ram installed on the laptop, which honestly should be several orders of magnitude more than the task ought to require. I find this quite inexplicable, and of course unacceptable too.

 

I had a colleague do the report refresh on his 16 GB machine,  and it just barely worked (ram consumption rose to ~95%).

 

Can anyone please help me understand what is going on here and help me solve the challenge? As mentioned, the reports were able to refresh before the holiday but are unable to do so now, although they and the laptop are both unchanged. Please do not advise me to add more ram (I can't anyway).

 

Cheers & a happy new year,

Mike

  • Okay, I found the error through simple trial-and-error, simply by deleting memory consuming parts of the report until refresh started working again. It turned out to be one single calculated column whose only function was to subtract a number in a row with the previous number (sorted by timestamp):

     

    DeltaIntakeTempCC = Data[IntakeTemp] - LOOKUPVALUE( Data[IntakeTemp], Data[Timestamp], CALCULATE( MIN( Data[Timestamp] ), FILTER( Data, Data[Timestamp] > EARLIER( Data[Timestamp] ) && Data[UnitId] = EARLIER( Data[UnitId] ) ) ), Data[UnitId], Data[UnitId] )
     
    This one function consumes 16GB of ram when analyzing just 42K rows of data. Data is the table name, and IntakeTemp, Timestamp, UnitID are integer columns.
     
    Cheers, Mike

2 Replies

  • v-xicai's avatar
    v-xicai
    Icon for Community Support rankCommunity Support

    Hi h4tt3n ,

     

    The error can be caused by the dataset hit the limitation, if you are using Import mode, the .pbix file in service shouldn't more than 1G for Pro user and 12G for Premium capacity.  If it's DirectQuery, there is a 1 million rows limit for returning data. See: Limitations of DirectQuery.

     

    You may upgrade the Power BI Desktop to the latest version 2.76.5678.782 , then try it again after restarting computer.

     

    You may also try to improve the performance for the data model, see Power BI performance best practices , Power BI Performance Tips and Techniques, filter on query to limit less data returned, then republish the report to service and refresh to see if the issue occurs.

     

    Best Regards,

    Amy

     

    Community Support Team _ Amy

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

    • h4tt3n's avatar
      h4tt3n
      Icon for Helper V rankHelper V

      Okay, I found the error through simple trial-and-error, simply by deleting memory consuming parts of the report until refresh started working again. It turned out to be one single calculated column whose only function was to subtract a number in a row with the previous number (sorted by timestamp):

       

      DeltaIntakeTempCC = Data[IntakeTemp] - LOOKUPVALUE( Data[IntakeTemp], Data[Timestamp], CALCULATE( MIN( Data[Timestamp] ), FILTER( Data, Data[Timestamp] > EARLIER( Data[Timestamp] ) && Data[UnitId] = EARLIER( Data[UnitId] ) ) ), Data[UnitId], Data[UnitId] )
       
      This one function consumes 16GB of ram when analyzing just 42K rows of data. Data is the table name, and IntakeTemp, Timestamp, UnitID are integer columns.
       
      Cheers, Mike