У меня есть таблица, которая выглядит следующим образом: coord1
- это повторяющееся целочисленное поле:
Теперь я пытаюсь вычислить суммуэтого целочисленного массива coord1
в BigQuery, используя следующий код.После запуска этого кода, как ни странно, я получаю конкатенацию строк значений в этом массиве.Вот мой код и вывод:
CREATE TEMP FUNCTION func(array_values ARRAY<INT64>)
RETURNS INT64
LANGUAGE js AS """
var divisor = 0;
for(var i = 0; i < array_values.length; i++){
divisor = divisor + array_values[i];
};
return divisor;
""";
with
`project.dataset.table` as
(
SELECT 1 id1, [1, 2, 3, 4] coord1 UNION ALL
SELECT 2, [2, 0, 1, 1, 0, 2, 1, 1]
)
SELECT
id1,
coord1,
func(coord1) as array_sum
from
`project.dataset.table`
Но когда я добавляю функцию parseInt
перед добавлением значений в массив, кажется,правильно складывать числа в этом массиве:
CREATE TEMP FUNCTION func(array_values ARRAY<INT64>)
RETURNS INT64
LANGUAGE js AS """
var divisor = 0;
for(var i = 0; i < array_values.length; i++){
divisor = divisor + parseInt(array_values[i]);
};
return divisor;
""";
with
`project.dataset.table` as
(
SELECT 1 id1, [1, 2, 3, 4] coord1 UNION ALL
SELECT 2, [2, 0, 1, 1, 0, 2, 1, 1]
)
SELECT
id1,
coord1,
func(coord1) as array_sum
from
`project.dataset.table`
Я не понимаю, что я делал неправильно в первом опубликованном кодечто приводит к значениям в массиве, которые будут обрабатываться как строки, и возвращает мне объединение этих строк?