更改amCharts数据的粒度

时间:2015-06-03 06:30:46

标签: javascript mysql json aggregate-functions amcharts

我使用amCharts构建了一个序列图。 工作流程是:

  • 前端允许用户逐个添加趋势线。
  • 对于添加的每个趋势线,正在从MySQL数据库中获取数据(使用PHP脚本)并以JSON格式返回到amCharts。

所需功能 - 用户应该能够选择不同的粒度。 MySQL DB每分钟都有数据。例如,用户可以选择绘制每小时平均值。

问题: - 在从MySQL获取分钟数据并以JSON格式返回后,是否可以进行聚合?也许某些JavaScript函数可以聚合PHP / MySQL返回的JSON数据。

我不希望在MySQL查询中进行聚合的原因是使聚合交换机更快。例如,如果前端JavaScript正在聚合分钟式MySQL数据,则从小时平均值切换到每日平均值将不需要再次查询MYSQL数据库,因为分钟数据已经可用。

欢迎任何想法。

由于 Pranav

1 个答案:

答案 0 :(得分:0)

您只需将Json结果保存在变量中,然后重新构建JSON并将此重建传递给amcharts。有了它,你用JS进行聚合。唯一的缺点是,当用户想要查看平均趋势线时,您必须向服务器询问详细信息......

示例 您有10个不同的趋势线,每个趋势线有4个粒度:日,月,年,世纪。

第一种方法 如果用户询问5个具有颗粒年度的趋势线,那么你需要AJAX CALL来获得5个日常颗粒趋势线的json,然后通过使用JS来构建月,年和世纪,客户端。

然后,如果用户要求6个trenlines(并且5个用户已经aske dbefore),你必须使JS足够聪明才能只调用一个趋势线并将其添加到你已经获得的5个

第二种方法 或者您创建复杂的机制,以丰富趋势线数据预设作为需求: 如果用户询问5个具有grabuarity月的趋势线,你得到月份,那么你可以构建年份和世纪而不是日子,因为它不是必需的。

然后,如果用户要求6个粒度年代的趋势线,那么你必须使JSON接收的智能功能只包含1个年度粒度的趋势线,然后仅为此趋势线构建世纪,因为其他趋势线已经在JS中可用