我的智慧在这里结束了,所以任何指点都很感激。
我正在查询,将响应转换为适当的JSON格式,并使用Url记忆体p使用多部分请求将其加载到bigQuery中。但是,这会导致我每天非常快地访问Url取章节100 me的配额,因此我正在研究将JSON压缩到GZIP并将其加载到bigQuery中的方法(我考虑过,但我也会遇到同样的问题,因为将数据保存到GCS首先需要的也是Url记忆章,所以这就是为什么这是一个Google脚本问题)。
我已经将数据转换为blob,然后使用Utilities.zip压缩数据并发送字节,但是经过多次调试,结果证明格式是.zip,而不是.gzip。
下面是在我的应用程序脚本(NEWLINE_DELIMITED_JSON)中创建的json字符串
{"ga_accountname":"photome","ga_querycode":"493h3v63078","ga_startdate":"2013-10-23 00:00:00","ga_enddate":"2013-10-23 00:00:00","ga_segmentname":"#_all_visits","ga_segmentexp":"ga:hostname=~dd.com","ga_landingPagePath":"/","ga_pagePath":"/","ga_secondPagePath":"(not set)","ga_source":"(direct)","ga_city":"Boden","ga_keyword":"(not set)","ga_country":"Sweden","ga_pageviews":"1","ga_bounces":"0","ga_visits":"1"}我已经完成了其余的API请求(使用uploadType可恢复,作业配置发送of,压缩的blob字节上传良好,但bigQuery说“输入没有数据”)。这是我的Url记忆体的参数。
// Sending job configuration first
var url = 'https://www.googleapis.com/upload/bigquery/v2/projects/' + bqProjectId +'/jobs?uploadType=resumable';
var options = {
'contentType': 'application/json; charset=UTF-8',
'contentLength': newJobSize,
'headers': {
'Accept-Encoding': 'gzip, deflate',
'Accept': 'application/json',
'X-Upload-Content-Length': zipSize,
'X-Upload-Content-Type': 'application/octet-stream'
},
'method' : 'post',
'payload' : jobData,
'oAuthServiceName' : 'bigQuery',
'oAuthUseToken' : 'always'
};
// Sending job data
var url = jobReq.getHeaders().Location;
var options = {
'contentType': 'application/octet-stream',
'contentLength': zipSize,
'contentRange': '0-'+zipSize,
'method' : 'put',
'payload' : zipBytes,
'oAuthServiceName' : 'bigQuery',
'oAuthUseToken' : 'always'
};我有什么选择?我对API相当陌生,但我可以让Url记忆章将有效负载压缩到GZIP吗?
发布于 2014-09-15 17:35:16
目前在Google脚本中没有任何方法可以使用gzip -- UtilitiesApp.zip()方法只使用常规压缩,而不是gzip。
与其使用UrlFetchApp形成多部分上传,为什么不使用Google脚本中存在的BigQuery库呢?
var projectId = "Bigquery-Project-Id";
var job = {
configuration: {
load: {
destinationTable: {
projectId: projectId,
datasetId: datasetId,
tableId: tableId
},
sourceFormat: "NEWLINE_DELIMITED_JSON",
writeDisposition: "WRITE_APPEND"
}
}
};
var data = jobData;
job = BigQuery.Jobs.insert(job, projectId, data);要启用它,您需要在两处打开BigQuery访问。
首先,您需要转到Apps UI中的参考资料下拉菜单,然后选择.。查找列表中的大查询,并为其切换开/关开关。
在关闭高级服务窗口之前,您需要单击底部的Google开发人员控制台链接。这将打开您的Google脚本项目的开发者控制台。在控制台中的API列表中查找大型查询并启用它。
就是这样-在那里,您可以使用BigQuery应用程序类而不是UrlFetchApp将数据传递给BigQuery API。
https://stackoverflow.com/questions/20875581
复制相似问题