应用脚本:对于 bigquery 的响应太大

     2023-03-24     153

关键词:

【中文标题】应用脚本:对于 bigquery 的响应太大【英文标题】:App Script: response too large for bigquery 【发布时间】:2016-07-26 05:09:53 【问题描述】:

我正在使用 Google 应用脚本来自动执行从 BigQuery 导入电子表格的过程。但是应用程序脚本正在返回我

Error 413: Message: response too large

这是我的代码示例,错误在第 5 行

1 var projectId = projectid;
2 var request = 
3 query: 'My Query'
4 ;
5 var queryResults = BigQuery.Jobs.query(request, projectId);

有哪些可能的解决方案?是否有任何解决方案不会增加我的 BigQuery 费用?

PS:结果是大约 16 MB 的数据。即大约 300,000 行。

查询:

SELECT
  ORDER.addedon AS date,
  ORDER.display_order_id AS order_id,
  OrderSkuDetails.pid AS pid,
  OrderSkuDetails.price AS price,
  OrderSkuDetails.saleprice AS saleprice,
  OrderSkuDetails.subtotal AS subtotal,
  OrderSkuDetails.shippingcharge AS shippingcharge,
  OrderSkuDetails.codcharge AS codcharge,
  User.email AS email,
  ORDER.order_id AS payment_id,
  ORDER.payment_mode AS payment_mode,
  ORDER.source AS source,
  ORDER.user_id AS user_id,
  Payments.payment_status AS payment_status,
  User.profileJson.text,
  OrderStatus.sub_status_id AS sub_status_id,
  NProduct.featured AS featured
FROM
  FLATTEN([Mixpanel_Import.Order],payment_mode) AS ORDER
INNER JOIN
  [Mixpanel_Import.OrderSkuDetails] AS OrderSkuDetails
ON
  ORDER.order_id=OrderSkuDetails.order_id
INNER JOIN
  [Mixpanel_Import.OrderStatus] AS OrderStatus
ON
  ORDER.order_id=OrderStatus.order_id
INNER JOIN
  [Mixpanel_Import.User] AS User
ON
  ORDER.user_id=User.__key__.id
INNER JOIN
  [Mixpanel_Import.Payments] AS Payments
ON
  ORDER.order_id=Payments.order_id
INNER JOIN
  [Mixpanel_Import.NProduct] AS NProduct
ON 
  OrderSkuDetails.pid=NProduct.pid

这里是代码

function bigQuery(tableName) 
  var projectId = 'project';
  var request = 
    query: The Query
  ;
  var queryResults = BigQuery.Jobs.query(request, projectId); //Error on this line
  var jobId = queryResults.jobReference.jobId;
  Logger.log(jobId);
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) 
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId);
  
  while (queryResults.pageToken) 
    queryResults.concat(BigQuery.Jobs.getQueryResults(projectId, jobId, pageToken: queryResults.pageToken));
  
  return queryResults;

【问题讨论】:

您可能不应该尝试通过网络拉出 300K 行并在您的解决方案中显示它们。我假设您正在构建某种网络前端? @polleyg 基本上是用于数据分析的。我需要拉这么多数据,有什么方法可以做到吗 即使我将结果限制为 10000,错误仍然是一样的。 您能告诉我们您的查询吗?我认为可能有一个子查询产生了太多行。 这就是为什么我建议您展示您的应用脚本,以便我们指出您的问题:o) 【参考方案1】:

请尝试在您的工作配置中添加allowLargeResults,并将值设置为true

如Returning large query results中所述

即使结果集很小,返回大结果的查询也需要更长的时间来执行,并且会受到额外的限制:

您必须指定目标表。 您不能指定***ORDER BYTOPLIMIT 子句。这样做会抵消使用 allowLargeResults 的好处,因为查询输出不能再并行计算。 只有与PARTITION BY 子句结合使用时,窗口函数才能返回较大的查询结果。

如果这不起作用,建议的解决方案和可能解决以下问题的想法也可能会有所帮助:

Loading a Lot of Data into Google Bigquery from Python GitHub-HTTP Error 413 Request Entity Too Large

除此之外,还可以在Troubleshooting Errors 中找到有关使用 BigQuery 时出现错误的信息。

【讨论】:

尝试 ORDER BY 时 BigQuery“响应太大而无法返回”

