Как получить сохраненные данные массива в snappaydata?

У меня есть образец массива данных в snappydata.

snappy-sql> select * from test;
ID         |DOMAINS                
-----------------------------------
1          |{"COL_0":[1,2]}        
2          |{"COL_0":[1,2,5,6,7,9]}

Вставлены данные с использованием этого запроса:

insert into test select 1, array(1,2);

insert into test select 2, array(1,2,5,6,7,9);

Как получить этот сохраненный массив данных? Я попробовал это:

select * from test where DOMAINS having 1;

select * from test where DOMAINS = 1;

select * from test where DOMAINS IN 1;

select * from test where COL_0 HAVING 1;

Пробовал так много запросов, но эти запросы не работают для меня.

1 ответ

Если вы используете SQL с удаленного клиента (например, JDBC или ODBC), вы должны либо сплющить спроецированный результат, либо использовать Serializer, как показано в примере. Но если вы можете использовать Spark API (поиск Google - работа со сложными типами данных в spark), вы можете перемещаться и получать доступ к любой из ваших вложенных структур в Spark SQL.

Для удаленного доступа к SQL (например, с использованием оболочки snappy) более простой вариант будет слишком просто взорвать ваш результат в запросе, как этот....

create table test using column as (select 1 as id, array(1,2) as nestedData from range(1))
insert into test select 2, array(1,2,3,4,5)
select id, explode(nesteddata) from test

+---+---+
| ID|col|
+---+---+
|  1|  1|
|  1|  2|
|  2|  1|
|  2|  2|
|  2|  3|
|  2|  4|
|  2|  5|
+---+---+
Другие вопросы по тегам