如何使用 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 时遇到了一些问题。
快速查看您的代码会发现一些问题:
下面一行是在每个请求中写入'+matrixReportId':
$.ajax('/services/data/v29.0/analytics/reports/+matrixReportId', {
我想你大概是想写matrixReportId
的内容吧?所以你需要这样做:
$.ajax('/services/data/v29.0/analytics/reports/' + matrixReportId, {
您正在对空值数组执行 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});
});
您应该而不是每次数据更改时都重新创建图表。您应该只更改数据,然后更新图表。
您忘记调用 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/
我是 NVD3 的新手。我正在尝试从销售人员的矩阵报告中获取数据,并在折线图和条形图中显示该数据。好像我得到的图表没有数据。在特定位置的悬停工具提示上,它显示 NAN。所以我认为我无法在报告中正确构建数据。你们中的任何人对此有何建议,如果可能的话,您也可以粘贴代码。 提前致谢。 我以此为参考并尝试过。 http://nvd3.org/examples/linePlusBar.html
正如您在评论中所说,使用测试数据一切正常。那么,问题一定出在您解析数据的方式上。此外,您在使用 nvd3 时遇到了一些问题。
快速查看您的代码会发现一些问题:
下面一行是在每个请求中写入'+matrixReportId':
$.ajax('/services/data/v29.0/analytics/reports/+matrixReportId', {
我想你大概是想写
matrixReportId
的内容吧?所以你需要这样做:$.ajax('/services/data/v29.0/analytics/reports/' + matrixReportId, {
您正在对空值数组执行 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}); });
您应该而不是每次数据更改时都重新创建图表。您应该只更改数据,然后更新图表。
您忘记调用 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/