【问题标题】:BigQuery cost for complex logic in custom functions自定义函数中复杂逻辑的 BigQuery 成本
【发布时间】:2020-02-12 16:32:50
【问题描述】:

我在这样定义的自定义函数中使用了相对昂贵的计算:

CREATE TEMP FUNCTION HMAC256(message STRING, secret STRING)
  RETURNS STRING
  LANGUAGE js
  OPTIONS (
    -- copy this Forge library file to Storage:
    -- https://cdn.jsdelivr.net/npm/node-forge@0.7.0/dist/forge.min.js
    -- @see https://github.com/digitalbazaar/forge
    library=["gs://.../forge.min.js"]
  )
  AS
"""
  var hmac = forge.hmac.create();
  hmac.start('sha256', secret);
  hmac.update(message);
  return hmac.digest().toHex();
""";


SELECT HMAC256("test", "111");

-- Row  f0_
-- 1    f8320c4eded4b06e99c1a884a25c80b2c88860e13b64df1eb6f0d3191023482b

与例如应用LOWER 函数相比,这会更昂贵吗?

HMAC256 在我的数据集上花费了 4 分钟,而在 LOWER 上花费了 14 秒,我在字节计费详细信息中看不到任何不同。

如果价格相同,那就太棒了。我有一种感觉,我错过了什么。

【问题讨论】:

  • 恭喜你运行了 js HMAC。它是否匹配 R 的 SHA256() 函数?
  • 是的,它与我的 R/python hmac 匹配

标签: google-bigquery cost-management


【解决方案1】:

是的。费用将是相同的。对于 BigQuery,您的查询可能会变得更复杂和更昂贵,但您只需按相同的费率收费,直到您的查询达到限制。如果您没有预订(又名flat-rate slots),您的禁区查询将失败。

第 100 层下的所有高计算查询均按第 1 层计费。

第 100 层以上的所有查询都将失败并出现 RESOURCES_EXCEEDED_PER_BYTE 错误,除非查询在预留实例中运行。

【讨论】:

  • 您能否澄清一下“在保留实例中”究竟是什么?这与固定价格预订相同还是其他?我看到的唯一参考是here - 但它并不完全清楚
  • 是的。是Flat-rate reservation
猜你喜欢
  • 2020-02-04
  • 2012-08-22
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多