如何使用 salesforce analaytics 在矩阵报告中为 nvd3 行加条形图构建数据 api

how to frame data in a Matrixreport for nvd3 line plus Barchart using salesforce analaytics api

我是 NVD3 的新手。我正在尝试从销售人员的矩阵报告中获取数据,并在折线图和条形图中显示该数据。好像我得到的图表没有数据。在特定位置的悬停工具提示上,它显示 NAN。所以我认为我无法在报告中正确构建数据。你们中的任何人对此有何建议,如果可能的话,您也可以粘贴代码。 提前致谢。 我以此为参考并尝试过。 http://nvd3.org/examples/linePlusBar.html

正如您在评论中所说,使用测试数据一切正常。那么,问题一定出在您解析数据的方式上。此外,您在使用 nvd3 时遇到了一些问题。

快速查看您的代码会发现一些问题:

  1. 下面一行是在每个请求中写入'+matrixReportId':

    $.ajax('/services/data/v29.0/analytics/reports/+matrixReportId', {
    

    我想你大概是想写matrixReportId的内容吧?所以你需要这样做:

    $.ajax('/services/data/v29.0/analytics/reports/' + matrixReportId, {
    
  2. 您正在对空值数组执行 chartData.push()。你应该只在将元素添加到数组后才这样做:

    $.each(response.groupingsDown.groupings, function(di, de) {
        var values = [];
        $.each(response.groupingsAcross.groupings, function(ai, ae) {
            values.push({"x": ae.label, "y": response.factMap[de.key+"!"+ae.key].aggregates[0].value});
        });
        chartData.push({"key":de.label, "values": values});
    });
    
  3. 您应该而不是每次数据更改时都重新创建图表。您应该只更改数据,然后更新图表。

  4. 您忘记调用 nv.utils.windowResize()。

我编辑了 jsfiddle 以合并这些更改。请测试一下: https://jsfiddle.net/egLgaxc4/5/

此外,您最好根本不使用 jquery,因为 d3+jquery 会变得很重。 D3有自己的ajax(看d3.xhr),foreach和selection方法。你真的不需要jquery这里。

在这里,我创建了一个仅使用 d3 的示例:https://jsfiddle.net/fwuzk3y6/5/