通过 Azure 数据工厂刷新 Power BI 数据集

Refresh Power BI dataset through Azure Data factory

有没有办法通过 Azure 数据工厂刷新 Power BI 数据集?

我发现有一个 REST API (https://powerbi.microsoft.com/en-us/blog/announcing-data-refresh-apis-in-the-power-bi-service/),可用于执行此任务,但我正在努力验证并为此传递授权令牌。

请建议我们还有哪些其他备选方案?

目前 Azure 数据工厂 supportsBasicClient certificate 身份验证:

Authentication method used for calling the endpoint. Supported Types are "Basic, or ClientCertificate."

我能够使用 Power BI REST API (POST/GET) 从 Azure 数据工厂刷新我的 Power BI 数据集,挑战是传递身份验证令牌,这样我就明白了可以通过在单独的 activity 中捕获 "access_token" 然后将其传递给实际刷新数据集的 POST activity 来完成。

流程如下:

  1. Web Activity 获取 token_typeaccess_token。我必须将各种参数传递给管道(请参阅下面的屏幕截图)。

URL: https://login.microsoftonline.com/common/oauth2/token

  1. 另一个WEBactivity调用POSTAPI刷新数据集。在此我已经传递了在之前的登录 Web activity 中捕获的身份验证令牌(请参阅下面的屏幕截图):

希望对您有所帮助!!

如有任何问题,请随时与我们联系。

事实上,Azure Logic Apps 中有一个实现 REST API 的应用程序。然后可以从 Azure 数据工厂调用逻辑应用程序。但是,有一个警告。在高级帐户中,过去 24 小时内的刷新请求数量限制为 8 - 如 REST API 文档 here 中所述。

这是我的逻辑应用程序设计器中的样子。

希望对您有所帮助。

虽然我在网上找到的大多数答案都建议使用应用程序注册/服务原则、逻辑应用程序甚至 azure 函数,但我想出了一种方法来跳过所有这些。我实际上已经写了一个 blogpost 关于这个。

本质上,它与应用程序注册方法非常相似,它甚至使用 refreshes-PBI API,但不是将应用程序的 ClientID/ApplicationID 添加到安全组,您可以只需使用数据工厂的托管标识。这样一来,也不需要令牌检索(加上密钥库中的秘密)。只需按照以下步骤操作:

  1. 在 Azure 中创建安全组并将数据工厂的托管标识添加到其中
  2. 调整 Power BI 租户设置以允许服务原则使用 APIs 并添加安全组以能够使用这些设置。此外,将服务主体添加到工作区。
  3. 在 Azure 数据工厂管道中构建网络 activity,如此 screenshot 或此处所示:

URL : https://api.powerbi.com/v1.0/myorg/groups/[workspaceID]/datasets/[datasetID]/refreshes

方法:Post

正文:{“notifyOption”:“NoNotification”}

身份验证:托管身份

资源:https://analysis.windows.net/powerbi/api