Gil*_*rim 4 google-apps-script google-bigquery
我正在尝试使用Google Apps脚本自动执行每日汇总流程.我们的想法是在一个数据集的几个表上运行,并将结果保存到第二个数据集的表中.我的用户对两个相关数据集都有权限.
我的请求如下
var request = {
"maxResults": 10000,
"useQueryCache": false,
"destinationTable": {
"projectId": "project_name_obfuscated",
"datasetId": "project_114151_shared",
"tableId": "test123"
},
"writeDisposition": "WRITE_TRUNCATE",
"createDisposition": "CREATE_IF_NEEDED",
"allowLargeResults": true,
"query": "query syntax here"
};
var queryResults = BigQuery.Jobs.query(request, "project_name_obfuscated");
Run Code Online (Sandbox Code Playgroud)
(出于保密原因,我对项目的名称和查询本身进行了模糊处理).
查询实际运行正常,但是,它没有保存到我定义的指定项目/数据集/表中.
在BQ用户界面中,我看到的内容如下:
Job ID: project_name_obfuscated:job_NhkQpi110p3i5yoOO7nzXp3tTKY
Start Time: 5:47pm, 20 Oct 2014
End Time: 5:47pm, 20 Oct 2014
Bytes Processed: 0 B
Destination Table: project_name_obfuscated:_138c3340e691065e8db0b55781b5a41c6b4bcd49.anonev_SOiiRC10lfetj000kcj4rmXNc5E
Run Code Online (Sandbox Code Playgroud)
我有什么想法我做错了吗?
您使用的参数只能通过Jobs.query方法中的Jobs.insert获得.Jobs.query旨在用于快速,同步查询,并且不支持Jobs.insert中可用的全部选项,这是异步版本.
尝试类似的东西:
var configuration = {
"query": {
"useQueryCache": false,
"destinationTable": {
"projectId": "project_name_obfuscated",
"datasetId": "project_114151_shared",
"tableId": "test123"
},
"writeDisposition": "WRITE_TRUNCATE",
"createDisposition": "CREATE_IF_NEEDED",
"allowLargeResults": true,
"query": "query syntax here"
}
};
var job = {
"configuration": configuration
};
var jobResult = BigQuery.Jobs.insert(job, "project_name_obfuscated");
var jobId = jobResult.jobReference.jobId;
// The job might not actually be done; wait until it is marked
// complete.
var sleepTimeMs = 500;
while (true) {
Utilities.sleep(sleepTimeMs);
sleepTimeMs *= 2;
queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {
"maxResults": 10000);
if (!queryResults.jobComplete) {
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1657 次 |
| 最近记录: |