关于审计数据,由于审计数据存储在数据库中作为分隔值,因此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](https://istack.dev59.com/YLv39.webp)
另外一种方法与 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}