Dynamics crm 从Dynamics 365向Power BI获取审核记录详细信息
通过选择Get Data、选择odata选项并使用Dynamics crm 从Dynamics 365向Power BI获取审核记录详细信息,dynamics-crm,odata,powerbi,dynamics-365,Dynamics Crm,Odata,Powerbi,Dynamics 365,通过选择Get Data、选择odata选项并使用url/api/Data/v9.1/audits,我已经能够从Dynamics 365中拉出一个审计表并将其加载到Power BI中。我看到了列RetrieveAuditDetails,但我不明白为什么所有的值都表示函数。有没有一种方法可以扩展它,以与更改相同的方式显示旧值/新值,例如,要扩展到全名的用户ID?当涉及到审核数据时,由于审核数据在数据库中存储为分隔值,OData/Web API REST端点在PowerBI中不太友好 如果是java
url/api/Data/v9.1/audits
,我已经能够从Dynamics 365中拉出一个审计表并将其加载到Power BI中。我看到了列RetrieveAuditDetails
,但我不明白为什么所有的值都表示函数。有没有一种方法可以扩展它,以与更改相同的方式显示旧值/新值,例如,要扩展到全名的用户ID?当涉及到审核数据时,由于审核数据在数据库中存储为分隔值,OData/Web API REST端点在PowerBI中不太友好
如果是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
query targeting singleaudited
或以下过滤audits
的输出模式之间没有太大差异
https://crmdev.crm.dynamics.com/api/data/v9.1/audits?$filter=_objectid_value eq 449d2fd8-58b8-e911-a839-000d3a315cfc
事实上,无论是web api还是fetchxml,resultset都无法获取包含已更改字段值的重要列changedata
,这是由于以下限制:Retrieve只能返回可读取的有效列。列:changedata。实体:审计
我在FetchXML builder中得到了以下信息:
还有另一种方法,但与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}
你好,阿伦,我有一个问题需要理解,因为我们知道审计有RetrieveAuditDetails功能,我们可以在其中找到更多细节。但是我们如何处理w.r.t PowerBI和Webapi调用呢。我试着使用fetchxml,我们知道唯一的函数是检索到的。那么,这是否意味着不需要直接调用fecth/webapi来获取数据,而需要在两者之间多做一步呢?@AnkUser请查看我的更新。不幸的是,将所有原始数据推送到staging table并在转储到staging table之前对其进行按摩或在代码中进行按摩都是可选的—无论哪种方式,我们都必须将其放入staging table以使用,但不能像其他实体那样直接访问url:(@ArunVinoth那么,根据您上面的陈述,理论上,我可以在D365中使用一个单独的实体来获取值,然后将该实体/表拉入Power BI吗?@SQLHound这可能是一个开销,为什么不在用于复制的本地sql上使用一些暂存表(如果您已经有了这样的表的话)..@ArunVinoth客户要求数据保留在云中。我意识到我在Power BI桌面上设计时正在提取数据,但这都是开发。当我们将报告提前到生产阶段时,数据将全部保留在云中。