【问题标题】:Getting Audit Record Details from Dynamics 365 to Power BI从 Dynamics 365 获取审核记录详细信息到 Power BI
【发布时间】:2019-08-19 21:26:31
【问题描述】:

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

【问题讨论】:

    标签: dynamics-crm odata powerbi dynamics-365


    【解决方案1】:

    在审计数据方面,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 获取完整列表后获取完整详细信息。这就是您在其中看到 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);
        }
    );
    

    更新: 进一步分析 - 上述RetrieveAuditDetails 查询针对单个auditid 或以下过滤的audits 查询针对单个recordid 的输出架构之间没有太大区别。

    https://crmdev.crm.dynamics.com/api/data/v9.1/audits?$filter=_objectid_value eq 449d2fd8-58b8-e911-a839-000d3a315cfc
    

    事实是 web api 或 fetchxml,结果集无法获取包含更改的字段值的重要列 changedata - 由于限制:Retrieve can only return columns that are valid for read. Column : changedata. Entity : audit

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

    还有另一种方法,但无论如何都与 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 功能,我们可以在其中找到更多详细信息。但是我们如何处理那个 w.r.t PowerBI 和 Webapi 调用。我尝试使用 fetchxml 并且我们知道只有函数是检索到的。那么这是否意味着没有直接的 fecth/webapi 调用来获取数据,而是需要额​​外的步骤?
    • @AnkUser 请看我的更新。不幸的是,将所有原始数据推送到暂存表并对其进行按摩或在转储到暂存表之前在代码中按摩是选项 - 无论哪种方式,我们都必须将其放入暂存表中以使用但不能像其他实体一样直接访问 url :(跨度>
    • @ArunVinoth 那么根据您上面的陈述,理论上我是否可以在 D365 中使用单独的实体来获取值,然后将该实体/表拉入 Power BI 中?
    • @SQLHound 这可能是一个开销,为什么不在用于复制的本地 sql 上的一些临时表(如果你已经有一个)..
    • @ArunVinoth 客户要求数据保留在云端。当我在 Power BI 桌面上进行设计时,我意识到我正在提取数据,但这都是开发。当我们将报告推进到生产阶段时,它将全部保存在云端。
    猜你喜欢
    • 2021-05-28
    • 2019-03-08
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 2018-05-27
    相关资源
    最近更新 更多