I have a report with a matrix visual, which is powered by a DirectQuery source that gets updates every minute. The report refreshes automatically with a change detection on the column with last updated timestamp. The problem is that the matrix visual scrolls up to the 101st position after each visual refresh. Users have to scroll back down to the position they were looking at before, and after a minute it jumps back up again. The faster I wish to refresh this report, the more prominent this issue becomes. The position of the scroll bar does not reset when the visual displays records in range 1-101 prior to refresh.
The root cause seems to be present in the DAX query generated on the matrix refresh event - it contains "TOPN(101)" filter. Each scroll event past that number of rows generates a subsequent query that fetches next 101 records. This degrades the user experience massively, and puts unnecessary strain on my source by sending lots of small queries. In this case, I'm working with around 3000 raw records, which aggregate to 350 rows in the matrix. This could be easily fetched with a single query, which should keep the position of the scroll bar in place between refreshes.
I would like to be able to specify the number of records fetched in a single query to my source; 101 is a very conservative number.