我在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;
尝试了很多查询,但是这些查询对我不起作用。
答案 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|
+---+---+