Вы должны рассматривать числа, которые слишком велики для JavaScript, как строки.
Например, JS не знает, как обрабатывать -99999999999999999999999999999.999999999
:
![enter image description here](https://i.stack.imgur.com/5tyjX.png)
Между тем этот код работает в NodeJS для вставки этого огромного числа в BigQuery:
BigQuery = require('@google-cloud/bigquery');
bigquery = BigQuery({projectId: 'my-project'});
dataset = bigquery.dataset('tt');
table = dataset.table('testfun_numeric');
rows = [{
name:"whatever",
numi: "-99999999999999999999999999999.999999999"
}];
table.insert(rows);
И в BigQuery:
SELECT name, numi
, numi=numi+1000 better_comparison
FROM `fh-bigquery.tt.testfun_numeric`
![enter image description here](https://i.stack.imgur.com/6OJqg.png)
Ранее я создавал таблицу в BigQuery с
CREATE TABLE `tt.testfun_numeric`
AS
SELECT '' name, CAST(0 AS NUMERIC) numi
LIMIT 0
FWIW, я также пытался BigInt(Number.MAX_SAFE_INTEGER)
в NodeJS, но библиотека не будет правильно отправлять ее в BigQuery- если я сначала не преобразовал его в строку.