数据查询

本页面介绍了如何向支持 Chart Tools Datasource 协议的数据源发送查询。

内容

概览

数据源是一种支持 Chart Tools Datasource 协议的网络服务。您可以向数据源发送 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.
  ...
}

如果您是从 Apps 脚本中发送查询,请务必使用 IFRAME 模式

处理响应

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

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

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

以下代码演示了如何处理先前绘制饼图的请求:

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(逗号分隔值)数据构建图表,则有以下两种选择。您可以手动将 CSV 数据转换为 Google 图表数据表格式,也可以将该 CSV 文件放置在图表的网络服务器上,然后使用本页面中的方法进行查询。

更多信息