Как использовать смещение предела с предложением где в apache детализации? - PullRequest
0 голосов
/ 19 марта 2020

Я работаю над apache запросом детализации и хочу использовать лимит и смещение в своем запросе.

запрос: -

SELECT  * FROM dfs.`C:\\EMPLOYEES.csv` LIMIT 20 OFFSET 5 ROWS

Вышеупомянутый запрос выполнялся и давал правильные данные. результат. Но я хочу использовать limit и offset с предложением where.

SELECT  * FROM dfs.`C:\\EMPLOYEES.csv` WHERE COLUMN[0] ='1' LIMIT 20 OFFSET 5 ROWS

Но этот запрос дает результат 0.

Пожалуйста, предложите, как я могу использовать limit offset с предложением where в apache сверлить.

1 Ответ

1 голос
/ 19 марта 2020

Пожалуйста, проверьте ваши данные и состояние фильтра, возможно, ничего не возвращено, поскольку у вас недостаточно данных, соответствующих фильтру, предел и смещение прекрасно работают с предложением where.

Пример:

Предположим, у нас есть следующие данные:

apache drill> select * from dfs.tmp.`data.csv`;
+-----------+
|  columns  |
+-----------+
| ["1","a"] |
| ["2","b"] |
| ["1","c"] |
| ["2","d"] |
| ["1","f"] |
| ["2","g"] |
| ["1","h"] |
| ["1","q"] |
| ["1","w"] |
| ["1","y"] |
| ["1","t"] |
+-----------+

Первый фильтр применяется:

apache drill> select * from dfs.tmp.`data.csv` where columns[0] = '1';
+-----------+
|  columns  |
+-----------+
| ["1","a"] |
| ["1","c"] |
| ["1","f"] |
| ["1","h"] |
| ["1","q"] |
| ["1","w"] |
| ["1","y"] |
| ["1","t"] |
+-----------+

Затем применяется смещение:

apache drill> select * from dfs.tmp.`data.csv` where columns[0] = '1' offset 5;
+-----------+
|  columns  |
+-----------+
| ["1","w"] |
| ["1","y"] |
| ["1","t"] |
+-----------+

И только затем ограничение:

apache drill> select * from dfs.tmp.`data.csv` where columns[0] = '1' limit 2 offset 5;
+-----------+
|  columns  |
+-----------+
| ["1","w"] |
| ["1","y"] |
+-----------+
...