谷歌可视化查询限制 [英] google visualization query limit

查看:119
本文介绍了谷歌可视化查询限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Google可视化查询,其数据来自fusion表,例如:

  var query = new google.visualization .Query(https://www.google.com/fusiontables/gvizdata?tq=select * from *******************); 

但它只选择前500行数据。如何克服这个限制?

解决方案

不建议使用Fusion Tables SQL查询。新版API不限于500行,详情请参阅 Fusion Tables API

编辑:

下面是一个使用Google Fusion Tables代码Odi的示例仪表板: p>

 函数drawTable(response){
var data = new google.visualization.DataTable();
data.addColumn('string','国家名称');
data.addColumn('数字','1960年的人口');
data.addColumn('数字','2000年的人口数量');

var rows = [];
for(var i = 0; i< response.rows.length; i ++){
rows.push([response.rows [i] [0],parseInt(response.rows [i] [1]),parseInt(response.rows [i] [2])]);
}
data.addRows(rows);

var table = new google.visualization.ChartWrapper({
containerId:'table_div',
chartType:'Table',
options:{

}
});

var control = new google.visualization.ControlWrapper({
containerId:'control_div',
controlType:'StringFilter',
options:{
filterColumnIndex:0
}
});

var dashboard = new google.visualization.Dashboard(document.querySelector('#dashboard'));
dashboard.bind([control],[table]);
dashboard.draw(data);
}

函数getData(){
//构建一个Fusion Tables SQL查询并将结果交给dataHandler
var queryUrlHead ='https:// www。 googleapis.com/fusiontables/v1/query?sql=;
var queryUrlTail ='& key = AIzaSyCAI2GoGWfLBvgygLKQp5suUk3RCG7r_ME';
var tableId ='17jbXdqXSInoNOOm4ZwMKEII0sT_9ukkqt_zuPwU';

//将SQL编码为正常,然后对其进行编码
var query =SELECT'国家名','1960'为'1960年的人口','2000'为'Population in 2000'FROM+ tableId +ORDER BY'国家名称'LIMIT 10;
var queryurl = encodeURI(queryUrlHead + query + queryUrlTail);

var jqxhr = $ .get(queryurl,drawTable,jsonp);
}
google.load('visualization','1',{packages:['controls'],callback:getData});

看到它在这里工作: http://jsfiddle.net/asgallant/6BXsy/



给出日期格式 yyy

  var data => 这是您如何从中创建Date对象:新的google.visualization.DataTable(); 
data.addColumn('date','Date');
//其他列

var rows = [],dateArray,年,月,日;
for(var i = 0; i< response.rows.length; i ++){
dateArray = response.rows [i] [0] .split(' - ');
year = parseInt(dateArray [0]);
month = parseInt(dateArray [1]) - 1;
day = parseInt(dateArray [2]);
rows.push([新日期(年,月,日)/ *,其他数据* /]);
}
data.addRows(rows);


I have a Google visualization query for which data is coming from fusion table as,

var query = new google.visualization.Query("https://www.google.com/fusiontables/gvizdata?tq=select * from *******************");

But it select only first 500 rows of data. How to overcome this limitation?

解决方案

The Fusion Tables SQL queries are deprecated. The new version of the API is not limited to 500 rows, see the Fusion Tables API for details.

Edit:

Here is an example Dashboard using the Google Fusion Tables code Odi posted in comments below:

function drawTable(response) {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Country Name');
    data.addColumn('number', 'Population in 1960');
    data.addColumn('number', 'Population in 2000');

    var rows = [];
    for (var i = 0; i < response.rows.length; i++) {
        rows.push([response.rows[i][0], parseInt(response.rows[i][1]), parseInt(response.rows[i][2])]); 
    }
    data.addRows(rows);

    var table = new google.visualization.ChartWrapper({
        containerId: 'table_div',
        chartType: 'Table',
        options: {

        }
    });

    var control = new google.visualization.ControlWrapper({
        containerId: 'control_div',
        controlType: 'StringFilter',
        options: {
            filterColumnIndex: 0
        }
    });

    var dashboard = new google.visualization.Dashboard(document.querySelector('#dashboard'));
    dashboard.bind([control], [table]);
    dashboard.draw(data);
}

function getData() {
    // Builds a Fusion Tables SQL query and hands the result to  dataHandler
    var queryUrlHead = 'https://www.googleapis.com/fusiontables/v1/query?sql=';
    var queryUrlTail = '&key=AIzaSyCAI2GoGWfLBvgygLKQp5suUk3RCG7r_ME';
    var tableId = '17jbXdqXSInoNOOm4ZwMKEII0sT_9ukkqt_zuPwU';

    // write your SQL as normal, then encode it
    var query = "SELECT 'Country Name', '1960' as 'Population in 1960', '2000' as 'Population in 2000' FROM " + tableId + " ORDER BY 'Country Name' LIMIT 10";
    var queryurl = encodeURI(queryUrlHead + query + queryUrlTail);

    var jqxhr = $.get(queryurl, drawTable, "jsonp");
}
google.load('visualization', '1', {packages:['controls'], callback: getData});

See it working here: http://jsfiddle.net/asgallant/6BXsy/

Give the date format yyy-mm-dd, this is how you would create Date objects from it:

var data = new google.visualization.DataTable();
data.addColumn('date', 'Date');
// other columns

var rows = [], dateArray, year, month, day;
for (var i = 0; i < response.rows.length; i++) {
    dateArray = response.rows[i][0].split('-');
    year = parseInt(dateArray[0]);
    month = parseInt(dateArray[1]) - 1;
    day = parseInt(dateArray[2]);
    rows.push([new Date(year, month, day) /*, other data */]); 
}
data.addRows(rows);

这篇关于谷歌可视化查询限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