Google Visualization - 使用Java加入多个DataTable

时间:2013-04-10 09:46:43

标签: java gwt google-visualization

基本上我正在使用谷歌应用引擎(Java),数据存储区和谷歌可视化图表创建一个GWT应用程序。

我使用简单的折线图来表示以下信息 - 年度值(Y轴)(X轴)

我从数据存储区获取以下值作为实体列表:

请求Jon返回实体(每行是一个实体):

Person | Value | Year
Jon    |  80%  | 1992
Jon    |  74%  | 2010
Jon    |  10%  | 2011 
Jon    |  84%  | 2012

请求迈克退货:

Person | Value | Year
Mike   |  80%  | 2000
Mike   |  74%  | 2001
Mike   |  10%  | 2002 
Mike   |  84%  | 2003
Mike   |  85%  | 2006
Mike   |  65%  | 2011
Mike   |  55%  | 2012

我可以轻松地为每个人创建一个图表。我是通过使用以下DataTable在服务器上创建Google Visualization Data Source Library来实现的 - 然后我使用Json将其发回。

现在我想要的是创建一个组合/连接两个DataTables的图表

我能看到自己实现这一点的唯一另一种方法是单独创建每个TableRow - 这对我来说感觉有点过分,因为数据必须在每个人的正确列中,即TableRow for 2012年将需要

Year |Mike | Jon
2006 | 85% | null
2011 | 65% | 10%
2010 | null| 84%
2011 | 65% | 10%
2012 | 55% | 84%

这对我来说特别棘手,因为我为每个人发送了单独的请求 - 例如,如果我请求Jon,那么我会得到一个代表每一行的实体列表,但是当我想加入它们时,我需要经历痛苦得到年份,将值添加到正确的列等等。这一切似乎有点矫枉过正,必须有一种合并表的方法,以便您可以自动生成上面的行集。

我想要的只是为Jon和Mike和Sally生成一个DataTable,如果她出现,然后在一个简单的命令中将它们全部合并,这样我得到一个漂亮的图表,每行都映射到正确的人。

p.s我的代码应该用Java在服务器上编写......

3 个答案:

答案 0 :(得分:1)

可以将两个数据表连接成一个:

google.visualization.data.join(dt1,dt2,joinMethod,keys,dt1Columns,dt2Columns)

查看https://developers.google.com/chart/interactive/docs/reference#google_visualization_data_join

答案 1 :(得分:0)

我没有注意到DataTable的setCell方法 - 我太忙于查看addRow addCell方法...

请参阅https://developers.google.com/chart/interactive/docs/datatables_dataviews

仍然 - 能够合并两个数据表......

答案 2 :(得分:0)

您可以转换为JSON并合并它们 下面的示例是用Javascript编写的,但Java中的方法是相同的。

    var json1 = JSON.parse(dataTable1.toJSON());
    var json2 = JSON.parse(dataTable2.toJSON());
    var mergedRows = json1.rows.concat(json2.rows);

    json1.rows = mergedRows;
    var mergedDataTable= new google.visualization.DataTable(json1);