Использование ARRAY_TO_STRING с целочисленным массивом - PullRequest
0 голосов
/ 24 марта 2020

ARRAY_TO_STRING() работает со строковыми массивами, но не поддерживается целочисленными массивами.

У меня есть повторяющийся столбец, содержащий список идентификаторов, я хочу экспортировать его из набора данных США в набор данных ЕС. Пока что я использую

bq query --nouse_legacy_sql --allow_large_results --max_rows=100000000000 --format=csv < {sql_file} > {output_file}, но это не работает с вложенными столбцами, поскольку CSV не поддерживает их.

Другой вариант - экспорт как json, но мне нужно преобразовать это до новой строки JSON. Я мог бы использовать jq для преобразования, но по умолчанию он не установлен на сервере.

Вместо этого я иду по пути выравнивания повторяющихся столбцов перед экспортом. Я думаю, мне нужно преобразовать каждый элемент массива в строку, а затем использовать ARRAY_TO_STRING(). Я иду по правильному пути?

Мне кажется, я хочу что-то похожее на

SELECT ARRAY_TO_STRING(ARRAY((SELECT CAST(* AS STRING)), ';') FROM UNNEST(segments)) FROM my_table

, но это дает мне Syntax error: Unexpected "*", как и должно быть. Есть идеи?

1 Ответ

1 голос
/ 24 марта 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT (
    SELECT STRING_AGG(CAST(id AS STRING), ';') 
    FROM UNNEST(segments) id
  ) 
FROM `project.dataset.mytable`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...