0

我有一个表,它以 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" }
   }
});

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

有什么提示吗?

4

1 回答 1

0

我猜这是因为您实际上并没有将任何内容保存为DataTable object。您可以查看查询语言参考以了解查询如何作为 Google 可视化对象的来源。

如果您查看这个如何处理查询的示例,那么您将看到您需要保存查询响应并将其作为 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);
}

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

于 2013-05-26T23:29:07.987 回答