如何查询数组?

How to query on an array?

我在 drill 中有这样一个对象:

{MyFruit: [{name:Mike, age:10},{name:Jacob,age:9},{name:William, age:6}]}

我可以通过以下方式获得 "Mike":

Select MyFruit[0].name

有没有办法让我得到每个 "name" 的列表?我尝试了以下但它不喜欢它:

Select MyFruit[*].name

鉴于此 fruits.json 文件:

{"MyFruit": [{"name":"Mike", "age":10},{"name":"Jacob","age":9},{"name":"William", "age":6}]}

Drill 语句是:

select t.flatdata.name from (select flatten(MyFruit) as flatdata from dfs.`/Users/path/fruits.json`) t;
+----------+
|  EXPR[=11=]  |
+----------+
| Mike     |
| Jacob    |
| William  |
+----------+
3 rows selected (0.14 seconds)

您需要使用一个子查询来展平复杂的嵌套和 table 别名 t 和 flatdata,以解决歧义。