代码之家  ›  专栏  ›  技术社区  ›  Xileize

使用自定义连接器将Microsoft Graph API报表数据获取到Power BI中

  •  2
  • Xileize  · 技术社区  · 6 年前

    我在使用自定义连接器从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。我认为它可能只是以字符串形式返回重定向URL,而不是返回实际数据。

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

    不幸的是,我对Power Query非常陌生(事实上,这是我第一次遇到它),所以我不知道从哪里开始进行必要的更改以获得所需的内容。

    如有任何帮助,我们将不胜感激。

    这个 Microsoft Graph API - GET Reports in Graph Explorer and Power BI 这个问题涉及到一个类似的问题,尽管这是通过应用程序接口本身实现的,它似乎无法自己获得必要的授权令牌。

    编辑:多亏了马克·拉弗勒的建议,我成功地解决了这个问题。

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

    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 回复  |  直到 6 年前
        1
  •  2
  •   Marc LaFleur    6 年前

    Microsoft Graph的报告不是传统的REST端点。它们不是返回OData/JSON,而是返回一个指向中物理文件的临时URL CSV 总体安排

    documentation :

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

    从您链接的示例来看,它似乎需要 OData.Feed 来源:( source = OData.Feed ). 在这种情况下,您不会得到OData结果,而是一个指向 CSV 文件我相信你在寻找 Csv.Document 相反