使用 Capcity 计算定价模型计算 BigQuery 中的查询成本

问题描述 投票:0回答:1

我的公司正在通过购买 BigQuery 插槽来使用

Capacity compute pricing
模型。我正在计算每个查询的成本,以便团队中的每个人都可以检查他们的查询性能。我使用
INFORMATION_SCHEMA.JOBS
列和公式:
total_slot_ms
检查了
ROUND((total_slot_ms / 3600000) * hour_slot_price, 2)
表,但这仅占每日成本的约四分之一。然而,使用
ROUND((total_bytes_billed / POW(10, 12)) * scan_bytes_price, 2)
给出的数字更接近实际成本。

你有什么想法吗?即使我们采用容量计算定价,我是否应该继续使用

total_bytes_billed
来计算每个查询的成本?非常感谢!

SELECT
  date(creation_time) as creation_date,
  job_id,
  user_email,
  creation_time,
  start_time,
  end_time,
  total_bytes_processed,
  total_bytes_billed,
  ROUND((total_bytes_billed / POW(10, 12)) * 6.25, 2) AS data_processed_cost_usd,
  total_slot_ms,
  ROUND((total_slot_ms / 3600000) * 0.0768, 2) AS slot_time_cost_usd,  
  SAFE_DIVIDE(total_slot_ms, TIMESTAMP_DIFF(end_time, start_time, MILLISECOND)) AS avg_slots,
  query
FROM
  `region-eu`.INFORMATION_SCHEMA.JOBS
WHERE 1 = 1
  AND job_type = 'QUERY'
  AND state = 'DONE'
  AND creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)  -- Last 7 days
ORDER BY
  total_cost_usd DESC
google-cloud-platform google-bigquery
1个回答
0
投票

我得到了 Google 团队的答复。我希望这对研究类似问题的人有所帮助:

total_slot_ms 指标,可在 INFORMATION_SCHEMA.JOBS 中找到 表,是查询消耗多少槽的最相关度量 并且应该是成本计算的主要因素。确定 每次查询的成本,使用公式:

每次查询成本 = (total_slot_ms/ 3600000)× hour_slot_price

这个公式直接将正在使用的时间段与您的时间相关联 承诺成本。如果您发现这些计算成本的总和 与每日总费用不符,可能是由于槽位空闲 时间或其他系统开销不直接归因于特定 询问。

虽然total_bytes_billed传统上用于按需定价 模型,其中成本基于处理的数据,它仍然可以用作 容量定价下的补充指标。它有助于评估查询 通过将处理的数据与插槽使用情况进行比较来提高效率。一个查询 处理大量数据但消耗更少的槽可能 即使在容量定价下,也表明有效使用。

然而,在这个定价下管理成本最关键的方面 模型正在优化时隙利用率。未使用的插槽仍然有助于 总体成本,因此最大化它们在查询中的使用是 基本的。 BigQuery 的预订管理等工具可以提供帮助 更好地跨团队或项目分配时间,确保您的 承诺的资源得到充分利用。

© www.soinside.com 2019 - 2024. All rights reserved.