从Dynamics 365获取审计记录详细信息到Power BI

3
我已经能够从Dynamics 365中拉取审计表,并通过选择“获取数据”,选择odata选项,使用url/api/data/v9.1/audits来加载到Power BI中。我看到列RetrieveAuditDetails,但我不明白为什么所有的值都显示为Function。有没有一种方法可以扩展它以显示旧值/新值,就像您可以将用户ID更改为扩展为全名一样?
1个回答

2
关于审计数据,由于审计数据存储在数据库中作为分隔值,因此OData/Web API REST终端在PowerBI中并不友好。如果需要了解更多信息,请参考我在这个SO线程中的回答
如果是JavaScript或.NET应用程序,您可以使用RetrieveAuditDetails函数进行迭代调用,以便在使用https://crmdev.crm.dynamics.com/api/data/v9.1/audits获取完整列表后获取完整详细信息。这就是为什么您在其中看到Function的原因。
例如:
var parameters = {};
var entity = {};
entity.id = "5701259e-59b8-e911-bcd0-00155d0d4a79";
entity.entityType = "audit";
parameters.entity = entity;

var retrieveAuditDetailsRequest = {
    entity: parameters.entity,

    getMetadata: function() {
        return {
            boundParameter: "entity",
            parameterTypes: {
                "entity": {
                    "typeName": "mscrm.audit",
                    "structuralProperty": 5
                }
            },
            operationType: 1,
            operationName: "RetrieveAuditDetails"
        };
    }
};

Xrm.WebApi.online.execute(retrieveAuditDetailsRequest).then(
    function success(result) {
        if (result.ok) {
            var results = JSON.parse(result.responseText);
        }
    },
    function(error) {
        Xrm.Utility.alertDialog(error.message);
    }
);

更新: 进一步分析后发现,以上针对单个auditid的RetrieveAuditDetails查询和以下针对单个recordid的过滤audits查询的输出模式没有太大区别。
https://crmdev.crm.dynamics.com/api/data/v9.1/audits?$filter=_objectid_value eq 449d2fd8-58b8-e911-a839-000d3a315cfc

事实上,无论是 Web API 还是 FetchXML,结果集都无法获取包含更改字段值的重要列 changedata,原因是受到限制:检索只能返回可读取的列。列:changedata。实体:audit 我在 FetchXML 构建器中看到了这个信息。

enter image description here

另外一种方法与 PowerBI 不兼容,可以使用 RetrieveRecordChangeHistory 来定位 recordid 以获取所有包含旧值和新值的审核集合。以下是示例:
https://crmdev.crm.dynamics.com/api/data/v9.0/RetrieveRecordChangeHistory(Target=@Target)?@Target={%22accountid%22:%22449d2fd8-58b8-e911-a839-000d3a315cfc%22,%22@odata.type%22:%22Microsoft.Dynamics.CRM.account%22}

嗨,Arun, 我有一个理解上的问题,因为我们知道Audit有RetrieveAuditDetails函数,我们可以在其中找到更多细节。但是,如何处理与PowerBI和Webapi调用相关的问题。我尝试使用fetchxml,正如我们所知道的,只有函数才能检索。那么这是否意味着没有直接的fecth/webapi调用来获取数据,而需要一个额外的步骤呢? - AnkUser
2
@AnkUser,请查看我的更新。不幸的是,将所有原始数据推送到暂存表并在转储到暂存表之前进行处理或在代码中进行处理是可选项 - 无论哪种方式,我们都必须将其放入暂存表中以供使用,但不能像其他实体一样直接访问URL :( - Arun Vinoth-Precog Tech - MVP
@ArunVinoth,根据您上面的陈述,理论上我可以使用D365中的单独实体来获取值,然后将该实体/表格拉入Power BI中,对吗? - SQLHound
@ArunVinoth 客户要求数据保留在云端。我知道当我在 Power BI 桌面上设计时,我正在提取数据,但这只是开发阶段。当我们将报告推进到生产环境时,所有数据都将保留在云端。 - SQLHound
回到这个问题,意思是暂存表不能通过M语言导入Power BI吗?我认为如果你能用JavaScript编程,那么你也可以用一些Power BI可以理解的语言进行编程。 - SQLHound
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接