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

Posted

技术标签:

【中文标题】如何使用 Apps 脚本运行不将结果写入表的 BigQuery 作业?【英文标题】:How do I use Apps Script to run a BigQuery job that doesn't write the results to a table? 【发布时间】:2017-12-20 10:48:11 【问题描述】:

我正在尝试编写一个 GAS,它只运行我保存的 BigQuery 查询。查询本身非常简单 - 它只是一个 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”)

【问题讨论】:

Simpy 删除 destinationTable 属性。为什么它不起作用?请发布 GAS 代码和您遇到的错误。 我已经用详细信息更新了原始帖子 - 抱歉! 请更新问题,不要作为评论;-) 谢谢你对我好!! 嗯。我刚刚尝试使用destinationTable 行// 运行该脚本,并且在属性列表之后收到一条新错误消息“Missing 。(line8,文件“XXX”) 【参考方案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);

【讨论】:

圣诞快乐! 随时。也请考虑投票!

以上是关于如何使用 Apps 脚本运行不将结果写入表的 BigQuery 作业?的主要内容,如果未能解决你的问题,请参考以下文章

使用 keytab 而不将其写入磁盘的 Bash 脚本

使用Google Apps脚本搜索无结果

如何在 MYSQL 中运行查询而不将其写入二进制日志

Google Bigquery 的 Apps 脚本未知错误

写入电子表格时强制使用 Google Apps 脚本中的小数位

将关联数组转换为数字以在Apps脚本中写入工作表