使用融合表来提供折线图

时间:2013-05-25 16:44:43

标签: google-visualization google-fusion-tables

我有一个以DATETIME(例如01-01-1970)和TIMESTAMP列的形式存储事件的表。

当我想查询每天查看事件的数量时,我会这样做:

SELECT date, COUNT() FROM tableId GROUP BY date ORDER BY date ASC

返回如下数据:

date    count() 
1       1
2       1
3       1
4       3
5       1
6       1
7       1
8       4
9       4
10      3

现在我想使用这些数据绘制折线图:

google.visualization.drawChart({
   "containerId": "report",
   "dataSourceUrl": "http://www.google.com/fusiontables/gvizdata?tq=",
   "query":"SELECT date, COUNT() FROM tableId GROUP BY date ORDER BY date ASC",
//       "chartType": "Table",
   "chartType": "LineChart",
   "options": {
      "enableInteractivity": false,
      "showRowNumber" : true,
      "vAxis": { "title": "Events" },
      "hAxis": { "title": "Days" }
   }
});

但由于某些原因它似乎不起作用,因为图表显示但没有绘制数据。

任何提示?

1 个答案:

答案 0 :(得分:0)

我猜这是因为你实际上没有将任何东西保存为DataTable object。您可以查看query language reference,了解查询如何作为Google Visualization对象的来源。

如果您查看this example如何处理查询,那么您将看到需要保存查询响应并将其作为DataTable对象提供给您的图表:

function drawVisualization() {
  // To see the data that this visualization uses, browse to
  // http://spreadsheets.google.com/ccc?key=pCQbetd-CptGXxxQIG7VFIQ
  var query = new google.visualization.Query(
      'http://spreadsheets.google.com/tq?key=pCQbetd-CptGXxxQIG7VFIQ&range=B1:D11&pub=1');

  // Send the query with a callback function.
  query.send(handleQueryResponse);
}

function handleQueryResponse(response) {
  if (response.isError()) {
    alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
    return;
  }

  var data = response.getDataTable();
  visualization = new google.visualization.IntensityMap(document.getElementById('visualization'));
  visualization.draw(data, null);
}

因此,请确保您有一个中间步骤,使用queryResponse.getDataTable()将查询结果保存为DataTable对象,这可能会解决您的问题。