如何在snappaydata中检索存储的数组数据?

时间:2018-07-20 12:49:37

标签: sql arrays snappydata

我在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 个答案:

答案 0 :(得分:1)

如果您是来自远程客户端(即JDBC或ODBC)的SQL,则必须展平投影结果或使用Serializer(如示例所示)。但是,如果可以使用Spark API(Google搜索-在Spark中处理复杂数据类型),则可以在Spark SQL中导航和访问任何嵌套结构。

对于远程SQL访问(例如,使用snappy shell),一个更简单的选项将太简单地使您的结果在这样的查询中爆炸……。

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|
+---+---+