2016-01-21 78 views
2

我正在使用Perl来驱动BigQuery,我试图插入一个作业,该作业将从查询结果中填充表格。我得到的错误是“缺少必需的参数”。那是哪个参数? (这将是很好,如果错误信息是更具体的)Perl中的BigQuery:将查询数据附加到表中

下面是代码:

$response = $bq->request(
resource => 'jobs', 
method => 'insert', 
content => { 
    configuration => { 
     query => { 
     query => $query, 
     destinationTable => { 
      project_id => $project_id, 
      dataset_id => $dataset_id, 
      tableId => $table_id, 
     }, 
     createDisposition => "CREATE_IF_NEEDED", 
     writeDisposition => "WRITE_APPEND", 
     allowLargeResults =>"TRUE", 
     }, 
    }, 
}, 
async => $async, 
); 

需要注意的是,如果我跳过destinationTable会的一部分,代码工作正常,但是却让导致临时表。所以这个作品:

$response = $bq->request(
resource => 'jobs', 
method => 'insert', 
content => { 
    configuration => { 
     query => { 
     query => $query, 
     createDisposition => "CREATE_IF_NEEDED", 
     writeDisposition => "WRITE_APPEND", 
     }, 
    }, 
}, 
async => $async, 
); 

任何想法?不要被Perl这样的事实拖延,它的行为与Python相同,只是格式不同。

+0

你试图加入flattenResults?另一个选项 - 检查命名 - projectId,datasetId; flattenResults是可选的,所以最有可能后者 –

+0

我的猜测是你要么一致地将'destinationTable'中的字段作为'projectId','datasetId'和'tableId',或者一致地将它们强调为'project_id',等 –

回答

3

尝试:

destinationTable => { 
     projectId => $project_id, 
     datasetId => $dataset_id, 
     tableId => $table_id, 
    }, 
+0

谢谢;就是这样。我发布后发现它意外。它只花了我3小时的挫折&@ $ $&!$%。我甚至没有提供像样的错误消息,因此在谷歌中非常恼火。忘记编码示例。 – user3688176

+0

理解为:o)如果您认为它回答您的问题(我认为是这样),您仍然可以投票或接受答案 - 所以以后的用户可以看到正确的答案。完全取决于你!感谢您的更新 –

+0

我不知道我是否也可以做同样的事情,即将输出指向目标表,而不是查询我只列出表。不同的是,列表命令是免费的... – user3688176

相关问题