【问题标题】:Bigquery pricing variations?Bigquery 定价变化?
【发布时间】:2016-01-21 05:22:35
【问题描述】:

我们运行 BigQuery 大约 4 个月了,我们对定价有一些有趣的观察和问题:

  1. 定价模型无法解释,需要对联接、联合等进行解释
  2. 如果我在小表上运行连接,我处理的数据将随着在 bigquery 引擎中相乘的小表的每个副本而增加?
  3. 如果我在一个查询中重复使用相同的子查询,这是新的数据处理,不管它是相同的子查询吗?这可以以任何方式优化吗? bigquery 不会缓存它的数据吗?
  4. 是否存在四舍五入用于数据处理的最小大小?我们的观察认为它是 4MB,这是正确的吗?
  5. 在 Google 控制台中,地理位置存在问题,它说大多数查询都是从 CA 完成的,这是不正确的,因为我的公司在欧洲,所有的开发都是在那里完成的。我检查了所有IP地址,没有CA ip。是否可以获得更详细的报告?
  6. 关于 5,我们想获取每个查询的历史和价格。我们应该怎么做?我们的软件必须这样做吗?
  7. 关于 3) 我在数据处理方面遇到了这个大问题(这就是我问所有问题的原因)。我的整个数据集大约有 150mb 大,但每个查询的 DP 大小是 3 倍?如果 bigquery 读取我的全部数据,它不会达到它在处理的数据上显示的大小。什么时候会重新读取数据并因此发生新的 DP?这个怎么算?

谢谢。

问候, 托米斯拉夫

【问题讨论】:

  • 有什么特别的原因被否决了吗?
  • 我投了赞成票,所以它是 0

标签: google-bigquery


【解决方案1】:
  1. 联接、联合等的定价非常简单。无论需要读取什么源数据,都只收取一次费用。例如,如果您进行自联接,您仍然只需为单次读取数据付费。
  2. 参见#1。无论 bigquery 在内部如何运作,您都应该只收取一次费用。
  3. BigQuery 会尽最大努力缓存数据。如果您重新运行查询,则会检查缓存。如果缓存命中,您将不会因重新运行查询而付费。请注意,只有完整的查询结果会被缓存;如果您修改查询或在子查询中使用它,则不会使用缓存。
  4. BigQuery 最多以 1MB 为增量四舍五入,最小为 10MB。
  5. 我不知道谷歌控制台中的任何地理位置。您在哪里看到这些信息?
  6. 您可以通过 jobs.list api 获取查询历史记录和每个查询处理的数据量。
  7. 您能否发送您运行的大于预期的查询的作业 ID。完成的计算是 8 字节 *(读取的整数和浮点列的行数)+ 2 字节 *(读取的字符串列中所有字符串的总长度)。

如果这回答了你的问题,请告诉我。

【讨论】:

  • 关于 3. 的答案太模糊了。如果我们可以将旧的(缓存的)查询与新的查询结合起来,并且仍然从缓存中获得成本收益,我们也会感兴趣。但看起来一旦您向旧查询添加新的子查询,您就会被收取费用,就好像没有缓存一样。
  • 我会为 #4 添加 - 每个相关表的最小计费大小为 10MB
  • 你能澄清一下吗?如果我们将数据分片到每日表上,并且我们运行一个查询来覆盖 1 年的数据(使用 TABLE_DATE_RANGE),其中每个表仅包含 100KB 的数据,那么我们将收取 356 x 10MB = 3.56 GB 而不是 356 x 100kb = 35.6 MB ?
【解决方案2】:

我可以澄清#5。

在 Google API 控制台的“报告”下,有与项目 API 请求相关的人口统计信息。我怀疑这与 BigQuery 本身的关系不大,而与 Google API 控制台有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多