Google bigquery 在BigQuery表中计算代理位大小

Google bigquery 在BigQuery表中计算代理位大小,google-bigquery,bit,Google Bigquery,Bit,如何在一段时间内计算BigQuery分片表中每条记录的位大小 目标:随着时间的推移,它增长了多少 细微差别:在70多个字段中,有些记录的大多数字段为空,有些记录的长字符串文本直接取自原始日志,有些字段可能是浮点/整数/日期类型 想知道是否有一种简单的方法可以对一天的位大小进行代理计数,然后我可以将其扩展到一个时间范围。根据我的经验示例: 我的一个表是每日分片表,每日大小为4-5TB。模式有大约780个字段。我想了解每个数据点的成本(位大小)[当时用于根据成本/使用率计算ROI] 所以,让我给你们

如何在一段时间内计算BigQuery分片表中每条记录的位大小

目标:随着时间的推移,它增长了多少

细微差别:在70多个字段中,有些记录的大多数字段为空,有些记录的长字符串文本直接取自原始日志,有些字段可能是浮点/整数/日期类型


想知道是否有一种简单的方法可以对一天的位大小进行代理计数,然后我可以将其扩展到一个时间范围。

根据我的经验示例:
我的一个表是每日分片表,每日大小为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一起做过这件事,但没关系——你可以使用任何你最满意的客户

    希望这对你有帮助