Google bigquery bigquery输出中group\u concat/string\u agg的最大限制是多少?

Google bigquery bigquery输出中group\u concat/string\u agg的最大限制是多少?,google-bigquery,Google Bigquery,我正在使用group\u concat/string\u agg可能是varchar,希望确保bigquery不会删除任何连接的数据。如果特定查询的内存不足,bigquery不会删除数据;您将得到一个错误。您应该尝试将行大小保持在~100MB以下,因为超过此值将开始出错。您可以尝试使用以下示例创建一个大字符串: #standardSQL SELECT STRING_AGG(word) AS words FROM `bigquery-public-data.samples.shakespeare`

我正在使用group\u concat/string\u agg可能是varchar,希望确保bigquery不会删除任何连接的数据。

如果特定查询的内存不足,bigquery不会删除数据;您将得到一个错误。您应该尝试将行大小保持在~100MB以下,因为超过此值将开始出错。您可以尝试使用以下示例创建一个大字符串:

#standardSQL
SELECT STRING_AGG(word) AS words FROM `bigquery-public-data.samples.shakespeare`;
此表中有164656行,此查询创建的字符串大小约为1兆字节,包含1168286个字符。如果在单个执行节点上运行的查询需要的内容超过数百兆字节,您将开始看到错误,不过:

#standardSQL
SELECT STRING_AGG(CONCAT(word, corpus)) AS words
FROM `bigquery-public-data.samples.shakespeare`
CROSS JOIN UNNEST(GENERATE_ARRAY(1, 1000));
这将导致一个错误:

Resources exceeded during query execution.

如果单击UI中的“解释”选项卡,可以看到在生成字符串_AGG的结果时,故障发生在第1阶段。在这种情况下,字符串的长度应该是330359000个字符,或大约3.3 GB。

BigQuery不会在特定查询内存不足时删除数据;您将得到一个错误。您应该尝试将行大小保持在~100MB以下,因为超过此值将开始出错。您可以尝试使用以下示例创建一个大字符串:

#standardSQL
SELECT STRING_AGG(word) AS words FROM `bigquery-public-data.samples.shakespeare`;
此表中有164656行,此查询创建的字符串大小约为1兆字节,包含1168286个字符。如果在单个执行节点上运行的查询需要的内容超过数百兆字节,您将开始看到错误,不过:

#standardSQL
SELECT STRING_AGG(CONCAT(word, corpus)) AS words
FROM `bigquery-public-data.samples.shakespeare`
CROSS JOIN UNNEST(GENERATE_ARRAY(1, 1000));
这将导致一个错误:

Resources exceeded during query execution.

如果单击UI中的“解释”选项卡,可以看到在生成字符串_AGG的结果时,故障发生在第1阶段。在这种情况下,字符串的长度应该是330359000个字符,或大约3.3 GB。

补充了Elliot的答案-如何修复:

此查询Elliot's失败:

#standardSQL
SELECT STRING_AGG(CONCAT(word, corpus)) AS words
FROM `bigquery-public-data.samples.shakespeare`
CROSS JOIN UNNEST(GENERATE_ARRAY(1, 1000));
但您可以限制连接的字符串数量以获得有效的解决方案:

#standardSQL
SELECT STRING_AGG(CONCAT(word, corpus) LIMIT 10) AS words
FROM `bigquery-public-data.samples.shakespeare`
CROSS JOIN UNNEST(GENERATE_ARRAY(1, 1000));

补充Elliot的答案-如何修复:

此查询Elliot's失败:

#standardSQL
SELECT STRING_AGG(CONCAT(word, corpus)) AS words
FROM `bigquery-public-data.samples.shakespeare`
CROSS JOIN UNNEST(GENERATE_ARRAY(1, 1000));
但您可以限制连接的字符串数量以获得有效的解决方案:

#standardSQL
SELECT STRING_AGG(CONCAT(word, corpus) LIMIT 10) AS words
FROM `bigquery-public-data.samples.shakespeare`
CROSS JOIN UNNEST(GENERATE_ARRAY(1, 1000));

在处理查询(任何报告或类似“解释”的内容)时,是否有方法可以检查不同节点正在使用的数据量?您需要等待查询完成,然后查看“解释”选项卡,因为执行策略可能会随着运行而改变。我检查了“解释”选项卡,它只给出输入和输出行的数量,而不是节点数据统计。我只是指出,如果查询内存不足,它将显示失败的位置。我们不显示确切的内存使用情况,因为使用情况和容量有点不稳定,在大多数情况下,查看内存使用情况是没有意义的。在处理查询时,是否有方法可以检查不同节点使用了多少数据?是否有任何报告或类似“解释”的内容?您需要等到查询完成,然后看看解释选项卡,因为执行策略可能会随着运行而改变。我检查了解释选项卡,它只给出输入和输出行的数量,而不是节点数据统计。我只是指出,如果查询内存不足,它将显示失败的位置。我们没有显示确切的内存使用情况,因为使用情况和容量是有点不稳定的,在大多数情况下看不到它是有意义的。