自定义函数中复杂逻辑的BigQuery成本

时间:2019-10-16 00:08:43

标签: google-bigquery cost-management

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

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秒,我看不到字节计费细节。

如果价格相同,那太好了。我有一种想念的感觉。

1 个答案:

答案 0 :(得分:1)

是的。费用将相同。对于BigQuery,您的查询可能会变得更加复杂和昂贵,但是直到查询达到极限时,您才需要支付相同的费用。如果您没有预订(又名flat-rate slots),您的超限查询将失败。

  

第100层下的所有高计算查询都记为第1层。

     

除非查询在保留实例中运行,否则所有高于100级的查询都将失败,并显示RESOURCES_EXCEEDED_PER_BYTE错误。