When Microsoft introduced Power BI dataflows at the end of 2018 to separate no/low code cloud ETL from BI modeling and visualization, many people were initially confused about how refreshes would work. Contrarily to what might seem like the intuitive behavior, dataflow and dataset refreshes are separate and unconnected. However, it does make sense to tie them somehow, as you’ll most likely want to refresh datasets after their source dataflows were themselves just updated.
I wrote the high-level outline for how to do so with the Power BI APIs and Power Automate (then Microsoft Flow) in the Power BI forums a while ago. A few months later Microsoft added a Power Automate action to execute a dataset refresh, but the dataflow equivalent remains to be seen. You thus still need to register a Power BI app and create a Power Automate connector for dataflows, following the procedures explained in these entries:
The main benefit of using a custom connector is to ease authentication. If we were using an anonymous API we could just use the HTTP request Power Automate action. You can follow the steps above almost verbatim for dataflows, whose refresh POST call is documented here. But bear in mind these two specific points to be added to your custom connector:
refreshRequest is compulsory Note that Custom connectors are now found under Data in the Power Automate sidebar, not under Connectors (that would make too much sense) and no longer from the Settings wheel as you’ll see in posts from 2018/2019.
Some goodies you can add to your flow to better integrate refreshes in your users’ workflow:
In the screenshot opening this entry you may guess that I hardcoded the group and dataflow IDs in my custom connector calls, which I had looked up manually from the dataflows’ URLs. That’s not really a scalable or maintainable process. I assume one could use the Get Dataflows call, dump the results in a spreadsheet, and iterate over the group/dataflow value pairs in the flow, but I didn’t get around to doing so yet.
Finally, if you feel adventurous you can hack your way into retrieving a dataflow refresh history.