Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!
I have a simple M script in a Data Flow. When I run a query with INSERT in SQL, it adds the row as I would expect. But I perform the same thing in my Data Flow, and just refreshing the preview causes it to add 3 rows for each row that is added in my insert statement.
Is there any way to make it only run once? Is there any way to make it perform a check before inserting so that even though it writes 3 times, only one gets saved by the SQL database?
let
query = "INSERT INTO ...",
dbWrite = Sql.Database(server, database, [Query=query, CreateNavigationProperties=false]),
in
dbWrite
Do. Not. Do. That.
Power Query was never designed to write into anything except a Semantic Model.
There is NO guarantee that your Power Query will run only once. Most of the time it will not.
Chris Webb's BI Blog: Why Does Power BI Query My Data Source More Than Once? (crossjoin.co.uk)
Repeat: Do. Not. Do. That.
If I shouldn't take this approach, is there any other way to save Dataflow Power Query results to a SQL database?
Don't use either Dataflows or Power Query. Use a proper ETL tool like SSIS, or Informatica. There is no need to drag Power BI into your data movement process.
If you are planning to use Fabric as a data storage this story becomes slightly different. Dataflows Gen 2 are designed to write into the Fabric lakehouse etc.
The Power BI Data Visualization World Championships is back! It's time to submit your entry.
Check out the January 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 22 | |
| 15 | |
| 10 | |
| 7 | |
| 4 |