Forum Discussion

JohnT_2307's avatar
JohnT_2307
Regular Visitor
1 year ago
Solved

Clarification on Dataflow Gen2 for Incremental Loads (Delta/SCD Type 2)

I'm designing a data pipeline in Fabric and need to implement an incremental loading pattern (delta load / SCD Type 2). The goal is to process daily data increments from a source system to a star schema.

 

The Microsoft Learn documentation seems to suggest that Dataflow Gen2 defaults to overwriting the destination. I'm looking to confirm if there's a way to configure it to handle more complex logic, such as:

  • Inserting new rows.

  • Updating existing rows.

  • Soft-deleting rows that are no longer in the source (e.g., marking them as inactive).

If this pattern isn't a good fit for Dataflow Gen2, is a Fabric Notebook the more appropriate tool for this kind of row-by-row processing? 

Appreciate any guidance or best practices you can share.

6 Replies

  • Yes, Dataflow Gen2 can be used effectively to implement SCD Type 2 logic, including incremental loads, especially when the use case involves low to moderate complexity and performance needs.

    While it's true that Dataflow Gen2 by default overwrites the destination, you can configure it to support SCD Type 2 scenarios using techniques like:

    • Detecting changes via joins between current and incoming data.

    • Creating conditional columns to flag new, changed, or unchanged rows.

    • Using filters and union logic to build the final dataset with:

      • New records inserted,

      • Existing records updated (with historical rows marked inactive),

      • Soft-deleted records (optional based on source vs destination comparison).

    This approach avoids code and fits well within low-code environments.

    You can refer to a great walkthrough here:
    Managing SCD with Fabric Dataflow Gen2 – Inkey Solutions

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

    Hi JohnT_2307 ,

    Thank you for reaching out to the Microsoft Community Forum.

     

    Hi bhavya5903 , Thank you for the prompt response.

     

    Hi JohnT_2307 , Could you please try the proposed solution shared by bhavya5903 . I hope this information helps. Please do let us know if you have any further queries.

     

    Regards,

    Dinesh

    • JohnT_2307's avatar
      JohnT_2307
      Regular Visitor

      Hi @bhavya5903 & v-dineshya

       

      Thank you for the quick reply and the link to the article. It looks very promising, and I will now attempt the solution.

      Before I begin, I have a follow-up question about the solution's limitations, specifically concerning scalability. Could you advise on any known issues related to the following?

      • Performance: Are there any known performance bottlenecks with this approach?

      • Data Volume: Is there a practical limit or recommended maximum amount of data it can handle efficiently?

      • Timeouts: What is the risk of a timeout when processing very large datasets, and are there any recommended workarounds?

      Any insights on this would be greatly appreciated.