确认如何计算 bigquery 查询成本

Posted

技术标签:

【中文标题】确认如何计算 bigquery 查询成本【英文标题】:Confirmation of how to calculate bigquery query costs 【发布时间】:2017-12-19 16:14:28 【问题描述】:

在评估 BigQuery 的查询成本时,我想仔细检查需要查看的内容。我找到了每 TB 的报价here,上面写着每 TB 5 美元,但正好 1 TB 是什么?到目前为止,我一直假设相关数字将是 BigQuery UI 在结果上方输出的数字,因此对于此示例查询:

...在这种情况下为 2.34GB。因此,如果我用完了当月的零用钱,那么如果我用完这个月的零用钱,那么如果乘以 5 美元,那么这将花费大约 1.2 美分。

谁能确认我是正确的?在我处理一些我认为可能会一次性增加一些不可忽略的成本之前检查这一点。我应该说我从来没有被巨额的 BigQuery 账单所困扰,因为它似乎很难做到。

【问题讨论】:

【参考方案1】:

谁能确认我是正确的?

确认

请注意 - BigQuery UI 实际上使用 DryRun,它只估计 Total Bytes Processed 。最终成本基于Bytes Billed,它反映了一些细微差别 - 例如,查询中涉及的每个表至少 10MB。您可以在此处查看更多详细信息 - https://cloud.google.com/bigquery/pricing#on_demand_pricing

【讨论】:

谢谢米哈伊尔 - 非常感谢【参考方案2】:

我知道我迟到了,但这可能会对你有所帮助。

如果您要将审核日志推送到另一个数据集,您可以在该数据集上执行以下操作。

  WITH data as
  (
    SELECT
      protopayload_auditlog.authenticationInfo.principalEmail as principalEmail,
      protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent AS jobCompletedEvent
    FROM
      `administrative-audit-trail.gcp_audit_logs.cloudaudit_googleapis_com_data_access_20190227`
  )
  SELECT
    principalEmail,
    FORMAT('%9.2f',5.0 * (SUM(jobCompletedEvent.job.jobStatistics.totalBilledBytes)/POWER(2, 40))) AS Estimated_USD_Cost
  FROM
    data
  WHERE
    jobCompletedEvent.eventName = 'query_job_completed'
  GROUP BY principalEmail
  ORDER BY Estimated_USD_Cost DESC

参考:https://cloud.google.com/bigquery/docs/reference/auditlogs/

【讨论】:

以上是关于确认如何计算 bigquery 查询成本的主要内容,如果未能解决你的问题,请参考以下文章

可用于计算 BigQuery 查询成本的 Python API 是啥?

BigQuery 定价:记录列的查询数据大小(成本)计算

如何让我的客户将 BigQuery 查询结果导出为 CSV

BigQuery:无效日期错误

将 MySQL 查询转换为 BigQuery 查询

BigQuery - 在插入表时调用查询