数据查询

本页面介绍了如何向支持“图表工具”数据源协议的数据源发送查询。

概览

数据源是一项支持“图表工具”数据源协议的 Web 服务。您可以向数据源发送 SQL 查询,作为响应,您会收到填充了相应信息的 DataTable。数据源的例子有 Google 电子表格和 SalesForce。

发送请求

如需发送请求,请执行以下操作

  1. 使用数据源的网址实例化 Query 对象。网址应该使用相应数据源可以理解的语法来指明正在请求哪些数据。
  2. (可选)在 Query 对象构造函数中将发送方法(例如发送方法)指定为可选的第二个参数(如需了解详情,请参阅查询构造函数的 opt_options 参数):
  3. (可选)添加查询语言字符串以对结果进行排序或过滤,然后发送请求。数据源并非支持“图表工具”数据源查询语言。如果数据源不支持查询语言,则会忽略 SQL 查询字符串,但仍会返回 DataTable。查询语言是一种 SQL 语言变体;请点击此处阅读完整的查询语言语法。
  4. 发送查询,指定在收到响应时调用的回调处理程序:详情请参阅下一部分。

下面是一个发送 Google 电子表格单元格范围中的数据请求的示例;要了解如何获取 Google 电子表格的网址,请点击此处

function initialize() {
  var opts = {sendMethod: 'auto'};
  // Replace the data source URL on next line with your data source URL.
  var query = new google.visualization.Query('http://spreadsheets.google.com?key=123AB&...', opts);

  // Optional request to return only column C and the sum of column B, grouped by C members.
  query.setQuery('select C, sum(B) group by C');

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

function handleQueryResponse(response) {
  // Called when the query response is returned.
  ...
}

处理响应

当请求返回时,系统会调用您的响应处理程序函数。传入您的响应处理程序函数的参数是 google.visualization.QueryResponse。如果请求成功,响应会包含一个数据表(google.visualization.DataTable 类)。如果请求失败,响应会包含错误的相关信息,但不包含 DataTable

您的响应处理程序应执行以下操作

  1. 通过调用 response.isError() 检查请求是成功还是失败。您无需向用户显示任何错误消息;可视化库会在容器 <div> 中为您显示错误消息。但是,如果您确实想手动处理错误,可以使用 goog.visualization.errors 类显示自定义消息(如需查看自定义错误处理的示例,请参阅查询封装容器示例)。
  2. 如果请求成功,响应将包含一个 DataTable,您可以通过调用 getDataTable() 检索该响应。将其传递到图表。

以下代码演示了如何处理上一个绘制饼图的请求:

function handleQueryResponse(response) {

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

  var data = response.getDataTable();
  var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
  chart.draw(data, {width: 400, height: 240, is3D: true});
}

读取 CSV 文件

如果要使用 CSV(逗号分隔值)数据构建图表,您有以下两种选择:

  • 将数据转换为 Google 图表数据表格格式
  • 将 CSV 文件放在提供图表的网络服务器上,并使用本页介绍的方法查询该文件。

更多信息