通过SQL查询获取特定于表的成本

时间:2017-04-07 17:43:43

标签: google-bigquery

我是否可以运行查询来确定针对每个表的查询费用是多少?例如,此查询的结果至少包括:

dataset.table1 236TB已处理dataset.table2 56GB已处理数据集。表3已处理24kB等

还有一种方法可以了解哪些特定查询最耗费我们的费用?

谢谢!

2 个答案:

答案 0 :(得分:2)

Let's talk first about data and respective data-points to do such a query!   

看看Job Resources
这里有一些有用的属性

configuration.query.query - 要执行的BigQuery SQL查询 statistics.query.referencedTables - 参考工作表。
statistics.query.totalBytesBilled - 为作业计费的总字节数。 statistics.query.totalBytesProcessed - 为作业处理的总字节数 statistics.query.billingTier - 工作的结算层。

拥有上述数据点可以让您编写相对简单的查询来回答每个查询的成本和每个表的成本问题!

So, now  - how to get this data available?   

您可以使用Job.list API收集作业,然后循环遍历所有可用作业,并通过Job.get API检索相应的统计信息 - 当然将检索到的数据转储到BigQuery表中。比你可以享受分析!

或者您可以使用BigQuery的审核日志来跟踪访问和费用详细信息(如docs中所述)并将其导出回BigQuery进行分析。

前一个选项(Jobs.list和Job.get in loop))使您能够获取作业信息,即使您尚未启用审计日志,因为Job.get API返回有关特定作业的信息创建后可以使用六个月 - 所以有足够的数据进行分析!

答案 1 :(得分:0)

以我目前的理解,不可能获得每个表的处理字节数。 在我看来,这将是一个很棒的功能,通过它您可以识别和优化成本,并且还可以更好地了解分区和集群更改的有效性。目前只能获取查询的总处理字节数,并查看引用了哪些表。但是没有简单的查询,也没有任何查询可以在表级别分析此成本,这比查询级别更精细。