Как хранить массив или блоб в SnappyData?
Я пытаюсь создать таблицу с двумя столбцами, как показано ниже:
CREATE TABLE test (col1 INT ,col2 Array<Decimal>) USING column options(BUCKETS '5');
Он успешно создается, но когда я пытаюсь вставить в него данные, он не принимает какой-либо формат массива. Я пробовал следующие запросы:
insert into test1 values(1,Array(Decimal("1"), Decimal("2")));
insert into test1 values(1,Array(1,2));
insert into test1 values(1,[1,2,1]);
insert into test1 values(1,"1,2,1");
insert into test1 values(1,<1,2,1>);
etc..
Пожалуйста помоги!
1 ответ
Для этого есть открытый билет: https://jira.snappydata.io/browse/SNAP-1284 который будет рассмотрен в следующем выпуске для строк VALUES (строки JSON и строки, совместимые с Spark).
Совместимый формат Spark Catalyst будет работать:
insert into test1 select 1, array(1, 2);
При выборе данные по умолчанию отправляются в сериализованном виде и отображаются в двоичном виде. На данный момент вы должны использовать подсказку complexTypeAsJson, чтобы показать как JSON:
select * from test1 --+complexTypeAsJson(true);
Поддержка отображения в более простом формате строки по умолчанию будет добавлена в следующем выпуске.
Еще одна вещь, которую можно заметить в вашем примере, это простое значение для сегментов. Это было задокументировано как предпочтительное в предыдущих выпусках, но начиная с версии 1.0 рекомендуется использовать степень двойки или четное число (например, общее количество ядер в вашем кластере может быть хорошим выбором) - возможно, некоторые примеры все еще используют старая рекомендация.