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

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

Содержание

Обзор

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

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

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

  1. Создайте экземпляр объекта Query с URL-адресом вашего источника данных. URL-адрес должен указывать, какие данные запрашиваются, в синтаксисе, понятном этому источнику данных.
  2. При необходимости укажите параметры запроса, такие как метод отправки, в качестве необязательного второго параметра в конструкторе объекта Query (подробности см. в параметре opt_options конструктора запроса):
  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 на веб-сервер, обслуживающий диаграмму, и запросите его, используя метод, описанный на этой странице.

Дополнительная информация

  • Синтаксис языка запросов — описывает синтаксис языка, используемого для запросов данных.
  • Класс запроса — справочная страница для класса, который является оболочкой для запроса.
  • Класс QueryResponse — справочная страница для класса, который упаковывает ответ на запрос.