Drill version: 1.4.0.  Assuming 3 JSON objects with the following structure:

  {  ...
    "batters":
      {
        "batter":
          [
            { "id": "1001", "type": "Regular" },
            { "id": "1002", "type": "Chocolate" },
            { "id": "1003", "type": "Blueberry" },
            { "id": "1004", "type": "Devil's Food" }
          ]
      },
    ...
  }

Now running a few sample queries against the above data:


A)      select "batters" returns expected results, which are the values of 
"batters" from each row.

0: jdbc:drill:zk=local> select batters from dfs.`c:\tmp\sample.json`;
+---------+
| batters |
+---------+
| 
{"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"},{"id":"1003","type":"Blueberry"},{"id":"1004","type":"Devil's
 Food"}]} |
| {"batter":[{"id":"1001","type":"Regular"}]} |
| {"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"}]} |
+---------+
3 rows selected (0.243 seconds)


B)      select "batters.batter" also returns the expected results, which are 
the array values for "batters.batter" from each row.


0: jdbc:drill:zk=local> select t.batters.batter from dfs.`c:\tmp\sample.json` t;
+--------+
| EXPR$0 |
+--------+
| 
[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"},{"id":"1003","type":"Blueberry"},{"id":"1004","type":"Devil's
 Food"}] |
| [{"id":"1001","type":"Regular"}] |
| [{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"}] |
+--------+
3 rows selected (0.198 seconds)


C)  select "batters.batter.id" returns something unexpected:

0: jdbc:drill:zk=local> select t.batters.batter.id from 
dfs.`c:\tmp\sample.json` t;
+---------+
| EXPR$0  |
+---------+
| 1001    |
| 1002    |
| 1003    |
+---------+

The above result doesn't make sense.  The result looks like the 3 values from 
row 1. Should the result be the following instead?

+---------+
| EXPR$0  |
+---------+
| [1001, 1002, 1003, 1004]    |
| [1001]    |
| [1001, 1002]    |
+---------+

Any hints on what is happening here?  Thanks.

-- Jiang

Reply via email to