使用 Google Apps 脚本将查询中的数据加载到 Big Query - 缺少必需参数

Posted

技术标签:

【中文标题】使用 Google Apps 脚本将查询中的数据加载到 Big Query - 缺少必需参数【英文标题】:Loading data from a query to Big Query with Google Apps Script - Required Parameter is missing 【发布时间】:2015-12-01 15:56:51 【问题描述】:

我正在尝试使用以下代码将数据插入 Big Query。但是,我收到错误“缺少必需的参数”。

function runQuery() 

  var projectId = 'xxxxxxx';
  var datasetId = 'Registration_Funnel_Test';
  var tableId = 'reg_funnel_test_';
  var date = '2015-11-05';
  var tableDate = date.split('-').join('');

  var bigQueryQuery = 
    query: 'SELECT'+ 
    'date,'+
    'CONCAT([fullVisitorId], STRING([visitId])) as sessionId,'+
     'hits.eventInfo.eventAction as event_action,'+
    'FROM (TABLE_DATE_RANGE([82514188.ga_sessions_],TIMESTAMP("'+date+'"),'
        TIMESTAMP("'+date+'"))) '+
    'WHERE hits.eventInfo.eventAction IN ("Started Registration",'+
     "Completed Registration","Made First Deposit")'+
     'GROUP EACH BY date, sessionId, event_action;'            
          ;
    var job = 
        configuration: 
          query: 
            query: bigQueryQuery,
            destinationTable: 
              projectId: projectId,
              datasetId: datasetId,
              tableId: tableId+tableDate
            ,
            'allowLargeResults': true,
            'createDisposition': 'CREATE_IF_NEEDED',
            'writeDisposition': 'WRITE_TRUNCATE'
          
        
      ;
      var jobResult = BigQuery.Jobs.insert(job, projectId);
      Logger.log(jobResult.status.state);
      Logger.log(jobResult.status);         
    

抛出错误的代码行是var jobResult = BigQuery.Jobs.insert(job, projectId);

可以在https://cloud.google.com/bigquery/docs/reference/v2/jobs/insert 找到 Google 文档,但我就是看不到问题所在。我有一个更复杂的例子,它使用这种方法并且它有效,所以我没有选择。任何帮助将不胜感激。

【问题讨论】:

您上面的代码似乎有些奇怪...... 'var bigQueryQuery ' 行有一个左大括号,但我没有看到相应的右大括号。看起来它正在设置一个“查询”字段,但它应该只是一个字符串。 谢谢@JordanTigani。我通过添加右大括号修改了上面的代码错误。我现在尝试只使用一个字符串。 你是如何创建 projectId 的? 【参考方案1】:

检查目标表中的以下行:

tableId: tableId+tableDate

尝试在外面定义tableId然后使用

tableId: tableId

如果这仍然对您不起作用 - 我建议在 Native BG UI 中手动执行类似(或相同)的查询,然后使用发布的 jobid 检查配置。这样您就可以确定您的情况应该是什么样子

【讨论】:

以上是关于使用 Google Apps 脚本将查询中的数据加载到 Big Query - 缺少必需参数的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在仅附加模式下使用 Google Apps 脚本将数据从 BigQuery 加载到 Google 表格?

Google Apps 脚本 - 将 gmail 中的数据提取到电子表格中

如何通过 Google 表格中的二维数组通过 Apps 脚本插入 Big Query?

为啥通过 Google Apps 脚本向 Bigquery 加载的数据仅限于 513 行数据?

无法通过 Google Apps 脚本中的 YouTube 数据 API 从云端硬盘上传:空响应

无法通过 Google Apps 脚本中的 YouTube 数据 API 从云端硬盘上传:空响应