Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Solved! Go to Solution.
Hi @Alaahady ,
Thank you for sharing the scheduled refresh details.
This behavior looks expected. The initial longer refresh was due to incremental refresh creating and evaluating all partitions. The subsequent scheduled refreshes are completing consistently, which confirms that only the incremental partitions are now being processed.
At this point, incremental refresh is working as designed. Please let us know if you notice any increase in refresh duration going forward.
Thank you.
Hi @Alaahady ,
I wanted to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions.
Thank you.
Hi @Alaahady ,
Thank you for sharing the additional screenshots, and I appreciate @Zanqueta for earlier explanation .
Since you’ve confirmed that query folding continues to the final step and that your incremental refresh policy is correctly configured, the setup itself looks correct. In cases like this, longer incremental refresh times are typically driven by engine behavior rather than configuration issues.
Incremental refresh must process multiple partitions and run an additional query for change detection, which often results in longer total execution time compared to a single full refresh query even when folding and indexing are in place. Factors such as partition granularity, change-detection overhead, and SQL Server index/statistics efficiency can further influence performance.
If possible, please share the duration of a subsequent refresh cycle (not the initial run). This will help us confirm whether the refresh stabilizes once only the incremental partitions are being processed. Let us know, and we’ll be happy to assist further.
Thank you.
Hi @Alaahady ,
Thank you for sharing the scheduled refresh details.
This behavior looks expected. The initial longer refresh was due to incremental refresh creating and evaluating all partitions. The subsequent scheduled refreshes are completing consistently, which confirms that only the incremental partitions are now being processed.
At this point, incremental refresh is working as designed. Please let us know if you notice any increase in refresh duration going forward.
Thank you.
Hi @Alaahady
If this response was helpful in any way, I’d gladly accept a 👍much like the joy of seeing a DAX measure work first time without needing another FILTER.
Please mark it as the correct solution. It helps other community members find their way faster (and saves them from another endless loop 🌀.
Thank you @Zanqueta for your promt response
Here is the incremental query
let
Source = Sql.Database("omarcvmissql13", "PBI_Gateway"),
dbo_fact_survey_detail = Source{[Schema="dbo",Item="fact_survey_detail"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(dbo_fact_survey_detail,{{"rec_mod_dtz", type datetime}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type", each [response_dtm_assoc_lcl] >= RangeStart and [response_dtm_assoc_lcl] <= RangeEnd)
in
#"Filtered Rows"
and this is the full copy , I've made them identical
let
Source = Sql.Database("omarcvmissql13", "PBI_Gateway"),
dbo_fact_survey_detail = Source{[Schema="dbo",Item="fact_survey_detail"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(dbo_fact_survey_detail,{{"rec_mod_dtz", type datetime}})
in
#"Changed Type"
and here is the index for the survey_column and modify column
| IndexName | IndexType | ColumnName | IsPrimaryKey |
| idx_fact_survey_detail_rec_mod_dtz | NONCLUSTERED | rec_mod_dtz | 0 |
| idx_fact_survey_detail_response_dtm_assoc_lcl | NONCLUSTERED | response_dtm_assoc_lcl | 0 |
| PK_fact_survey_detail_new | CLUSTERED | id | 1 |
Thank you @Zanqueta for promt respond
the query folder continue to the end
Incremental refresh setting is correct