本页面介绍了如何向支持 Chart Tools Datasource 协议的数据源发送查询。
内容
概览
数据源是一种支持 Chart Tools Datasource 协议的网络服务。您可以向数据源发送 SQL 查询,作为响应,您会收到一个填充了适当信息的 DataTable。数据源的一些示例包括 Google 电子表格和 SalesForce。
发送请求
发送请求:
- 使用数据源的网址实例化 Query 对象。该网址应指明数据源请求的内容,采用的数据源理解的语法。
-
(可选)指定请求选项,例如在
Query
对象构造函数中,将发送方法作为可选的第二个参数(如需了解详情,请参阅查询构造函数的opt_options
参数): -
(可选)添加查询语言字符串,以对结果进行排序或过滤,然后发送请求。数据源无需支持图表工具数据源查询语言。如果数据源不支持查询语言,则会忽略 SQL 查询字符串,但仍会返回
DataTable
。查询语言是 SQL 语言变体;请点击此处查看完整的查询语言语法。 - 发送查询,指定将在收到响应时调用的回调处理程序:如需了解详情,请参阅下一部分。
以下示例展示了如何在 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
。
您的响应处理程序应执行以下操作:
-
通过调用
response.isError()
检查请求是成功还是失败。您无需向用户显示任何错误消息;可视化库会在容器<div>
中为您显示错误消息。不过,如果您确实想手动处理错误,可以使用goog.visualization.errors
类来显示自定义消息(如需查看自定义错误处理示例,请参阅查询封装容器示例)。 -
如果请求成功,响应中将包含一个可通过调用
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 文件放置在图表的网络服务器上,然后使用本页面中的方法进行查询。
更多信息
- 查询语言语法 - 介绍进行数据查询所使用的语言的语法。
- 查询类 - 用于封装查询的类的参考页面。
- QueryResponse 类 - 封装查询响应的类的参考页面。