我想优化Big Query和google存储表的空间。有没有办法轻松找出表中每个字段的累积空间?在我的情况下,这并不简单,因为我有一个复杂的层次结构,有许多重复的记录。
答案 0 :(得分:2)
您可以在Web UI中执行此操作,只需在查询下方输入(而不是运行)更改为您感兴趣的字段
SELECT <column_name>
FROM YourTable
并查看包含各自大小的验证消息
重要 - 您不需要运行它 - 只需检查bytesProcessed的验证消息,这将是相应列的大小
验证是免费的,并调用所谓的干运行
如果您需要为许多表或包含多列的表格执行此类“列分析” - 您可以使用Tables.get API使用首选语言对其进行编码,以获取table schema;然后循环遍历所有字段并构建相应的SELECT语句,最后Dry Run它(在每个列的循环内)并得到totalBytesProcessed,正如您所知道的那样是相应列的大小
答案 1 :(得分:1)
我不认为这是在任何元数据中暴露的。 但是,您可以根据自己的需要轻松获得良好的近似值。提供了行数,因此对于某些数据类型,您可以直接计算大小: https://cloud.google.com/bigquery/pricing
对于字符串等类型,您可以通过查询来获取平均长度。前1000个字段,并将其用于存储计算。