Загрузите таблицу из Google Storage в BigQuery с помощью Google App Scripts

Я считаю, что это правильная настройка конфигурации задания, но мне трудно понять, как запустить задание. Кто-нибудь успешно использовал Apps Script для загрузки таблицы в BigQuery?

function testLoad(){

  var fields = [
    {'name': 'FirstName', 'type':'STRING'},
    {'name': 'LastName', 'type':'STRING'}
  ];

  var schema = BigQuery.newTableSchema()
    schema.setFields(fields)

  var tableReference = BigQuery.newTableReference()
    tableReference.setProjectId(PROJECT_ID);
    tableReference.setDatasetId('Test_Dataset');
    tableReference.setTableId('TestTable1');

  var load = BigQuery.newJobConfigurationLoad();
    load.setDestinationTable(tableReference);
    load.setSkipLeadingRows(1);
    load.setSourceUris([SOURCE]);
    load.setSourceFormat('CSV');
    load.setSchema(schema)

  var configuration = BigQuery.newJobConfiguration();
    configuration.setLoad(load);

  var newJob = BigQuery.newJob();
    newJob.setConfiguration(configuration);

  var insert = BigQuery.Jobs.insert(newJob)

  Logger.log(insert.getId());

}

person JKWA    schedule 03.07.2013    source источник
comment
выглядит хорошо, какие ошибки вы получаете?   -  person Felipe Hoffa    schedule 03.07.2013
comment
Я получаю Обязательный параметр отсутствует (строка 58, загрузка файла) Это относится к строке непосредственно перед Logger.log   -  person JKWA    schedule 03.07.2013


Ответы (1)


Наконец-то вернулся к этому вопросу. Недостающая часть должна была включать идентификатор проекта в задание вставки, а также ссылку на таблицу.

Я также добавил немного для опроса статуса задания и возврата, когда задание выполнено.

function testLoad(){

  Logger.log(exampleLoad_());
}


function exampleLoad_(){

  try{

    var fields = [
      {'name': 'FirstName', 'type':'STRING'},
      {'name': 'LastName', 'type':'STRING'}
    ];

    var schema = BigQuery.newTableSchema();
    schema.setFields(fields);

    var tableReference = BigQuery.newTableReference();
    tableReference.setProjectId(PROJECT_ID);
    tableReference.setDatasetId('Test_Dataset');
    tableReference.setTableId('TestTable1');

    var load = BigQuery.newJobConfigurationLoad();
    load.setDestinationTable(tableReference);
    load.setSkipLeadingRows('1');
    load.setSourceUris([SOURCE]);
    load.setSourceFormat('CSV');
    load.setSchema(schema);
    load.setAllowJaggedRows(false);

    var configuration = BigQuery.newJobConfiguration();
    configuration.setLoad(load);

    var newJob = BigQuery.newJob();
    newJob.setConfiguration(configuration);

    var job = BigQuery.Jobs.insert(newJob, {projectId:PROJECT_ID});

    var jobId = job.getJobReference().getJobId();

    var status = job.getStatus();


    while (status.getState() != 'DONE'){

      if(status.getState() == 'PENDING'){
        Utilities.sleep(100);

      }

      if (status.getErrorResult() == true){     
        return status.getErrors();

      } 
      status = BigQuery.Jobs.get(PROJECT_ID, jobId).getStatus();
    }

  }catch(err){ 
    return err;

  }

  return status.getState();
}
person JKWA    schedule 07.08.2013
comment
Вы можете это объяснить? Я пытаюсь использовать его, ошибка, которую я не могу. - person David Cesar Santos; 12.05.2015