Да!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 - отсюда и необходимость BigInts.
Чтобы BigInts был совместим с BigQuery, вам нужно рассматривать их как String.Оставайтесь с нами, так как мы запросили улучшения для этого.
При неправильных типах вы можете получить следующие ошибки:
- Ошибка: не удалось принудительно привести выходное значение 9007199254740993 к типу NUMERIC
- Ошибка: не удалось принудительно привести выходное значение 9007199254740992 к типу INT64