Forum Discussion
Incremental refresh with polling expression
Hello,
I'm facing a dataset refresh issue due to reaching the memory capacity limit and we won't be able to upgrade the capacity. We have 2 large tables that include Created Time Stamp and Modified Time Stamp columns, so I cannot implement regular incremental refresh because we could have a Created Time Stamp, for example, in July 2023 and a Modified Time Stamp today.
I read this amazing solution by cpwebb and I was wondering to know if that would be applicable in my case?
My goal is to do some partitioning in the large tables and auto-refresh those partitions (I already created a powershell script in Azure Runbooks and connected to Logic app), I just need to make partitioning work.
I think I cannot go with the "detect data change" in power BI desktop as I have to choose a different column for that (Modified Time Stamp) and then it will only refresh the last partition with any change in Modified Time Stamp column but I need Created Time Stamp to be refreshed as well.
I reviewed the article by Chris Webb, and followed the steps carefuly, but the "refreshBookmark" does not appear in the script.
I checked this post with similar issue but the solution was not applicable in my case.
Any idea is much appreciated!
Go with the timestamp that has the most even distribution (likely the created date). Create a large enough "hot" window to cover most of the jitter (modifications happening soon after creation). For example make your "hot" partitions the last three months instead of the last month. Then use the Modified date to catch any entries that fall outside the "hot" window and manually refresh their partitions if needed. Plan on doing a full refresh (or a sequential manual refresh of all partitions) every now and then.
No, based on what you've said the problem is with the performance of the SQL queries themselves and nothing to do with Power BI. You need to get a DBA or someone familiar with SQL performance tuning to help you here.
10 Replies
- lbendlinSuper User
Go with the timestamp that has the most even distribution (likely the created date). Create a large enough "hot" window to cover most of the jitter (modifications happening soon after creation). For example make your "hot" partitions the last three months instead of the last month. Then use the Modified date to catch any entries that fall outside the "hot" window and manually refresh their partitions if needed. Plan on doing a full refresh (or a sequential manual refresh of all partitions) every now and then.
- cpwebbMicrosoft Employee
Based on what you told me in the discussion on your other thread, no, I don't think this will help much - what you need to do is tune the underlying data source so that the queries generated for each partition are faster.
- amir_mmHelper III
Thanks a lot cpwebb
Currently, we have a 6-month dataset, including a large table with over 2 million rows. The entire dataset is refreshed in the Power BI service every 30 minutes, taking maximum 2-3 minutes.
For the other dataset (3 years), which has refreshing issues, I partitioned the large table and each partition contains a maximum of 700k rows. but, each of these partitions takes not less than 2 minutes to refresh, which doesn't make sense.
Could this be because the Power BI service allocates more resources than PowerShell in Azure Runbooks?
Thanks again.
- lbendlinSuper User
These runtimes and row counts do not warrant incremental refresh. Your partitions should hold about half as many rows as you can fetch without hitting either a data source timeout or the 5hr limit for partition refresh.