bigquery 输出中 group_concat/string_agg 的最大限制是多少?

div*_*yum 2 google-bigquery

我正在使用group_concat/string_agg(可能是 varchar),并希望确保 bigquery 不会删除任何连接的数据。

Ell*_*ard 5

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

#standardSQL
SELECT STRING_AGG(word) AS words FROM `bigquery-public-data.samples.shakespeare`;
Run Code Online (Sandbox Code Playgroud)

该表中有 164,656 行,该查询创建一个包含 1,168,286 个字符的字符串(大小约为 1 MB)。但是,如果您运行的查询在单个执行节点上需要的数据超过数百兆字节,您将开始看到错误:

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

这会导致错误:

Resources exceeded during query execution.
Run Code Online (Sandbox Code Playgroud)

如果单击 UI 中的“解释”选项卡,您可以看到失败发生在构建STRING_AGG. 在本例中,该字符串的长度为 3,303,599,000 个字符,即大小约为 3.3 GB。