我使用gcloud版本'Google Cloud SDK 204.0.0'我需要获得项目中所有可用数据集的总大小和项目中所有数据集表的总大小(我认为数据集的总大小也会给我一个数据集的所有表的总大小)和项目中所有桶的总大小。我必须使用云SDK版本204.0.0,这是较旧的一个。任何关于如何获得这些细节的想法也将受到高度赞赏。请帮助。
感谢这些都不可能使用核心GCloud SDK。它们是特定的组分,bq
和gsutil
。如果由于更新所需的权限而绑定到特定版本,则如果没有这些组件,则无法安装这些组件,它们的安装过程与核心更新完全相同。
您可以检查它们是否安装了gcloud components list
,如果允许,则安装gcloud components install bq gsutil
。
现在,假设您已经安装了这些组件,让我们继续。我们将自动化从一个命令到另一个命令的许多管道,所以我将使用jq
。如果您愿意,可以手动获取这些值。
BigQuery
要列出数据集,我们使用bq ls
,非常简单。要获取名称,我们将像这样通过管道:
bq ls --format json | jq -r '.[] | .id'
要列出数据集中的表,我们执行bq ls <dataset>
。在jq中输入:
bq ls --format json <dataset> | jq -r '.[] | .id'
结合使用xargs
的前一行,我们可以列出所有的表:
bq ls --format json | jq -r '.[] | .id' | xargs -L1 bq ls --format json | jq -r '.[] | .id'
最后,我们需要得到我们使用的bq show <table>
表的大小。这给了我们很多不必要的信息,我们可以把我们想要的简化成这样的对象:
bq show --format json <table> | jq -s 'map({(.id): {"rows": .numRows, "bytes": .numBytes}}) | add'
现在结合所有内容:
bq ls --format json | jq -r '.[] | .id' | xargs -L1 bq ls --format json | jq -r '.[] | .id' | xargs -L1 bq show --format json | jq -s 'map({(.id): {"rows": .numRows, "bytes": .numBytes}}) | add'
这将以以下格式给出答案:
{
"<project>:<dataset>.<table>" {
"rows": "47",
"bytes": "3637"
},
...
"<project>:<dataset>.<table>": {
"rows": "449464",
"bytes": "73899799"
}
}
云存储这个很简单,只要gsutil du -s
就会给你每个桶的大小。