Как получить сохраненные данные массива в 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|
+---+---+