我在使用自定义连接器时遇到了一些问题,无法从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')"))
修正了问题并返回了正确的值而没有其他更改。
答案 0 :(得分:1)
Microsoft Graph的报告不是传统的REST端点。它们不是返回OData / JSON,而是以CSV
格式返回临时URL到物理文件。
如果成功,此方法会返回
302 Found
响应,该响应会重定向到报告的预验证下载网址。该URL可以在响应中的Location标题中找到。
从您链接的示例来看,它似乎期待OData.Feed来源(source = OData.Feed
)。在这种情况下,您没有获得OData结果,而是获取CSV
文件的URL。我相信你正在寻找Csv.Document。