首页 文章

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

提问于
浏览
1

我有一些问题使用自定义连接器来获得我想要的Microsoft Graph . 基本上,我要做的是将Email Activity User Detail报告转换为Power BI报告 .

该报告的URL如下:

/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 回答

  • 1

    Microsoft Graph的报告不是传统的REST endpoints . 它们不是返回OData / JSON,而是将一个临时URL返回到 CSV 格式的物理文件 .

    来自documentation

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

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

相关问题