Запросы данных

На этой странице описано, как отправить запрос к источнику данных, который поддерживает протокол источника данных инструментов работы с диаграммами.

Содержание

Обзор

Источник данных — это веб-служба, поддерживающая протокол источника данных инструментов диаграмм. Вы можете отправить SQL-запрос к источнику данных и в ответ получить DataTable, заполненный соответствующей информацией. Некоторые примеры источников данных включают таблицы Google и SalesForce.

Отправка запроса

Чтобы отправить запрос:

  1. Создайте экземпляр объекта Query с URL-адресом вашего источника данных. URL-адрес должен указывать, какие данные запрашиваются, в синтаксисе, понятном этому источнику данных.
  2. При необходимости укажите параметры запроса, такие как метод отправки, в качестве необязательного второго параметра в конструкторе объекта Query (подробности см. в параметре opt_options конструктора Query):
  3. При необходимости добавьте строку языка запроса для сортировки или фильтрации результатов, а затем отправьте запрос. Источники данных не обязаны поддерживать язык запросов источников данных инструментов диаграмм. Если источник данных не поддерживает язык запросов, он проигнорирует строку запроса SQL, но все равно вернет DataTable . Язык запросов представляет собой вариант языка SQL; полный синтаксис языка запросов можно прочитать здесь .
  4. Отправьте запрос, указав обработчик обратного вызова, который будет вызван при получении ответа: подробности см. в следующем разделе.

Вот пример отправки запроса на данные в диапазоне ячеек таблицы Google; Чтобы узнать, как получить URL-адрес таблицы 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 Script, обязательно используйте режим IFRAME .

Обработка ответа

Функция обработчика ответа будет вызвана при возврате запроса. Параметр, передаваемый в функцию обработчика ответа, имеет тип 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 (значения, разделенные запятыми), у вас есть два варианта. Либо вручную преобразуйте данные CSV в формат данных Google Charts , либо поместите CSV-файл на веб-сервер, обслуживающий диаграмму, и выполните запрос, используя метод, описанный на этой странице.

Больше информации