Невозможно использовать оператор вставки или обновления с BigQuery с помощью скрипта Apps - PullRequest
6 голосов
/ 07 октября 2019

Я использую скрипт приложения в качестве веб-крючка, который должен собирать информацию и сохранять ее в BigQuery. Ранее я мог хранить данные в листах, используя appendRow, но поскольку размер данных становится огромным, я вынужден искать альтернативы и поэтому решил сделать это с помощью BigQuery.

Когда я используюстандартный SQL-запрос для вставки / обновления данных с помощью консоли BigQuery, он отлично работает, но не так хорошо при использовании скрипта приложений.

Это моя doGet функция, которая должна собирать данные и запускать BigQuery.Jobs.queryно это сбой и не обновление таблицы -

var projectId = 'MyProjectID';
var datasetId = 'MyDatasetID';
var tableId = 'MyTableID';

function doGet(e) {
  var params = JSON.stringify(e.parameters);
  var jsonMapping = JSON.parse(params)
  var email = jsonMapping["email"][0]
  var number = jsonMapping["number"][0]
  var request = {
    'query': "INSERT INTO `" + projectId + "."+ datasetId + "." + tableId + "` VALUES ('" + email + "','" + number + "')"
  }
  var queryResults = BigQuery.Jobs.query(request, projectId);
  var jobId = queryResults.jobReference.jobId;
  return ContentService.createTextOutput('Successful')
}

Может кто-нибудь сказать, пожалуйста, что я делаю не так ?? Невозможно увидеть полную ошибку, так как она усекается, и всплывающее окно просто закрывается при следующем запуске: (

1 Ответ

7 голосов
/ 07 октября 2019

Вам нужно установить useLegacySql на false . Немного больше информации об этом можно найти здесь

Попробуйте это -

var projectId = 'MyProjectID';
var datasetId = 'MyDatasetID';
var tableId = 'MyTableID';

function doGet(e) {
  var params = JSON.stringify(e.parameters);
  var jsonMapping = JSON.parse(params)
  var email = jsonMapping["email"][0]
  var number = jsonMapping["number"][0]
  var request = {
    'query': "INSERT INTO `" + projectId + "."+ datasetId + "." + tableId + "` VALUES ('" + email + "','" + number + "')",
    'useLegacySql': false
  }
  var queryResults = BigQuery.Jobs.query(request, projectId);
  var jobId = queryResults.jobReference.jobId;
  return ContentService.createTextOutput('Successful')
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...