Hive - Использование date_add в предложении where - PullRequest
0 голосов
/ 16 мая 2018

У меня есть таблица, которая разбита по дате.Для запроса данных за последние 10 дней я обычно пишу что-то вроде:

SELECT * FROM table WHERE date = date_add(current_date, -10);

Коллега сказал, что это делает запрос менее эффективным, чем использование простой строки даты.Это тот случай?Кто-нибудь может мне это объяснить?Есть ли способ записать динамическую дату в предложение where, которое эффективно?

1 Ответ

0 голосов
/ 16 мая 2018

Единственная проблема здесь может быть с сокращением раздела. В некоторых версиях Hive обрезка разделов может не работать с функцией. Вы можете легко проверить это самостоятельно, выполнив команду EXPLAIN EXTENDED <your select query>. Он напечатает все пути к разделам для запроса.

В этом случае используйте предварительно вычисленное значение оболочки и передайте его в качестве параметра:

date_var=$(date +'%Y_%m_%d' --date "-10 day")

#call your script
hive -hivevar date_var="$date_var" -f your_script.hql

И использовать переменную в скрипте:

SELECT * FROM table WHERE date = '${hivevar:date_var}';

И если обрезка разделов работает хорошо, вам вообще не нужно беспокоиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...