Могу ли я использовать JS BigInt в UDF BigQuery? - PullRequest
0 голосов
/ 16 октября 2018

Chrome V8 - движок JavaScript - недавно добавлена ​​поддержка BigInt - большие целые числа произвольной точности:

Могу ли я использовать эти BigInt в BigQuery?

1 Ответ

0 голосов
/ 16 октября 2018

Да!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
...