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!Vote for your favorite vizzies from the Power BI Dataviz World Championship submissions. Vote 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.
Vote for your favorite vizzies from the Power BI World Championship submissions!
If you love stickers, then you will definitely want to check out our Community Sticker Challenge!
Check out the January 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 23 | |
| 13 | |
| 10 | |
| 10 | |
| 9 |
| User | Count |
|---|---|
| 60 | |
| 47 | |
| 37 | |
| 28 | |
| 25 |