找出每个字段在 Google Big Query 中占用的空间量

Posted

技术标签:

【中文标题】找出每个字段在 Google Big Query 中占用的空间量【英文标题】:Find out the amount of space each field takes in Google Big Query 【发布时间】:2016-08-22 12:10:33 【问题描述】:

我想优化我的 Big Query 和 google 存储表的空间。有没有办法轻松找出表中每个字段获得的累积空间?就我而言,这并不简单,因为我有一个复杂的层次结构,有很多重复的记录。

【问题讨论】:

查看 bqdu.info 以获得一些想法 【参考方案1】:

您可以在 Web UI 中执行此操作,只需在查询下方键入(而不是运行)更改为您感兴趣的字段

SELECT <column_name>
FROM YourTable

并查看包含相应大小的验证消息

重要 - 您不需要运行它 - 只需检查 bytesProcessed 的验证消息,这将是相应列的大小

验证是免费的,并调用所谓的试运行

如果您需要对许多表或具有许多列的表进行此类“列分析” - 您可以使用您喜欢的语言使用 Tables.get API 进行编码以获得 table schema ;然后循环遍历所有字段并构建相应的 SELECT 语句,最后是 Dry Run 它(在每一列的循环内)并得到 totalBytesProcessed ,正如您已经知道的那样,它是相应列的大小

【讨论】:

【参考方案2】:

我认为这不会暴露在任何元数据中。 但是,您可以根据需要轻松获得良好的近似值。提供了行数,所以对于某些数据类型,可以直接计算大小: https://cloud.google.com/bigquery/pricing

对于字符串等类型,您可以通过查询例如获取平均长度。前 1000 个字段,并将其用于存储计算。

【讨论】:

以上是关于找出每个字段在 Google Big Query 中占用的空间量的主要内容,如果未能解决你的问题,请参考以下文章

Google Big Query 的奇怪活动

如何在 google Big Query 上添加页面浏览量维度?

Big Query 透视和聚合重复字段

关于Google Big Query中数据框中的DateTime与DateTime的问题

Big Query:如何提取数据集的每个表创建时间?

使用 Google Big Query 在 Google App 脚本上超过最大执行时间