Поддержка файлов Parquet в Snowflake, похоже, использует эту форму структурированного вывода для типов данных списков / массивов, встречающихся в схеме файла.
Хотя, похоже, нет никакого способа повлиять на это с помощью параметров , реальные данные, переносимые в созданной структуре, не повреждены, поэтому вы можете выполнить преобразование с помощью UDF , чтобы получить очищенный массив примитивов:
create or replace function PARQ_LIST_TO_ARRAY(PARQ_LIST VARIANT)
returns ARRAY
language javascript
as
'
values = []
PARQ_LIST.list.forEach( (e) => {
values.push(e.element)
})
return values
';
Вы также можете запустить это непосредственно над столбцом файла Parquet (например, во время загрузки ):
> select $1:arr_col_name as lst from @stage/file.parquet;
lst
{ "list": [ { "element": "1" }, { "element": "4" } ] }
> select PARQ_LIST_TO_ARRAY($1:arr_col_name) as arr from @stage/file.parquet;
arr
["1", "4"]