通过选择“获取数据”,选择“ odata”选项并使用url/api/data/v9.1/audits
,我已经能够从Dynamics 365中提取审核表并将其加载到Power BI中。我看到了RetrieveAuditDetails
列,但我不明白为什么所有值都表示 Function 。有没有一种方法可以扩展它以显示旧值/新值,就像您可以更改的方式一样,例如将UserID扩展为全名?
答案 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构建器中得到了这个
还有另一种方法,但无论如何都不兼容PowerBI,使用Retrieve can only return columns that are valid for read. Column : changedata. Entity : audit
定位RetrieveRecordChangeHistory
可以获取所有具有新旧值的审计集合。下面的示例:
recordid