Forum Discussion

Ameya_Paranjape's avatar
Ameya_Paranjape
Regular Visitor
8 months ago
Solved

Power BI Desktop: Circular Reference Error While Attempting Incremental Data Load from Oracle

I have a Power BI Desktop report connected to an Oracle database, where data is retrieved via a SQL query. The query currently uses a fixed start date and dynamically calculates the end date as today - 1. For example, the start date is 1 September 2025 and the end date is 14 December 2025.

Upon refresh, the report pulls data starting from 1 September, which—over time—significantly increases refresh duration and imposes unnecessary load on the database.

To optimize this, I attempted an incremental loading approach with the following setup:

  1. Historical Data Table: Created a table named tableAHistoricalData that contains data up to 10 December 2025.
  2. Reference Table: Created a reference from the historical table named tableAHistoricalDataReference.
  3. Query Parameters:
    • LatesttableADateQuery: Retrieves the latest date from the historical table and uses it as the start date in the SQL query. The end date is computed as today - 1 using a DateTime function.
    • tableA_DBQuery: Executes the SQL query using the above dates to fetch the new/delta records.
  4. Append Step: After retrieving new data, I attempted to append it back to the reference table. At this step, Power BI raises a circular reference error.

Request:
Could anyone please help me resolve the circular reference error or suggest a robust pattern to implement incremental data loads in Power BI Desktop for this scenario?

Additional details (if helpful):

  • Source: Oracle DB
  • Retrieval method: Native SQL query
  • Objective: Append only new data since the latest date available in tableAHistoricalData, with end date as today - 1

Thank you in advance for your guidance.

6 Replies

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

    Hi Ameya_Paranjape,

    We would like to confirm if our community members answer resolves your query or if you need further help. If you still have any questions or need more support, please feel free to let us know. We are happy to help you.

     

     

    Thank you for your patience and look forward to hearing from you.
    Best Regards,
    Prashanth Are
    MS Fabric community support

  • Hi Ameya_Paranjape 

     

    Please check and confirm

     

    Power BI Incremental Refresh

    Create parameters:
    RangeStart (DateTime)
    RangeEnd (DateTime)

     

    Modify Oracle SQL query:
    WHERE transaction_date >= :RangeStart
    AND transaction_date < :RangeEnd
    Ensure query folding (mandatory for Oracle)

     

    In Model view → Incremental refresh:
    Store data for: e.g. 3 years
    Refresh data for: 1 day

     

    Publish to Power BI Service
    ✔ No manual append
    ✔ No reference tables
    ✔ Best performance
    ✔ Enterprise-safe

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

  • Hi Ameya_Paranjape 

    Do not use manual append or reference tables.

    Use Power BI Incremental Refresh instead:

    Create parameters:

    RangeStart

    RangeEnd

    Update the SQL query:

    WHERE transaction_date >= :RangeStart
    AND transaction_date < :RangeEndEnable Incremental Refresh in Model view.

    Publish to Power BI Service.

    Did it work? ✔ Give a Kudo • Mark as Solution – help others too!
    Regards,
    Rufyda Rahma | MIE 

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

    We would like to confirm if our community members answer resolves your query or if you need further help. If you still have any questions or need more support, please feel free to let us know. We are happy to help you.

     

     

     

    Thank you for your patience and look forward to hearing from you.
    Best Regards,
    Prashanth Are
    MS Fabric community support