javascript - 我可以在 BigQuery UDF 中使用 JS BigInt 吗?

标签 javascript google-bigquery user-defined-functions

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

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

最佳答案

是的! 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

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

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

如果类型错误,您可能会收到以下错误:

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

关于javascript - 我可以在 BigQuery UDF 中使用 JS BigInt 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52825129/

相关文章:

javascript - 为什么在 JavaScript 中将对象插入另一个数组后,我的对象会变成数组?

python - BigQuery查询限制上下限

jdbc - 是否有用于 BigQuery 的 google 支持的 JDBC 驱动程序?

python - PySpark - 将列表作为参数传递给 UDF

java - 域名排序

javascript - 在动态复选框上添加 onclick 事件

google-cloud-platform - BigQueryIO - 流和 FILE_LOADS 的写入性能

scala - Spark 数据帧内映射中结构数组的聚合

sql-server - sql server 2012 - 无法对多语句表值函数的选择授予

javascript - 如何从底部显示Div的部分内容?