我有一个以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" }
}
});
但由于某些原因它似乎不起作用,因为图表显示但没有绘制数据。
任何提示?
答案 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对象,这可能会解决您的问题。