Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
ahwanmishra
Regular Visitor

Dataset Refresh: Transaction Bound?

Hi Team,

I have a query regarding the dataset refresh process in Power BI using the Enhanced API. Specifically, I want to understand whether the dataset refresh behaves like a transaction or if the tables refresh independently.

I am using the Enhanced API to refresh multiple tables in a dataset. 

API End Point: 

https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes

 

Below is the JSON request body I’m using:

{"type": "Full","objects": [{"table": "table1"},{"table": "table2"},{"table": "table3"}]}

 

If the refresh of one table (e.g., "table2") fails, what happens to the refresh status of the other tables ("table1" and "table3") in the dataset?
• Does the failure of "table2" trigger a rollback for all tables, causing the entire refresh operation to fail?
• Or does "table1" refresh successfully and "table3" refresh is skipped due to the error in "table2" : showcasing sequential property

• Or do the remaining tables ("table1" and "table3") refresh successfully, even if "table2" encounters an error?

 

Essentially, I’m trying to determine if the dataset refresh is transaction-bound (all or nothing) or if each table refreshes independently within the same dataset refresh operation.

 

Looking forward to your insights!
Thank you!

2 ACCEPTED SOLUTIONS
lbendlin
Super User
Super User

Semantic model refreshes (down to the partition) are based on blitting.  Only after a successful completion will the entity (partition or table or model) be swapped in.

 

When you request a refresh of a single table the mashup engine may have to also refresh dependency tables - that mostly depends on the lineage and the design of your calculated columns.  You can see the dependencies when you run the selective refresh in SSMS, for example.

 

So the answer is a definitive yes 🙂  Both...

View solution in original post

Anonymous
Not applicable

Thanks for the reply from lbendlin , please allow me to provide another insight:

Hi, @ahwanmishra 

Based on my understanding:

 

In Power BI, when using the enhanced API for dataset refresh, the refresh behaviour depends on the commitMode parameter set in your request. If you do not specify commitMode, by default, the refresh operation is transactional. This means the refresh operation is treated as a transaction, and if any table fails to refresh, the entire refresh operation will roll back, causing all table refreshes to fail.

 

However, if you set commitMode to partialBatch, the refresh will be independent. This means each table will refresh separately. If one table (e.g., "table2") fails to refresh, other tables (e.g., "table1" and "table3") will continue to refresh.

 

Below are the relevant documentation screenshots:

vlinyulumsft_0-1733714798757.png

vlinyulumsft_1-1733714798758.png

vlinyulumsft_2-1733714818111.png

For more details, please refer to:

Enhanced refresh with the Power BI REST API - Power BI | Microsoft Learn

Datasets - Refresh Dataset - REST API (Power BI Power BI REST APIs) | Microsoft Learn


Of course, if you have any new discoveries or questions, please feel free to get in touch with us.
 

Best Regards,

Leroy Lu

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

View solution in original post

2 REPLIES 2
Anonymous
Not applicable

Thanks for the reply from lbendlin , please allow me to provide another insight:

Hi, @ahwanmishra 

Based on my understanding:

 

In Power BI, when using the enhanced API for dataset refresh, the refresh behaviour depends on the commitMode parameter set in your request. If you do not specify commitMode, by default, the refresh operation is transactional. This means the refresh operation is treated as a transaction, and if any table fails to refresh, the entire refresh operation will roll back, causing all table refreshes to fail.

 

However, if you set commitMode to partialBatch, the refresh will be independent. This means each table will refresh separately. If one table (e.g., "table2") fails to refresh, other tables (e.g., "table1" and "table3") will continue to refresh.

 

Below are the relevant documentation screenshots:

vlinyulumsft_0-1733714798757.png

vlinyulumsft_1-1733714798758.png

vlinyulumsft_2-1733714818111.png

For more details, please refer to:

Enhanced refresh with the Power BI REST API - Power BI | Microsoft Learn

Datasets - Refresh Dataset - REST API (Power BI Power BI REST APIs) | Microsoft Learn


Of course, if you have any new discoveries or questions, please feel free to get in touch with us.
 

Best Regards,

Leroy Lu

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

lbendlin
Super User
Super User

Semantic model refreshes (down to the partition) are based on blitting.  Only after a successful completion will the entity (partition or table or model) be swapped in.

 

When you request a refresh of a single table the mashup engine may have to also refresh dependency tables - that mostly depends on the lineage and the design of your calculated columns.  You can see the dependencies when you run the selective refresh in SSMS, for example.

 

So the answer is a definitive yes 🙂  Both...

Helpful resources

Announcements
July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.