Google bigquery 在BigQuery表中计算代理位大小
如何在一段时间内计算BigQuery分片表中每条记录的位大小 目标:随着时间的推移,它增长了多少 细微差别:在70多个字段中,有些记录的大多数字段为空,有些记录的长字符串文本直接取自原始日志,有些字段可能是浮点/整数/日期类型Google bigquery 在BigQuery表中计算代理位大小,google-bigquery,bit,Google Bigquery,Bit,如何在一段时间内计算BigQuery分片表中每条记录的位大小 目标:随着时间的推移,它增长了多少 细微差别:在70多个字段中,有些记录的大多数字段为空,有些记录的长字符串文本直接取自原始日志,有些字段可能是浮点/整数/日期类型 想知道是否有一种简单的方法可以对一天的位大小进行代理计数,然后我可以将其扩展到一个时间范围。根据我的经验示例: 我的一个表是每日分片表,每日大小为4-5TB。模式有大约780个字段。我想了解每个数据点的成本(位大小)[当时用于根据成本/使用率计算ROI] 所以,让我给你们
想知道是否有一种简单的方法可以对一天的位大小进行代理计数,然后我可以将其扩展到一个时间范围。根据我的经验示例:
我的一个表是每日分片表,每日大小为4-5TB。模式有大约780个字段。我想了解每个数据点的成本(位大小)[当时用于根据成本/使用率计算ROI] 所以,让我给你们一个关于它的成本(比特大小)方面的想法 这里的主要部分是对 将
dryRun
设置为true允许BigQuery(而不是实际运行作业)返回有关作业的统计信息,例如将处理多少字节。这正是这里需要的
例如,下面的请求旨在获取2017-01-05年ga_会话表中的trafficSource.referralPath
的成本
POST https://www.googleapis.com/bigquery/v2/projects/yourBillingProject/queries?key={YOUR_API_KEY}
{
"query": "SELECT trafficSource.referralPath FROM yourProject.yourDataset.ga_sessions_20170105`",
"dryRun": true,
"useLegacySql": false
}
您可以通过解析响应中的totalBytesProcessed
来获取此值。参见下面的此类响应示例
{
"kind": "bigquery#queryResponse",
"jobReference": {
"projectId": "yourBillingProject"
},
"totalBytesProcessed": "371385",
"jobComplete": true,
"cacheHit": false
}
因此,您可以在自己选择的客户端中编写相对简单的脚本:
查询api
并提取相应字段的大小(如上所述),当然还要记录它(或者只在内存中收集)如果现在,您需要分析这些尺寸随时间的变化——您可以使用另一个循环来结束上面的内容,在这个循环中,您将根据需要迭代多少天,并收集每天的统计数据 如果您对逐日分析不感兴趣,您可以确保您的查询实际查询您感兴趣的范围。这可以通过使用 <> P>我认为这与比较容易。 就我个人而言,我记得和Go lang一起做过这件事,但没关系——你可以使用任何你最满意的客户
希望这对你有帮助 以我的经验为例:
我的一个表是每日分片表,每日大小为4-5TB。模式有大约780个字段。我想了解每个数据点的成本(位大小)[当时用于根据成本/使用率计算ROI] 所以,让我给你们一个关于它的成本(比特大小)方面的想法 这里的主要部分是对 将
dryRun
设置为true允许BigQuery(而不是实际运行作业)返回有关作业的统计信息,例如将处理多少字节。这正是这里需要的
例如,下面的请求旨在获取2017-01-05年ga_会话表中的trafficSource.referralPath
的成本
POST https://www.googleapis.com/bigquery/v2/projects/yourBillingProject/queries?key={YOUR_API_KEY}
{
"query": "SELECT trafficSource.referralPath FROM yourProject.yourDataset.ga_sessions_20170105`",
"dryRun": true,
"useLegacySql": false
}
您可以通过解析响应中的totalBytesProcessed
来获取此值。参见下面的此类响应示例
{
"kind": "bigquery#queryResponse",
"jobReference": {
"projectId": "yourBillingProject"
},
"totalBytesProcessed": "371385",
"jobComplete": true,
"cacheHit": false
}
因此,您可以在自己选择的客户端中编写相对简单的脚本:
查询api
并提取相应字段的大小(如上所述),当然还要记录它(或者只在内存中收集)如果现在,您需要分析这些尺寸随时间的变化——您可以使用另一个循环来结束上面的内容,在这个循环中,您将根据需要迭代多少天,并收集每天的统计数据 如果您对逐日分析不感兴趣,您可以确保您的查询实际查询您感兴趣的范围。这可以通过使用 <> P>我认为这与比较容易。 就我个人而言,我记得和Go lang一起做过这件事,但没关系——你可以使用任何你最满意的客户 希望这对你有帮助