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/