【问题标题】:Can I use JS BigInt in a BigQuery UDF?我可以在 BigQuery UDF 中使用 JS BigInt 吗?
【发布时间】:2018-10-15 21:41:02
【问题描述】:

Chrome V8 - JavaScript 引擎 - 最近添加了对 BigInt - 任意精度大整数的支持:

我可以在 BigQuery 中使用这些 BigInt 吗?

【问题讨论】:

    标签: javascript google-bigquery user-defined-functions


    【解决方案1】:

    是的! BigQuery 运行最新版本的 V8 之一,因此它已经支持 BigInts。

    使用它们:

    CREATE TEMP FUNCTION testBigInt()
    RETURNS ARRAY<STRING>
    LANGUAGE js AS """
    
    return [
      Number.MAX_SAFE_INTEGER
      , Number.MAX_SAFE_INTEGER+2
      , Number.MAX_SAFE_INTEGER+1
      , Number.MAX_SAFE_INTEGER+100
      , BigInt(Number.MAX_SAFE_INTEGER) + 2n];
    
    """;
    
    SELECT testBigInt()
    
    9007199254740991     
    9007199254740992     
    9007199254740992     
    9007199254741092     
    9007199254740993
    

    从结果中,请注意 JavaScript 在不使用 BigInt 时会默默地产生错误答案 - 因此需要 BigInt。

    要使 BigInts 与 BigQuery 兼容,您需要将它们视为字符串。请继续关注,因为我们已要求对此进行改进。

    使用错误的类型可能会出现以下错误:

    • 错误:无法将输出值 9007199254740993 强制输入 NUMERIC
    • 错误:无法将输出值 9007199254740992 强制输入 INT64

    【讨论】:

      猜你喜欢
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多