Forum Discussion
Avoid throttling when loading from SharePoint folder
- Anonymous6 years ago
I have an environment with in excess of 18,000 individual files and multiple Dataflows running at the same time and yes it suffers from throttling but Microsoft support pointed me in the direction of buffering each Binary before you expand it and this significantly improved the performance.
So I land these CSV files into Dataflows and then pull that into the model.
Source = Csv.Document(Binary.Buffer([Content]),[Delimiter=",", ...............
Does not completely get rid of the issue so I also schedule a number of refreshes.
Hope that helps.
Regards
Andrew
How do you load all these CSV files?
I used the Power BI SharePoint Folder connector but there I don't see the line:
Source = Csv.Document(Binary.Buffer([Content]),[Delimiter=",", ...............
Do you load every single file direct in Power BI?
If you are using the built in function then you will find it the fx part as shown below.
Source = Csv.Document(Binary.Buffer(Parameter1),[Delimiter=",", ...............
I have not tested this fully but hopefully this works for you
Andrew
- AgTooOldForThis5 years agoFrequent Visitor
Anonymous thank you for posting this.
I have have been struggling with similar SharePoint throttling issues (_api/contextinfo errors) however with Excel.Workbook instead of Csv.Document files. I modified all transform file helper query sources with Binary.Buffer as you show. This seems to function as before, so I believe it is correct as you show for CSV as well.
=Excel.Workbook(Binary.Buffer(Parameter1), null, true)
You mention Binary.Buffer improved performance... as in time to refresh? Reduction of refresh failuires? Both? Unfortunately I still get the same failures when trying to refresh and can't realize a difference in performance yet.
Thanks
- Anonymous5 years agoNot applicable
Hi,
It does not improve the speed (time) but it does reduce the number of times it fails a refresh as its basically saying get the whole file contents and then do your transformation and then repeat instead of give me all in one go.
To speed up ingestion if you have lots and lots I break the data into separate Dataflows.
So say
Archive 1 would be 2019 Q1,Q2
Archive 2 would be 2019 Q3 Q4
Archive 3 would be 2020 Q1 Q2
Current would be 2020 Q3 - now
When you are doing a refresh you only have to do this for the current one - which is faster an less likely to fail.
Then in your Model combine the Dataflows to get the full data set.
Hope that helps
Andrew