如何使用Apps脚本运行不将结果写入表的BigQuery作业?

问题描述 投票:1回答:1

我正在尝试编写一个只运行已保存的BigQuery查询的GAS。查询本身非常简单 - 它只是一个UPDATE查询:

UPDATE `project.dataset.table`
SET field1= '72142',
    field2= 'Yes'
WHERE field3 like '%72142%'
AND field1 IS NULL

我发现了前一个问题How to use App script to run a google big query and save it as a new table which can we reused?

这非常有用,但它包括在运行查询后创建一个表,我不想这样做。我尝试调整脚本以忽略目标表和writeDisposition值。

但它不起作用。

更新:这是脚本

function runQuery() {
  var projectId = 'project';
  var datasetId = 'dataset';
  var tableId = 'table';
  var job = {
    configuration: {
      query: {
        query: 'UPDATE `project.dataset.table`  SET field1 = '72142',    field2 = 'Yes' WHERE field3 like '%72142%'AND field1 IS NULL,
        destinationTable: {
          projectId: projectId,
          datasetId: datasetId,
          tableId: tableId
        }
      }
    }
  };

  var queryResults = BigQuery.Jobs.insert(job, projectId);
  Logger.log(queryResults.status);
}

并且错误消息是“语法错误。(第21行,文件”xxx“)

google-apps-script google-bigquery
1个回答
1
投票

您需要删除对任何表写入标志的所有引用,并且您的JSON中也存在一些语法问题:

function runQuery() {
  var configuration = {
    "query": {
    "useQueryCache": false,
    "useLegacySql": false,
    "query": "UPDATE `<your_projectId>.<your_dataset>.<your_table>` SET field1 = '72142',field2 = 'Yes' WHERE field3 like '%72142%' AND field1 IS NULL"
    }
  };

  var job = {
    "configuration": configuration
  };

  var jobResult = BigQuery.Jobs.insert(job, "<your_projectId>");
  Logger.log(jobResult);
}
© www.soinside.com 2019 - 2024. All rights reserved.