HIVEQL выбрать все учетные записи для данного клиента, который имеет по крайней мере одну учетную запись, которая удовлетворяет определенным критериям - PullRequest
0 голосов
/ 14 января 2019

Итак, у меня есть большой набор данных, который содержит счета кредитных карт. Клиент может иметь несколько учетных записей кредитных карт. Таким образом, учетные записи уникальны, клиент, безусловно, не уникален (клиент «1234» может иметь 5 учетных записей). Я хочу выбрать весь список учетных записей клиента, если какая-либо из учетных записей удовлетворяет определенному требованию. Требование просматривает дату последнего цикла (когда последний раз циклировался счет). так что давайте посмотрим на этот набор данных ...

account|customer|last_cycle_dt
4839|1|20190114
9522|1|20190103
1195|1|20181227
5461|2|20190112
1178|2|20190108
2229|2|20181218
8723|3|20181227
5692|3|20181227
0392|4|20190113
1847|5|20190113
0389|5|20190112
3281|5|20190101
2008|5|20181222
3948|5|20181216

Итак, я отсортировал данные определенным образом, чтобы их было легче увидеть. На самом деле, возможно, данные должны быть отсортированы таким образом, чтобы сделать извлечение (наиболее эффективно), но я не уверен.

Таким образом, критерии в нашей выдержке выберут все учетные записи клиентов, у которых есть хотя бы 1 учетная запись, поле last_cyc_dt которого БОЛЬШЕ 20180112

Итак ... Мы бы выбрали ВСЕХ клиентов 1 аккаунт Мы выбрали бы ни одного из клиентов 2 счета Мы бы выбрали НЕТ клиентов 3 аккаунта Мы бы выбрали ВСЕХ клиентов 4 аккаунта Мы бы выбрали ВСЕХ клиентов 5 аккаунтов

Поскольку существует хотя бы 1 учетная запись для этого клиента, дата последнего цикла которого превышает 20180112

Каков наилучший подход к достижению этого в HIVE?

1 Ответ

0 голосов
/ 14 января 2019

Используя max в качестве оконной функции, получите последний last_cycl_dt для каждого customer и проверьте, превышает ли он требуемую дату.

select account,customer,last_cycl_dt
from (select t.*,max(last_cycle_dt) over(partition by customer) as latest_last_cycl_dt
      from tbl t
     ) t
where latest_last_cycl_dt > '20180112'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...