】尝试ORDERBY时BigQuery“响应太大而无法返回”【英文标题】:BigQuery"ResponseTooLargeToReturn"whentryingtoORDERBY【发布时间】:2014-06-0220:42:58【问题描述】:我有一个查询,可以找到用户“最后”一天的所有事件(即2周以上没有... 查看详情

BigQuery 在小表上为 COUNT(*) 提供“响应太大”

】BigQuery在小表上为COUNT(*)提供“响应太大”【英文标题】:BigQuerygives"Responsetoolarge"forCOUNT(*)oversmalltables【发布时间】:2013-01-1416:23:41【问题描述】:我有一个包含以下7个每日汇总表的数据集,每个汇总表都很小:summary_b... 查看详情

Google Bigquery 通过简单的选择说“响应太大而无法返回”

】GoogleBigquery通过简单的选择说“响应太大而无法返回”【英文标题】:GoogleBigquerysays"Responsetoolargetoreturn"withsimpleselect【发布时间】:2015-06-2314:27:52【问题描述】:ModifierallowLargeResults已设置,我也尝试过交互式和批量查... 查看详情

BigQuery 对整个数据集给出响应太大错误,但对等效子查询没有

】BigQuery对整个数据集给出响应太大错误,但对等效子查询没有【英文标题】:BigQuerygivesResponseTooLargeerrorforwholedatasetbutnotforequivalentsubqueries【发布时间】:2012-12-1902:10:13【问题描述】:我在BigQuery中有一个包含以下字段的表:time,... 查看详情

在适用于 PHP 的 Google BigQuery API 中捕获“响应太大而无法返回错误”的正确方法是啥?

】在适用于PHP的GoogleBigQueryAPI中捕获“响应太大而无法返回错误”的正确方法是啥?【英文标题】:Whatistheproperwaytocapturea"Responsetoolargetoreturnerror"inGoogleBigQueryAPIforPHP?在适用于PHP的GoogleBigQueryAPI中捕获“响应太大而无法返回... 查看详情

AdWord 脚本导出到 BigQuery“空响应”

】AdWord脚本导出到BigQuery“空响应”【英文标题】:AdWordScriptExporttoBigQuery"EmptyResponse"【发布时间】:2016-04-2204:16:55【问题描述】:使用以下AdWords脚本导出到BigQuery,BigQuery.Jobs.insert导致脚本因“空响应”而终止。呼叫没有... 查看详情

未获得访问 BigQuery 服务的应用脚本的授权对话框

】未获得访问BigQuery服务的应用脚本的授权对话框【英文标题】:NotgettingAuthorizationdialogforAppScriptaccessingBigQueryService【发布时间】:2018-03-2516:30:59【问题描述】:我正在尝试修复一些使用BigQuery“高级服务”来安装一些BigQuery作业... 查看详情

运行 BigQuery 的应用脚本脚本时出现神秘重复

】运行BigQuery的应用脚本脚本时出现神秘重复【英文标题】:MysteryDuplicationswhenrunninganAppScriptscriptforBigQuery【发布时间】:2018-08-0102:44:31【问题描述】:以下代码应将基于查询的数据集附加到统一表中,但是它当前正在复制此数据... 查看详情

BigQuery - 通过应用脚本上传带有模式自动检测的 csv

】BigQuery-通过应用脚本上传带有模式自动检测的csv【英文标题】:BigQuery-uploadcsvwithschemaautodetectviaappsscript【发布时间】:2017-05-2112:41:30【问题描述】:我需要将数据从云端硬盘上传到BigQuery。我找到了这两个解释(UploadCSV,BQJobs... 查看详情

无法为应用程序脚本项目启用 BigQuery

】无法为应用程序脚本项目启用BigQuery【英文标题】:cannotenableBigQueryforappsscriptproject【发布时间】:2017-10-0619:25:29【问题描述】:从昨天开始,我无法再在我的应用脚本项目中成功启用BigQueryAPI。在过去的几个月里,我已经这样... 查看详情

应用脚本:如何在 Google Sheet 中返回 BigQuery-Request 的 TotalRows

】应用脚本:如何在GoogleSheet中返回BigQuery-Request的TotalRows【英文标题】:AppScript:howtoreturnTotalRowsofaBigQuery-RequestinGoogleSheet【发布时间】:2020-11-0908:28:07【问题描述】:我为GoogleSheet编写了一个应用脚本,用于更新BQ中的表格。该脚... 查看详情

将数据流式传输到 BigQuery 时没有错误响应

】将数据流式传输到BigQuery时没有错误响应【英文标题】:NoerrorresponseforstreamingdataintoBigQuery【发布时间】:2017-04-0618:43:12【问题描述】:我有一个简单的nodejs脚本,可以将数据插入到bigquery表中。当数据输入正确时,它就像一个... 查看详情

BigQuery SQL 通过应用程序脚本按 DATE 过滤

】BigQuerySQL通过应用程序脚本按DATE过滤【英文标题】:BigQuerySQLviaAppsScriptsfilteringbyDATE【发布时间】:2020-10-0813:50:01【问题描述】:这是我第一次使用BigQuery。我在Google表格文件中有一个自动化功能,它每天运行并将一些数据插入... 查看详情

Python BigQuery 脚本 bigquery.jobs.create 错误

】PythonBigQuery脚本bigquery.jobs.create错误【英文标题】:PythonBigQueryscriptbigquery.jobs.createerror【发布时间】:2018-10-2612:52:59【问题描述】:我正在尝试通过python脚本在GoogleBigQuery上运行一个简单的查询,但我收到以下错误消息,即我的... 查看详情

BigQuery 中的查询作业中的 allowLargeResults

】BigQuery中的查询作业中的allowLargeResults【英文标题】:allowLargeResultsinQueryjobinBigQuery【发布时间】:2016-09-0610:21:46【问题描述】:我正在尝试在BigQuery中运行查询作业并收到以下错误:响应太大而无法返回。考虑将allowLargeResults设... 查看详情

从 python 脚本将日志摄取到 bigquery

】从python脚本将日志摄取到bigquery【英文标题】:Ingestinglogsintobigqueryfromapythonscript【发布时间】:2012-05-3108:13:15【问题描述】:我想在不使用appenginemapreduce的情况下将日志从appengine应用提取到bigquery?【问题讨论】:那么,具体... 查看详情

Angular Dart 到 JavaScript 结果对于生产来说太大了?

...ion?【发布时间】:2014-08-0622:11:27【问题描述】:AngularDart应用程序的最小/最小编译和最小化JavaScript大小(什么都不做)大约是650KB对吗?这对于移动应用程序来说太大了,对于普通应用程序来说甚至太大了。有谁知道如何 查看详情

通常如何从 Google Apps 脚本访问 BigQuery

】通常如何从GoogleApps脚本访问BigQuery【英文标题】:HowtoaccessBigQuerygenerallyfromGoogleAppsScript【发布时间】:2018-05-3018:47:24【问题描述】:我有一个当前使用JDBC访问GCPSQL数据库的GoogleApps脚本应用程序。使用普通的SQL数据库并不能解... 查看详情