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

时间:2019-08-19 21:26:31

标签: dynamics-crm odata powerbi dynamics-365

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

1 个答案:

答案 0 :(得分:2)

关于审核数据,由于审核数据以定界值存储在数据库中,因此OData / Web API REST端点在PowerBI中不太友好。 Refer my answer in this SO thread

如果是javascript或.net应用程序,则可以使用RetrieveAuditDetails函数进行迭代调用,以在使用https://crmdev.crm.dynamics.com/api/data/v9.1/audits获取完整列表之后获取完整详细信息。这就是为什么您在其中看到功能的原因。

例如:

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);
    }
);

更新: 经过进一步分析-上面针对单个RetrieveAuditDetails的{​​{1}}查询的输出模式与下面针对单个auditid的过滤后的audits查询的输出模式之间没有太大差异。

recordid

事实是Web api或fetchxml,由于限制:https://crmdev.crm.dynamics.com/api/data/v9.1/audits?$filter=_objectid_value eq 449d2fd8-58b8-e911-a839-000d3a315cfc

,结果集无法获取包含更改后的字段值的重要列changedata

我在FetchXML构建器中得到了这个

enter image description here

还有另一种方法,但无论如何都不兼容PowerBI,使用Retrieve can only return columns that are valid for read. Column : changedata. Entity : audit定位RetrieveRecordChangeHistory可以获取所有具有新旧值的审计集合。下面的示例:

recordid