Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredGet Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
Hi everyone,
I'm developing a custom visual for Power BI, and I’m encountering an issue related to fetchMoreData() and the update() lifecycle when using drill up / expand down.
----------------------------------------------------------------------------------------------------------------------------------------
🔍Expected behavior:
Normally, when I load data, I use this.host.fetchMoreData() to retrieve all rows in batches of 30k until lastCall becomes undefined.
When I drill up, I expect the visual to update with the correct dataset (e.g. 52,608 rows).
----------------------------------------------------------------------------------------------------------------------------------------
⚙️Current behavior / Problem:
When I navigate back to the page and perform a drill up or expand down one level, I notice the following sequence:
Note: This only occurs when I return to the page and perform a drill up or drill down. During report development, everything works normally — meaning it only happens during the visual initialization when navigating back to the page and executing a drill up or drill down.
Console log shows:
----------------------------------------------------------------------------------------------------------------------------------------
🧠 Snippet (simplified)
----------------------------------------------------------------------------------------------------------------------------------------
❓Question:
Why does the visual’s update() function trigger again after drill up/down with a smaller dataset (e.g. 52k rows), but then reset dataView to 30k rows?
Is there a known behavior or timing issue with Power BI’s fetchMoreData() and update() events when navigating between pages or hierarchy levels?
How can I prevent update() from reinitializing the visual when data is already fully fetched?
----------------------------------------------------------------------------------------------------------------------------------------
I look forward to your help, thanks
Hi everyone,
I am developing a Power BI Custom Visual and am getting a dataView related error when the user goes to page navigation and then back:
Symptom:
Video Bugs: https://drive.google.com/file/d/1ucCUaHpmQ06V6noZtgaqIBHSX9mQwPeN/view?usp=drive_link
Image:
More details about the error: https://community.fabric.microsoft.com/t5/Developer/Power-BI-Custom-Visual-update-function-resets-da....
I need help. Thanks for watching. If you know, please help me.
Thanks.
Hi @Hieudao
Thanks for the detailed explanation. Just to clarify the behavior
The behavior occurs only during the visual reinitialization phase after page navigation. During report development or normal refresh, the visual functions correctly. However, upon returning to the page, Power BI rehydrates the visual with a truncated dataView (limited to 30,000 rows), leading to incorrect drill up/down behavior.
Could you confirm:
Hi @v-aatheeque
I will answer your questions:
1. In capabilities.json file I configured "dataReductionAlgorithm": { "window": { "count": 30000 } }
2. I import data from excel workbook
3. yes, when i go back to the page with 105k data it will call 30k - 59k - 89k - 105k in turn.
4. When I returned to the page containing the custom visual, Power BI started returning data in chunks through multiple calls to the update() function.
Specifically, the data was returned in the following order:
Cast 1: Columns: 6, Rows: 30,000
Cast 2: Columns: 6, Rows: 52,000
(loading…)
Cast 3: Columns: 5, Rows: 30,000
However, when I drilled up, the actual correct data for the dataset at that level was 52,000 rows.
So:
Cast 1 and 2, the number of columns was wrong but the number of rows was right.
Cast 3, the number of columns was right but the number of rows was wrong.
Sumary:
When returning to the Power BI page, the custom visual receives multiple update() calls with inconsistent data. The data is returned in chunks (30k → 59k → 89k → …), and when drilling up, the number of columns and rows between update() calls do not match.
Specifically:
1st & 2nd times: columns are wrong, rows are right.
3rd time: columns are right, rows are wrong.
The actual correct data should be 52k rows with 5 columns.
Thanks
Hi @Hieudao
Thanks for sharing such detailed explanation.
The configuration confirms that Power BI is applying a windowed data reduction of 30,000 rows. This behavior is by design in Power BI.
When you drill up/down or navigate back to the page, Power BI reinitializes the visual and sends a fresh dataView starting from the first 30k rows. Even if you previously fetched all rows (105k), the visual does not persist that state across page navigation.
The inconsistent columns/rows you observed (6 columns → 5 columns, 30k rows → 52k rows → back to 30k rows) happen because drill changes alter the schema (columns).
To fix fetching data:
In update(options), check options.type:
If VisualUpdateType.All or VisualUpdateType.Data → clear previous cache and start fetching again.
Always assume update() after drill or navigation is a fresh start.
Hope this helps !!
Thank You
Hi @Hieudao
Have you had a chance to look through the responses shared earlier? If anything is still unclear, we’ll be happy to provide additional support.
Hi @Hieudao
Following up to confirm if the earlier responses addressed your query. If not, please share your questions and we’ll assist further.
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
| User | Count |
|---|---|
| 6 | |
| 3 | |
| 1 | |
| 1 | |
| 1 |