gpt4 book ai didi

json - 将 JSON 有效负载压缩为 GZIP 以使用 Urlfetchapp 加载到 bigQuery 中? (Utilities.zip 不兼容 gzip)

转载 作者:行者123 更新时间:2023-12-01 23:26:12 24 4
gpt4 key购买 nike

我在这里束手无策,所以非常感谢任何指点。

我正在查询 Google Analytics API,将响应转换为适当的 JSON 格式,并使用 Urlfetchapp 使用多部分请求将其加载到 bigQuery 中。但这导致我很快就达到了 Urlfetchapp 每天 100MB 的配额,因此我正在寻找将 JSON 压缩为 GZIP 并将其加载到 bigQuery 中的方法(我考虑过 Google Cloud Storage,但我遇到了与保存数据相同的问题)到 GCS 首先还需要 Urlfetchapp,因此这是一个 Google Apps 脚本问题)。

我已将数据转换为 blob,然后使用 Utilities.zip 对其进行压缩并发送字节,但经过多次调试后发现格式是 .zip,而不是 .gzip。

这是在我的 Apps 脚本中创建的 json 字符串 (NEWLINE_DELIMITED_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、作业配置发送正常、压缩的 blob 字节上传正常,但 bigQuery 说“输入不包含数据”。这是我的 Urlfetchapp 参数。

        // 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 相当陌生,但我可以让 Urlfetchapp 帮我将有效负载压缩为 GZIP 吗?

最佳答案

目前没有任何方法可以在 Google Apps 脚本中使用 gzip - UtilitiesApp.zip()方法仅使用常规 zip 压缩,而不使用 gzip。

与其使用 UrlFetchApp 形成分段上传,不如使用 BigQuery library Google Apps 脚本中存在什么?

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 访问权限。

首先,您需要转到应用程序 UI 中的“资源”下拉菜单,然后选择“高级 Google 服务...”。在列表中找到 Big Query,然后切换其打开/关闭开关。

在关闭高级服务窗口之前,您需要点击底部的Google 开发者控制台链接。这将打开您的 Google Apps 脚本项目的开发人员控制台。在控制台的 API 列表中找到 Big Query 并启用它。

就是这样 - 您可以从那里使用 BigQuery Apps 类(而不是 UrlFetchApp)将数据传递到 BigQuery API。

关于json - 将 JSON 有效负载压缩为 GZIP 以使用 Urlfetchapp 加载到 bigQuery 中? (Utilities.zip 不兼容 gzip),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20875581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com