๐ ๐ถ๐ฐ๐ฟ๐ผ๐๐ผ๐ณ๐ ๐๐ฎ๐ฏ๐ฟ๐ถ๐ฐ ๐๐ผ๐ฝ๐ ๐๐ฐ๐๐ถ๐๐ถ๐๐ + ๐๐ฒ๐น๐๐ฎ ๐จ๐ฝ๐๐ฒ๐ฟ๐ is honestly one of the most underrated features in Fabric for high-performance operational data loading.
We can now:
โข Read directly from sources such as SQL Server / SQL DB
โข Write directly into Lakehouse Delta Tables
โข Use native Upsert mode
โข Avoid Spark notebooks completely
โข Avoid Parquet staging/intermediate layers
โข Achieve very fast sync performance with only ONE Copy Activity
Iโm currently using this approach to dynamically load and merge data from multiple SQL Server store databases into consolidated Delta tables in Microsoft Fabric Lakehouse.
However, there is one very important feature still missing from Copy Activity Upsert.
๐ ๐๐ผ๐๐น๐ฑ ๐น๐ผ๐๐ฒ ๐๐ผ ๐๐ฒ๐ฒ ๐ป๐ฎ๐๐ถ๐๐ฒ ๐๐๐ฝ๐ฝ๐ผ๐ฟ๐ ๐ณ๐ผ๐ฟ ๐ฎ๐๐๐ผ-๐บ๐ฎ๐ป๐ฎ๐ด๐ฒ๐ฑ ๐ฎ๐๐ฑ๐ถ๐ / ๐๐ช ๐ฐ๐ผ๐น๐๐บ๐ป๐ during Upsert operations.
My requirement is:
In the destination Delta table, I need these columns:
โข DW_DATE_INSERT
โ Datetime when a NEW record is inserted through Upsert
โข DW_DATE_UPDATE
โ Datetime when an EXISTING record is updated through Upsert
โข DW_LOAD_DATE
โ Maximum of DW_DATE_INSERT and DW_DATE_UPDATE
(meaning the latest insert/update datetime)
Expected behavior:
โข If INSERT occurs:
DW_DATE_INSERT should be populated
DW_DATE_UPDATE should remain NULL
โข If UPDATE occurs:
DW_DATE_UPDATE should be updated
DW_DATE_INSERT should remain unchanged with its original value
Currently, adding these columns dynamically in the Source โ Additional Columns section is NOT a solution.
Why?
Because these datetime values change every execution, the Upsert process detects every row as changed and re-updates all records again and again, even when business data has not changed.
Of course, I know this can be handled using Spark / Notebook MERGE logic.
But the whole beauty of this approach is:
๐ก๐ผ ๐ป๐ผ๐๐ฒ๐ฏ๐ผ๐ผ๐ธ๐.
๐ก๐ผ ๐ฆ๐ฝ๐ฎ๐ฟ๐ธ ๐๐๐ฎ๐ฟ๐๐๐ฝ ๐น๐ฎ๐๐ฒ๐ป๐ฐ๐.
๐ก๐ผ ๐ฒ๐
๐๐ฟ๐ฎ ๐บ๐ฒ๐ฟ๐ด๐ฒ ๐น๐ฎ๐๐ฒ๐ฟ.
๐๐๐๐ ๐ผ๐ป๐ฒ ๐ณ๐ฎ๐๐ ๐๐ผ๐ฝ๐ ๐๐ฐ๐๐ถ๐๐ถ๐๐.
It would be amazing if Microsoft could add native insert/update audit column handling directly inside Copy Activity Upsert for Delta Lakehouse tables.
This would make Copy Activity even more powerful for very fast enterprise operational sync workloads.
If you think this feature would be useful, please vote/support this idea so we can hopefully get it added to Fabric ๐
#MicrosoftFabric #DataEngineering #DeltaLake #Lakehouse #ETL #ELT #OneLake #SQLServer #Fabric #Microsoft #AnalyticsEngineering
2 Comments
- v-menakakotaCommunity Support
Hi Yazdan ,
Thank you for reaching out to the Microsoft Community Forum.
Thanks for sharing this feedback.
Agree that native audit column handling for Copy Activity Upsert would be very useful, especially for Delta Lakehouse operational loads without using Spark notebooks.The current Copy Activity Upsert feature is already very powerful for fast ingestion scenarios, and adding built-in support for columns like DW_DATE_INSERT and DW_DATE_UPDATE would make it even better.
Useful Microsoft Learn references:
How to copy data using copy activity - Microsoft Fabric | Microsoft Learn
Configure Lakehouse in a copy activity - Microsoft Fabric | Microsoft Learn
Best Regards,
Community Support Team - lbendlinSuper User
If this is important to you please consider voting for an existing idea or raising a new one at https://ideas.fabric.microsoft.com
Recent ideas
Data Pipelines - Run only selected activities
For debugging and testing pipeline activities during development, allow us to select one or multiple activities and run only the selected pipeline activities. For example, I'm working on editing ...frithjof_v21 hours agoCommunity ChampionNew618Views11likes2CommentsSemantic model connection bindings should be in source control (Git)
Semantic model data source connection bindings should be source controlled. A semantic model can contain multiple data source references, each of which can be mapped to a separate Fabric data connec...frithjof_v1 day agoCommunity ChampionNew21Views1like0CommentsBulk changing column names in Visualizations Pane
We often use raw/api column names or measures with a set nomenclature to be consistent and to keep track of them but we do not want to display these names in the visuals. Currently we have to change ...vishal1401971 day agoFrequent VisitorNew6Views0likes0Comments