Forum Discussion

manoj_0911's avatar
manoj_0911
Kudo Commander
2 months ago
Solved

Incremental Refresh - DateTime Partition Column Works in DEV but Initial Refresh Times Out in PROD

 

Hi Team,

I am investigating an Incremental Refresh issue with our Missed Utterances report and would appreciate your guidance.

Current Configuration

  • Partition column: DATE_TIME (DateTime with unique timestamp values)

  • Detect Data Changes column: UPDATE_DATETIME

  • Archive: 3 Years

  • Incremental Refresh Window: Last 7 Days

  • Power BI Premium Capacity

  • Import Mode

Unlike our other reports, which use a Date column (CALL_DATE) as the partition column, this report uses a DateTime column (DATE_TIME) that contains unique timestamps (for example, 2026-06-24 10:27:54).


Investigation Performed

I recreated the same configuration in our DEV environment.

  • Applied Incremental Refresh (3 Years archive + 7 Days refresh).

  • Used DATE_TIME for the partition column.

  • Used UPDATE_DATETIME for Detect Data Changes.

  • Verified Query Folding.

  • Verified the Native Query generated by Power BI.

  • Verified that RangeStart and RangeEnd filters were correctly pushed to SQL Server.

  • Verified that Detect Data Changes generated MAX(UPDATE_DATETIME) queries.

  • Successfully completed the first Incremental Refresh.

  • Verified that historical and incremental partitions were created successfully.

  • Multiple subsequent refreshes also completed successfully.

From the SQL queries captured during refresh, Power BI appears to be following the expected Incremental Refresh behavior by creating partitions and issuing Detect Data Changes queries.


Issue in PROD

The exact same report and configuration behaves differently in PROD.

  • A Power BI Desktop full refresh completes successfully in approximately 20 minutes.

  • However, the first Incremental Refresh in Power BI Service runs for more than 4–5 hours and eventually fails.

The refresh history shows:

Data source error

Microsoft SQL: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

Power BI retries the refresh multiple times before ultimately failing.

We also receive the following processing message:

Processing error: An internal service error occurred, causing the cancellation of previous refresh attempts. New attempts will now be initiated.


My Question

Since this report uses a DateTime column with unique timestamps as the Incremental Refresh partition column (instead of a Date column like our other reports):

  1. Is using a DateTime column containing unique timestamps fully supported and recommended for Incremental Refresh?

  2. Can this type of partition column cause longer partition creation times or SQL timeout issues compared to using a Date-only column?

  3. Are there any Microsoft recommendations or best practices for reports that use a DateTime partition column with unique timestamps?

  4. Based on the above behavior (working in DEV but timing out only in PROD), do you believe the issue is more likely related to the SQL Server environment rather than the Incremental Refresh configuration?

Any guidance or official Microsoft documentation would be greatly appreciated.

Thank you.

  • We have seen similar behavior with Power BI incremental refresh where Desktop succeeds but the first Service refresh fails or runs for hours.

    A few key points I would check:

     

    A DateTime partition column is supported
    Unique timestamp values should not be an issue by themselves. Power BI should still create partitions based on the incremental refresh policy, not one partition per timestamp.

     

    The issue is likely execution/performance, not the DateTime column itself
    Since Desktop refreshes in ~20 minutes but the Service runs for 4–5 hours and times out, I would look at Service-side execution differences: gateway latency, Premium capacity pressure, SQL timeout limits, and the actual SQL plans being used during refresh.

     

    Confirm query folding all the way back to SQL
    The partition filter should fold into a clean SQL predicate similar to:

     
    WHERE DATE_TIME >= @RangeStart
    AND DATE_TIME < @RangeEnd
     

    Any casts, transformations, timezone handling, or non-foldable steps before the filter can make Service refresh much more expensive.

     

    Test without Detect Data Changes
    Temporarily disable Detect Data Changes and rerun the initial refresh. If it succeeds, the bottleneck may be the additional MAX(UPDATE_DATETIME) checks. If it still fails, focus on the partition query, gateway, SQL performance, or capacity.

     

    Review indexing
    I would confirm SQL has an index supporting DATE_TIME, and review whether UPDATE_DATETIME also needs to be indexed or included based on the actual generated queries.

     

    My read is that the DateTime partition column is probably not the root cause. I would capture the SQL generated during the Service refresh, compare it against Desktop, and review the execution plans for the slowest partition queries.

     

     

4 Replies

  • We have seen similar behavior with Power BI incremental refresh where Desktop succeeds but the first Service refresh fails or runs for hours.

    A few key points I would check:

     

    A DateTime partition column is supported
    Unique timestamp values should not be an issue by themselves. Power BI should still create partitions based on the incremental refresh policy, not one partition per timestamp.

     

    The issue is likely execution/performance, not the DateTime column itself
    Since Desktop refreshes in ~20 minutes but the Service runs for 4–5 hours and times out, I would look at Service-side execution differences: gateway latency, Premium capacity pressure, SQL timeout limits, and the actual SQL plans being used during refresh.

     

    Confirm query folding all the way back to SQL
    The partition filter should fold into a clean SQL predicate similar to:

     
    WHERE DATE_TIME >= @RangeStart
    AND DATE_TIME < @RangeEnd
     

    Any casts, transformations, timezone handling, or non-foldable steps before the filter can make Service refresh much more expensive.

     

    Test without Detect Data Changes
    Temporarily disable Detect Data Changes and rerun the initial refresh. If it succeeds, the bottleneck may be the additional MAX(UPDATE_DATETIME) checks. If it still fails, focus on the partition query, gateway, SQL performance, or capacity.

     

    Review indexing
    I would confirm SQL has an index supporting DATE_TIME, and review whether UPDATE_DATETIME also needs to be indexed or included based on the actual generated queries.

     

    My read is that the DateTime partition column is probably not the root cause. I would capture the SQL generated during the Service refresh, compare it against Desktop, and review the execution plans for the slowest partition queries.

     

     

  • Hi manoj_0911 

    - DateTime partition columns are supported and using highly granular unique timestamps can create many small partitions and increase SQL workload compared to a Date only column.  

    - Microsoft generally recommends Date columns for partitioning because they produce fewer, larger partitions and reduced timeout risk.  

    - If you must use DateTime, truncate to day-level like CAST(DateTime AS Date) for partitioning while still using UPDATE_DATETIME for change detection.  

    - The fact that DEV works but PROD times out points more to SQL Server environment or load differences (capacity, indexes, query timeout settings) than to Incremental Refresh configuration itself.  

     

    https://learn.microsoft.com/en-us/power-bi/connect-data/incremental-refresh-configure

     

    https://learn.microsoft.com/en-us/power-bi/connect-data/incremental-refresh-xmla

  • v-achippa's avatar
    v-achippa
    Community Support

    Hi manoj_0911,

     

    Thank you for reaching out to Microsoft Fabric Community.

     

    Thank you babybots and krishnakanth240 for the prompt response.

     

    As we haven’t heard back from you, we wanted to kindly follow up to check if the solution provided by the user's for the issue worked? or let us know if you need any further assistance.

     

    Thanks and regards,

    Anjan Kumar Chippa

    • v-achippa's avatar
      v-achippa
      Community Support

      Hi @manoj_0911,

       

      We wanted to kindly follow up to check if the solution provided by the user's for the issue worked? or let us know if you need any further assistance.

       

      Thanks and regards,

      Anjan Kumar Chippa