使用自定义连接器将Microsoft Graph API报告数据导入Power BI

时间:2018-02-09 14:37:53

标签: microsoft-graph powerbi powerquery

我在使用自定义连接器时遇到了一些问题,无法从Microsoft Graph获取我想要的内容。基本上,我要做的是获取Email Activity User Detail报告并将其转换为Power BI报告。

该报告的网址如下:

/v1.0/reports/getEmailActivityUserDetail(period='D7')

为了创建这个自定义连接器,我一直在使用MyGraph Connector Sample,因为我不太熟悉Power Query的使用,也不熟悉Graph API。

我已经创建了连接器,并且可以连接到API和所有内容,但不是将数据返回给我,所有查询都返回给我一个字节数组,我似乎无法做任何事情。

通过查看Fiddler跟踪,我想要的实际数据在整个过程中被选中,但看起来Graph API使用重定向URL来下载,我不确定我的Power Query代码是处理。我认为它可能只是将重定向URL作为字符串而不是实际数据返回。

除此之外,我的查询没有代码来处理NextLink,如果它超过返回的行数(我想200?),所以我想它一旦我得到它就不会返回完整的数据集它工作。如何最好地处理?

不幸的是,我对Power Query很新(这是我第一次遇到它),所以我不确定从哪里开始进行必要的更改以获得我需要的东西。

非常感谢任何协助。

Microsoft Graph API - GET Reports in Graph Explorer and Power BI问题触及了类似的问题,尽管这是通过Application界面本身,它本身似乎无法获得必要的授权令牌。

编辑:由于Marc LaFleur的建议,我已设法解决了这个问题。

问题确实是我试图使用Odata.Feed作为源。更改行:

source = OData.Feed("https://graph.microsoft.com/v1.0/me/", null, [ ODataVersion = 4, MoreColumns = true ])

要:

source = Csv.Document(Web.Contents("https://graph.microsoft.com/v1.0/reports/getEmailActivityUserDetail(period='D7')"))

修正了问题并返回了正确的值而没有其他更改。

1 个答案:

答案 0 :(得分:1)

Microsoft Graph的报告不是传统的REST端点。它们不是返回OData / JSON,而是以CSV格式返回临时URL到物理文件。

来自documentation

  

如果成功,此方法会返回302 Found响应,该响应会重定向到报告的预验证下载网址。该URL可以在响应中的Location标题中找到。

从您链接的示例来看,它似乎期待OData.Feed来源(source = OData.Feed)。在这种情况下,您没有获得OData结果,而是获取CSV文件的URL。我相信你正在寻找Csv.Document