{"id":352,"date":"2019-05-31T00:39:10","date_gmt":"2019-05-30T22:39:10","guid":{"rendered":"https:\/\/www.moderndata.ai\/?p=352"},"modified":"2019-05-31T00:39:10","modified_gmt":"2019-05-30T22:39:10","slug":"powerbi-dataset-refresh-using-adf","status":"publish","type":"post","link":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/","title":{"rendered":"How To Trigger A Power BI Dataset Refresh Using An Azure Data Factory Web Activity"},"content":{"rendered":"<p><b>I got a few questions lately on how to integrate the refresh of a Power BI dataset in the orchestration that Azure Data Factory offers. <\/b><b>For instance to process your Power BI model directly after you have loaded new data in the data lake or the datawarehouse database. Effectively ‘daisy-chaining’ these activities. This absolutely makes sense, but can be quite tricky to set-up.<\/b><\/p>\n<h4>Solution requirements<\/h4>\n<p>Part of the trickiness is due to the fact that I not only want a clean and easy solution, but I’ve also got to be able to put this solution in production. So, I’ve got the following list of requirements:<\/p>\n<ol>\n<li>Integrate in Azure Data Factory, for reasons stated above<\/li>\n<li>Easy deployment using Azure DevOps release pipeline<\/li>\n<li>No personal account for authentication<\/li>\n<li>Store sensitive data (secrets\/passwords) in Azure Key Vault only<\/li>\n<li>No sensitive data in logs, while executing the solution<\/li>\n<\/ol>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignright wp-image-415 size-medium\" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-300x169.png\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-300x169.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-600x337.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-768x432.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-1024x576.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-370x208.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-570x321.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-770x433.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-1170x658.png 1170w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25-1031x580.png 1031w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25.png 1451w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<h4>The solution<\/h4>\n<p>The ‘tldr’ of this solution is to leverage the support for Service Principals in Power BI and use the Power BI REST API in a Web Activity in Azure Data Factory. Sounds easy, doesn’t it? Well, it can be a bit of challenge to set-up, but with this guide it should be easy for you from now on \u2714!<\/p>\n<h4>Step-by-step guide<\/h4>\n<p>I’ll try to guide you from beginning to end with this setup, and describe all the necessary steps.<br \/>\nIf you’re an expert, you can probably use the summary below and<strong> <a href=\"https:\/\/www.moderndata.ai\/ADFpipelineRefreshPBI\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">download the Azure Data Factory pipeline<\/a><\/strong>\u00a0I prepared for you.<\/p>\n<p>Overview of steps (details below):<\/p>\n<ol>\n<li>Create an AAD App Registration. Add a secret.<\/li>\n<li>Create an AAD Security Group and add the SP object<\/li>\n<li>In the Power BI tenant settings, register the Security Group for API access using Service Principals<\/li>\n<li>Create a Power BI App Workspace (only V2 is supported)<\/li>\n<li>Add the Service Principal as an admin to the Workspace<\/li>\n<li>Create an Azure Key Vault and add the secrets involved<\/li>\n<li>Create an Azure Data Factory<\/li>\n<li>Make sure Data Factory can authenticate to the Key Vault<\/li>\n<li>Create an Azure Data Factory pipeline (use my example)<\/li>\n<li>Run the pipeline and high-five the nearest person in the room \ud83d\ude4f<\/li>\n<\/ol>\n<h4>Permissions required<\/h4>\n<p>Make sure you can do or are the follow items, or sit next to the admins, or be prepared to file a ticket and be patient \ud83d\ude0a.<\/p>\n<ul>\n<li>Power BI Tenant Administrator (or Azure Global Administrator)<\/li>\n<li>Permissions to create an AAD Security Group (Azure AAD Administrator)<\/li>\n<li>Permission to create a Power BI App Workspace (V2) (by default a Power BI Pro user can do this, but it might be disabled in your tenant)<\/li>\n<li>Permissions to create an Azure Key Vault, an Azure Data Factory, and to configure the Identity Access Management on the Key Vault (the OWNER role on an Azure Resource Group provides all of this)<\/li>\n<\/ul>\n<h4>Step #1 Create AAD App Registration<\/h4>\n<p>Navigate to <a href=\"https:\/\/portal.azure.com\">https:\/\/portal.azure.com<\/a> and open the Azure Active Directory blade. Then open the App Registrations section. Then click on ‘New registration’.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-359 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory.png\" width=\"625\" height=\"289\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory.png 1702w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-600x277.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-300x139.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-768x355.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1024x473.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-370x171.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-570x263.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-770x356.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1170x540.png 1170w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1256x580.png 1256w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>Provide a name for the application, try to make it descriptive enough to later remember what it is used for.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-360 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1.png\" width=\"470\" height=\"464\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1.png 1059w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1-100x100.png 100w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1-600x592.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1-300x296.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1-768x758.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1-1024x1010.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1-370x365.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1-570x562.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1-770x760.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-1-588x580.png 588w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><\/p>\n<p>Copy the Application (client) ID value. We need this value at a later step, so temporarily save it in your favorite note editor.<br \/>\nCall it “ClientId”. Also copy the ‘Directory (tenant) ID’, call it “TenantId”.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-364 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4.png\" width=\"658\" height=\"203\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4.png 1442w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4-600x185.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4-300x93.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4-768x237.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4-1024x316.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4-370x114.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4-570x176.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4-770x238.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-4-1170x361.png 1170w\" sizes=\"(max-width: 658px) 100vw, 658px\" \/><\/p>\n<p>Add a secret to the application, via the ‘Certificates & secrets’ section.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-361 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-2.png\" width=\"449\" height=\"383\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-2.png 1019w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-2-600x512.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-2-300x256.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-2-768x655.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-2-370x316.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-2-570x486.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-2-770x657.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-2-680x580.png 680w\" sizes=\"(max-width: 449px) 100vw, 449px\" \/><\/p>\n<p><strong>Important!<\/strong> Make sure you copy the secret value right after you click on ‘Add’, as you won’t be able to retrieve it after you leave this page.<br \/>\nSave this value, call it “ClientSecret”, you need this later.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-362 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3.png\" width=\"742\" height=\"391\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3.png 1718w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3-600x316.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3-300x158.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3-768x405.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3-1024x540.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3-370x195.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3-570x301.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3-770x406.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3-1170x617.png 1170w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-3-1100x580.png 1100w\" sizes=\"(max-width: 742px) 100vw, 742px\" \/><\/p>\n<h4>Step #2 Create AAD Security Group<\/h4>\n<p>Go back to the Azure Active Directory blade and open the Groups section. Click on ‘New group’.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-366 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-5.png\" width=\"456\" height=\"232\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-5.png 1036w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-5-600x305.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-5-300x153.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-5-768x391.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-5-1024x521.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-5-370x188.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-5-570x290.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-5-770x392.png 770w\" sizes=\"(max-width: 456px) 100vw, 456px\" \/><\/p>\n<p>The group type is ‘Security’, give the group a decent name and description, perhaps a set of owners and most importantly: add your Service Principal as a member, by searching using the name or ClientId of the application.<br \/>\nWrite down the name of the group in your notes, you need it later.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1732\" height=\"1064\" class=\"alignnone wp-image-367 size-full\" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6.png\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6.png 1732w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6-600x369.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6-300x184.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6-768x472.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6-1024x629.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6-370x227.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6-570x350.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6-770x473.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6-1170x719.png 1170w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-6-944x580.png 944w\" sizes=\"(max-width: 1732px) 100vw, 1732px\" \/><\/p>\n<h4>Step #3 Register Power BI API access for Service Principals<\/h4>\n<p>Go to the Power BI Service at <a href=\"https:\/\/app.powerbi.com\">https:\/\/app.powerbi.com<\/a> and open the Admin Portal.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-369 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-7.png\" width=\"362\" height=\"301\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-7.png 675w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-7-600x500.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-7-300x250.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-7-370x308.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-7-570x475.png 570w\" sizes=\"(max-width: 362px) 100vw, 362px\" \/><\/p>\n<p>Go to the ‘Tenant Settings’ section, and scroll to the setting for ‘Allow service principals to use Power BI APIs’. Enable the setting and search for the security group you have made earlier. Click Apply when you have selected your group. This setting might take up to 15 minutes to take effect \u2615.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-371 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9.png\" width=\"727\" height=\"576\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9.png 1367w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9-600x475.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9-300x238.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9-768x608.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9-1024x811.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9-370x293.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9-570x452.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9-770x610.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9-1170x927.png 1170w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-9-732x580.png 732w\" sizes=\"(max-width: 727px) 100vw, 727px\" \/><\/p>\n<h4>Step #4 Create Power BI App Workspace<\/h4>\n<p>If you already have a Power BI App Workspace in the ‘new upgraded experience’ a.k.a. ‘V2’ style, you can use that. Otherwise, please create a new App Workspace. Note that this solution will not work with ‘classic’ App Workspaces, because they do not support Service Principal membership.<\/p>\n<h4>Step #5 Add Service Principal to the Workspace<\/h4>\n<p>Got you V2 App Workspace and open the Access settings. In the search box, type the name of your App Registration \/ Service Principal, it’s the item with “AppID: ..” behind it’s name. Select it. Give it the Admin role, and click ‘Add’.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-375 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-12.png\" width=\"498\" height=\"429\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-12.png 820w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-12-600x517.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-12-300x258.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-12-768x661.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-12-370x319.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-12-570x491.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-12-770x663.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-12-674x580.png 674w\" sizes=\"(max-width: 498px) 100vw, 498px\" \/><\/p>\n<p>The result should be like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-373 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-11.png\" width=\"496\" height=\"467\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-11.png 821w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-11-600x565.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-11-300x282.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-11-768x723.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-11-370x348.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-11-570x537.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-11-770x725.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-Refresh-Power-BI-using-Azure-Data-Factory-11-616x580.png 616w\" sizes=\"(max-width: 496px) 100vw, 496px\" \/><\/p>\n<p>Also, this is the moment to double-check the dataset you want to refresh from Azure Data Factory. Credentials set? Can you successfully refresh the dataset manually?<\/p>\n<h4>Step #6 Create Azure Key Vault and add our secrets<\/h4>\n<p>If you already have an Azure Key Vault ready to use for this solution (and you have the OWNER role), you can of course skip creating a new one.<\/p>\n<p>To create a new one, open the Azure Portal at <a href=\"https:\/\/portal.azure.com\">https:\/\/portal.azure.com<\/a>, and go the Resource Group where you want to create the Key Vault. Click ‘Add’ and choose the Azure Key Vault as type of resource. Give it a proper name and make sure you add it to the right Subscription, Resource Group, and Location. Click Create.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-385 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity.png\" width=\"267\" height=\"686\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity.png 468w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-117x300.png 117w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-398x1024.png 398w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-370x951.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-226x580.png 226w\" sizes=\"(max-width: 267px) 100vw, 267px\" \/><\/p>\n<p>Navigate to the new resource. Copy the ‘DNS Name’ and save it, we need it later.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1878\" height=\"368\" class=\"alignnone wp-image-386 size-full\" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1.png\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1.png 1878w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1-600x118.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1-300x59.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1-768x150.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1-1024x201.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1-370x73.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1-570x112.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1-770x151.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-1-1170x229.png 1170w\" sizes=\"(max-width: 1878px) 100vw, 1878px\" \/><\/p>\n<p>Let’s add our secrets. Open the Secrets section and click ‘Generate\/Import’ to add the “ClientId”, “ClientSecret”, and “TenantId” you have written down in previous steps.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-388 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2.png\" width=\"872\" height=\"229\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2.png 1674w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2-600x157.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2-300x79.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2-768x201.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2-1024x269.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2-370x97.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2-570x149.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2-770x202.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-2-1170x307.png 1170w\" sizes=\"(max-width: 872px) 100vw, 872px\" \/><\/p>\n<p>We need the name and current version of the secrets. Click on each secret to retrieve the guid of the current version.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-389 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-3.png\" width=\"338\" height=\"174\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-3.png 689w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-3-600x308.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-3-300x154.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-3-370x190.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-3-570x293.png 570w\" sizes=\"(max-width: 338px) 100vw, 338px\" \/><\/p>\n<h4>Step #7 Create an Azure Data Factory<\/h4>\n<p>If you already have an Azure Data Factory ready to use for this solution, you can of course skip creating a new one.<\/p>\n<p>To create a new one, go to the Resource Group where you want to create it. Click ‘Add’ and choose Data Factory as type of resource. Give it a proper name and make sure you add it to the right Subscription, Resource Group, and Location. Of course we take Version V2. Click Create.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-390 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4.png\" width=\"445\" height=\"612\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4.png 871w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4-600x825.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4-218x300.png 218w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4-768x1055.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4-745x1024.png 745w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4-370x508.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4-570x783.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4-770x1058.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-4-422x580.png 422w\" sizes=\"(max-width: 445px) 100vw, 445px\" \/><\/p>\n<h4>Step #8 Make sure Data Factory can authenticate to the Key Vault<\/h4>\n<p>Open the properties section of the Azure Data Factory and copy the ‘Manged Identity Application ID’ value.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-391 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5.png\" width=\"929\" height=\"491\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5.png 1900w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5-600x317.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5-300x158.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5-768x405.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5-1024x541.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5-370x195.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5-570x301.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5-770x406.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5-1170x618.png 1170w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-5-1099x580.png 1099w\" sizes=\"(max-width: 929px) 100vw, 929px\" \/><\/p>\n<p>Go to your Azure Key Vault, and open the ‘Access policies’ section. Click ‘Add new’ to add a new access policy.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-393 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7.png\" width=\"578\" height=\"357\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7.png 1179w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7-600x370.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7-300x185.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7-768x474.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7-1024x632.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7-370x228.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7-570x352.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7-770x475.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7-1170x722.png 1170w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-7-939x580.png 939w\" sizes=\"(max-width: 578px) 100vw, 578px\" \/><\/p>\n<p>Click on ‘Select principal’, paste the Managed Identity Application ID of the Data Factory, and select it.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-395 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9.png\" width=\"824\" height=\"516\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9.png 1914w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9-600x375.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9-300x188.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9-768x480.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9-1024x640.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9-370x231.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9-570x356.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9-770x482.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9-1170x732.png 1170w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-9-927x580.png 927w\" sizes=\"(max-width: 824px) 100vw, 824px\" \/><\/p>\n<p>In the ‘Secret permissions’, select the ‘Get’ permission. Click OK. Then, click Save.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-396 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10.png\" width=\"452\" height=\"546\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10.png 988w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10-600x725.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10-248x300.png 248w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10-768x928.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10-847x1024.png 847w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10-370x447.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10-570x689.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10-770x931.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-10-480x580.png 480w\" sizes=\"(max-width: 452px) 100vw, 452px\" \/><\/p>\n<h4>Step #9 Create the Azure Data Factory pipeline<\/h4>\n<p>Now, this is where the real magic is happening \u2728. We’ll take a little bit more time for this step, to explain what is happening.<\/p>\n<p>I’ve created a pipeline for you with all the activities needed. It looks like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-398 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-12.png\" width=\"607\" height=\"303\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-12.png 1080w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-12-600x299.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-12-300x150.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-12-768x383.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-12-1024x511.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-12-370x185.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-12-570x284.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-12-770x384.png 770w\" sizes=\"(max-width: 607px) 100vw, 607px\" \/><\/p>\n<p>The pipeline has 3 ‘stages’:<\/p>\n<ol>\n<li>Grab the secrets from the Azure Key Vault.<\/li>\n<li>Call the AAD authentication service and get the AAD token that we need to call the Power BI REST API<\/li>\n<li>Use the Power BI REST API to trigger the actual dataset refresh<\/li>\n<\/ol>\n<h4>Stage 1: grab the secrets from the Azure Key Vault.<\/h4>\n<p>Important to note here, is that we use ‘MSI’ authentication. We will use the Managed Identity of the Data Factory to authenticate to the Key Vault (or actually its API). Remember we granted it access in an earlier step? It’s also imported to use “<a href=\"https:\/\/vault.azure.net\">https:\/\/vault.azure.net<\/a>” as the Resource value.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-408 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-20.png\" width=\"432\" height=\"369\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-20.png 897w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-20-600x513.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-20-300x257.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-20-768x657.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-20-370x316.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-20-570x487.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-20-770x658.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-20-678x580.png 678w\" sizes=\"(max-width: 432px) 100vw, 432px\" \/><\/p>\n<h4>Stage 2: call the AAD authentication service and get the AAD token<\/h4>\n<p>Important to note here, is that we call the <a href=\"https:\/\/login.microsoftonline.com\/<tenantid>\/oath2\/token\">https:\/\/login.microsoftonline.com\/<tenantid>\/oath2\/token<\/a> URL with a POST method, and in the <strong>body<\/strong> of this call we send the following values:<\/p>\n<ul>\n<li>grant_type = client_credentials<\/li>\n<li>resource = <a href=\"https:\/\/analysis.windows.net\/powerbi\/api\">https:\/\/analysis.windows.net\/powerbi\/api<\/a><\/li>\n<li>client_id = <the output of the previous Web Activity, to grab this from the Key Vault><\/li>\n<li>client_secret = <the output of the previous Web Activity, to grab this from the Key Vault><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-409 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-21.png\" width=\"490\" height=\"435\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-21.png 995w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-21-600x532.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-21-300x266.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-21-768x682.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-21-370x328.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-21-570x506.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-21-770x683.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-21-654x580.png 654w\" sizes=\"(max-width: 490px) 100vw, 490px\" \/><\/p>\n<h4>Stage 3: use the Power BI REST API to trigger the actual dataset refresh<\/h4>\n<p>Important to note here, is that we call the Power BI REST API (<a href=\"https:\/\/api.powerbi.com\/v1.0\">https:\/\/api.powerbi.com\/v1.0<\/a>) with a POST method, and as the Authorization header we send the AAD bearer token we retrieved in the previous Web Activity.<\/p>\n<p>The Web Activity still requires us to have a value for the Body of the call.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-410 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22.png\" width=\"488\" height=\"481\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22.png 1022w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22-100x100.png 100w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22-600x592.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22-300x296.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22-768x757.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22-370x365.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22-570x562.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22-770x759.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-22-588x580.png 588w\" sizes=\"(max-width: 488px) 100vw, 488px\" \/><\/p>\n<p>Key in the setup of this entire pipeline is that the Web Activities <strong>do not log any sensitive data<\/strong> when they are executed:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-407 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-19.png\" width=\"360\" height=\"259\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-19.png 727w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-19-600x432.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-19-300x216.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-19-370x266.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-19-570x410.png 570w\" sizes=\"(max-width: 360px) 100vw, 360px\" \/><\/p>\n<p>Download the <a href=\"https:\/\/www.moderndata.ai\/ADFpipelineRefreshPBI\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">json file here<\/a>.<\/p>\n<p>Add a new pipeline and open the Code view.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-399 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-13.png\" width=\"96\" height=\"60\" \/><\/p>\n<p>Replace the code with the content of the json file, and click Finish. Rename the pipeline (example: “pl_PBI_dataset_refresh”).<\/p>\n<p>Publish the pipeline.<\/p>\n<h4>#10 Run it!<\/h4>\n<p>The idea behind this pipeline is to execute it from another pipeline, for instance the ‘master’ pipeline of the Datawarehouse. But, you can also trigger the pipeline standalone.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-401 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-14.png\" width=\"145\" height=\"107\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-14.png 310w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-14-300x222.png 300w\" sizes=\"(max-width: 145px) 100vw, 145px\" \/><\/p>\n<p>Either way, you will need to provide the necessary values.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-402 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-15.png\" width=\"368\" height=\"321\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-15.png 731w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-15-600x524.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-15-300x262.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-15-370x323.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-15-570x497.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-15-665x580.png 665w\" sizes=\"(max-width: 368px) 100vw, 368px\" \/><\/p>\n<p>Probably you already have all of these parameter values at hand. Click Finish after you have filled in the form, and navigate to the Monitor view of the Data Factory to inspect your results: <strong>Status=Succeeded<\/strong> \ud83d\ude0e.<\/p>\n<p>It took in this case 8 seconds to call the API and wait for the dataset refresh to be completed (it might have failed though, but more on that later). Yes, for some reason the Web Activity executes a synchronous call (normally it’s in asynchronous mode). I like it.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-403 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16.png\" width=\"856\" height=\"239\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16.png 1616w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16-600x168.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16-300x84.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16-768x215.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16-1024x286.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16-370x103.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16-570x159.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16-770x215.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-16-1170x327.png 1170w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/p>\n<p>And the evidence in the Power BI dataset refresh history:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-404 \" src=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17.png\" width=\"722\" height=\"355\" srcset=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17.png 1296w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17-600x295.png 600w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17-300x147.png 300w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17-768x377.png 768w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17-1024x503.png 1024w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17-370x182.png 370w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17-570x280.png 570w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17-770x378.png 770w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17-1170x575.png 1170w, https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/Pasted-into-How-To-Trigger-A-Power-BI-Dataset-Refresh-Using-An-Azure-Data-Factory-Web-Activity-17-1180x580.png 1180w\" sizes=\"(max-width: 722px) 100vw, 722px\" \/><\/p>\n<p>High-five the nearest person in the room \ud83d\ude4f, you have now ‘daisy-chained’ an Azure Data Factory pipeline execution and a Power BI dataset refresh!<\/p>\n<h4>Conclusions<\/h4>\n<p>So we now have our solution ready and tested successfully. Let’s take a look at the initial requirements and see how we did.<\/p>\n<ul>\n<li>\u2714 Integrate in Azure Data Factory, and limit it to that (no Logic Apps, Functions, Workbooks)<\/li>\n<li>\u2714 Easy deployment using Azure DevOps release pipeline –> it’s super-easy to deploy Azure Data Factory pipelines using its git integration.<\/li>\n<li>\u2714 No personal account for authentication –> we’re leveraging a Service Principal! Make sure to use a separate Service Principal per environment, and only use it for a single cause.<\/li>\n<li>\u2714 Store sensitive data (secrets\/passwords) in Azure Key Vault only (no secrets in code repo) –> our code is clean.<\/li>\n<li>\u2714 No sensitive data in logs, while executing the solution –> input & output secured.<\/li>\n<\/ul>\n<p>Feel free to drop a comment below if you have any questions on this solution (or ping me on <a href=\"https:\/\/www.moderndata.ai\/twitterdave\" rel=\"nofollow\">Twitter<\/a>\/<a href=\"https:\/\/www.moderndata.ai\/linkedindave\" rel=\"nofollow\">LinkedIn<\/a>).<\/p>\n<h4>Ideas for next steps<\/h4>\n<p>I think it would be great to add a Web Activity at the end, retrieving the dataset history to see if the refresh actually succeeded, and to notify the operators of this process.<\/p>\n<p>I’d like to daisy-chain a Power BI dataflow refresh with a Power BI dataset refresh \ud83d\ude0e.<\/p>\n<h4>Documentation<\/h4>\n<ul>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/power-bi\/developer\/embed-service-principal\">Service Principal authentication support for the Power BI REST API<\/a><\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/rest\/api\/power-bi\/datasets\/refreshdatasetingroup\">Dataset refresh via the Power BI REST API<\/a><\/li>\n<li><a href=\"https:\/\/www.moderndata.ai\/akvgetsecret\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Get a specified secret from Azure Key Vault using its API<\/a><\/li>\n<li><a href=\"https:\/\/www.moderndata.ai\/azuremisupport\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Managed Identity support for Azure Key Vault<\/a> (and the correct ‘Resource ID’ to use)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I got a few questions lately on how to integrate the refresh of a Power BI dataset in the orchestration that Azure Data Factory offers. For instance to process your Power BI model directly after you have loaded new data in the data lake or the datawarehouse database. Effectively ‘daisy-chaining’ these activities. This absolutely makes […]<\/p>\n","protected":false},"author":2,"featured_media":415,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[]},"categories":[10,2],"tags":[],"yoast_head":"<title>How To Trigger A Power BI Dataset Refresh Using Data Factory<\/title>\n<meta name=\"description\" content=\"This detailed blog post explains how to trigger a Power BI dataset refresh from Azure Data Factory, leveraging Service Principals support in the REST API.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How To Trigger A Power BI Dataset Refresh Using Data Factory\" \/>\n<meta property=\"og:description\" content=\"This detailed blog post explains how to trigger a Power BI dataset refresh from Azure Data Factory, leveraging Service Principals support in the REST API.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/\" \/>\n<meta property=\"og:site_name\" content=\"Modern Data & AI\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-30T22:39:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1451\" \/>\n\t<meta property=\"og:image:height\" content=\"816\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dave Ruijter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"New blog post: "How to trigger a #PowerBI dataset refresh using an #AzureDataFactory Web Activity"\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25.png\" \/>\n<meta name=\"twitter:creator\" content=\"@DaveRuijter\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dave Ruijter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/\"},\"author\":{\"name\":\"Dave Ruijter\",\"@id\":\"https:\/\/www.moderndata.ai\/#\/schema\/person\/662f0589643bb4205482d128fac88ddc\"},\"headline\":\"How To Trigger A Power BI Dataset Refresh Using An Azure Data Factory Web Activity\",\"datePublished\":\"2019-05-30T22:39:10+00:00\",\"dateModified\":\"2019-05-30T22:39:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/\"},\"wordCount\":1989,\"commentCount\":51,\"publisher\":{\"@id\":\"https:\/\/www.moderndata.ai\/#organization\"},\"articleSection\":[\"Data Platform\",\"Power BI\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/\",\"url\":\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/\",\"name\":\"How To Trigger A Power BI Dataset Refresh Using Data Factory\",\"isPartOf\":{\"@id\":\"https:\/\/www.moderndata.ai\/#website\"},\"datePublished\":\"2019-05-30T22:39:10+00:00\",\"dateModified\":\"2019-05-30T22:39:10+00:00\",\"description\":\"This detailed blog post explains how to trigger a Power BI dataset refresh from Azure Data Factory, leveraging Service Principals support in the REST API.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.moderndata.ai\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How To Trigger A Power BI Dataset Refresh Using An Azure Data Factory Web Activity\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.moderndata.ai\/#website\",\"url\":\"https:\/\/www.moderndata.ai\/\",\"name\":\"Modern Data & AI\",\"description\":\"A blog on Power BI & Azure Data Platform\",\"publisher\":{\"@id\":\"https:\/\/www.moderndata.ai\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.moderndata.ai\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.moderndata.ai\/#organization\",\"name\":\"Modern Data & AI\",\"url\":\"https:\/\/www.moderndata.ai\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.moderndata.ai\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2021\/11\/mod-e1636956448571.png\",\"contentUrl\":\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2021\/11\/mod-e1636956448571.png\",\"width\":403,\"height\":80,\"caption\":\"Modern Data & AI\"},\"image\":{\"@id\":\"https:\/\/www.moderndata.ai\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.moderndata.ai\/#\/schema\/person\/662f0589643bb4205482d128fac88ddc\",\"name\":\"Dave Ruijter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.moderndata.ai\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2023\/02\/Dave-Ruijter-grey-150x150.jpg\",\"contentUrl\":\"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2023\/02\/Dave-Ruijter-grey-150x150.jpg\",\"caption\":\"Dave Ruijter\"},\"description\":\"Dave is a hands-on solution and platform architect that operationalizes data-driven strategies of organizations. Leveraging the full potential of the Azure Data Platform and he Power Platform (with a focus on Power BI). He brings a vast amount of consultancy experience to the table and is always eager to take things to the next level. Dave has received the Microsoft MVP Award twice for his deep knowledge of Microsoft products and services and community leadership.\",\"sameAs\":[\"https:\/\/moderndata.ai\/\",\"https:\/\/linkedin.com\/in\/daveruijter\",\"https:\/\/twitter.com\/DaveRuijter\"],\"url\":\"https:\/\/www.moderndata.ai\/author\/daveruijter\/\"}]}<\/script>","yoast_head_json":{"title":"How To Trigger A Power BI Dataset Refresh Using Data Factory","description":"This detailed blog post explains how to trigger a Power BI dataset refresh from Azure Data Factory, leveraging Service Principals support in the REST API.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/","og_locale":"en_US","og_type":"article","og_title":"How To Trigger A Power BI Dataset Refresh Using Data Factory","og_description":"This detailed blog post explains how to trigger a Power BI dataset refresh from Azure Data Factory, leveraging Service Principals support in the REST API.","og_url":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/","og_site_name":"Modern Data & AI","article_published_time":"2019-05-30T22:39:10+00:00","og_image":[{"width":1451,"height":816,"url":"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25.png","type":"image\/png"}],"author":"Dave Ruijter","twitter_card":"summary_large_image","twitter_title":"New blog post: \"How to trigger a #PowerBI dataset refresh using an #AzureDataFactory Web Activity\"","twitter_image":"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25.png","twitter_creator":"@DaveRuijter","twitter_misc":{"Written by":"Dave Ruijter","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/#article","isPartOf":{"@id":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/"},"author":{"name":"Dave Ruijter","@id":"https:\/\/www.moderndata.ai\/#\/schema\/person\/662f0589643bb4205482d128fac88ddc"},"headline":"How To Trigger A Power BI Dataset Refresh Using An Azure Data Factory Web Activity","datePublished":"2019-05-30T22:39:10+00:00","dateModified":"2019-05-30T22:39:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/"},"wordCount":1989,"commentCount":51,"publisher":{"@id":"https:\/\/www.moderndata.ai\/#organization"},"articleSection":["Data Platform","Power BI"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/","url":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/","name":"How To Trigger A Power BI Dataset Refresh Using Data Factory","isPartOf":{"@id":"https:\/\/www.moderndata.ai\/#website"},"datePublished":"2019-05-30T22:39:10+00:00","dateModified":"2019-05-30T22:39:10+00:00","description":"This detailed blog post explains how to trigger a Power BI dataset refresh from Azure Data Factory, leveraging Service Principals support in the REST API.","breadcrumb":{"@id":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.moderndata.ai\/2019\/05\/powerbi-dataset-refresh-using-adf\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.moderndata.ai\/"},{"@type":"ListItem","position":2,"name":"How To Trigger A Power BI Dataset Refresh Using An Azure Data Factory Web Activity"}]},{"@type":"WebSite","@id":"https:\/\/www.moderndata.ai\/#website","url":"https:\/\/www.moderndata.ai\/","name":"Modern Data & AI","description":"A blog on Power BI & Azure Data Platform","publisher":{"@id":"https:\/\/www.moderndata.ai\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.moderndata.ai\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.moderndata.ai\/#organization","name":"Modern Data & AI","url":"https:\/\/www.moderndata.ai\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.moderndata.ai\/#\/schema\/logo\/image\/","url":"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2021\/11\/mod-e1636956448571.png","contentUrl":"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2021\/11\/mod-e1636956448571.png","width":403,"height":80,"caption":"Modern Data & AI"},"image":{"@id":"https:\/\/www.moderndata.ai\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.moderndata.ai\/#\/schema\/person\/662f0589643bb4205482d128fac88ddc","name":"Dave Ruijter","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.moderndata.ai\/#\/schema\/person\/image\/","url":"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2023\/02\/Dave-Ruijter-grey-150x150.jpg","contentUrl":"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2023\/02\/Dave-Ruijter-grey-150x150.jpg","caption":"Dave Ruijter"},"description":"Dave is a hands-on solution and platform architect that operationalizes data-driven strategies of organizations. Leveraging the full potential of the Azure Data Platform and he Power Platform (with a focus on Power BI). He brings a vast amount of consultancy experience to the table and is always eager to take things to the next level. Dave has received the Microsoft MVP Award twice for his deep knowledge of Microsoft products and services and community leadership.","sameAs":["https:\/\/moderndata.ai\/","https:\/\/linkedin.com\/in\/daveruijter","https:\/\/twitter.com\/DaveRuijter"],"url":"https:\/\/www.moderndata.ai\/author\/daveruijter\/"}]}},"jetpack_featured_media_url":"https:\/\/www.moderndata.ai\/wp-content\/uploads\/2019\/05\/2019-05-31-00_22_25.png","post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/posts\/352"}],"collection":[{"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/comments?post=352"}],"version-history":[{"count":27,"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/posts\/352\/revisions"}],"predecessor-version":[{"id":857,"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/posts\/352\/revisions\/857"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/media\/415"}],"wp:attachment":[{"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/media?parent=352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/categories?post=352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.moderndata.ai\/wp-json\/wp\/v2\/tags?post=352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}