|
Заковыристая выборка контактных данных в Hadoop
|
|||
---|---|---|---|
#18+
Добрый день! Нужна помощь в выборке. Даже с трудом представляю как ее реализовать. Есть таблица clients (client_id, name) Есть таблица contact (client_id, phone, phone_type (1,2,3,4,5,12), contact_flg (1,0), date_add (timestamp)) Задача: Для всех client_id найти только одно значение телефона по следующему приоритету: 1. Телефоны, где contact_flg = 1 с самой ранней датой добавления 2. Если у клиента contact_flg = 1 нет, то телефоны у которых contact_flg = 0 и phone_type=5 с самой ранней датой добавления 3. Если у клиента нет телефонов с п. 1-2, то телефоны у которых contact_flg = 0 и phone_type=2 с самой ранней датой добавления 4. Если у клиента нет телефонов с п. 1-3, то то телефоны у которых contact_flg = 0 и phone_type= любому значению с самой ранней датой добавления. 5. Если по клиенту вообще нет телефонов – вывести null Первый пункт можно с использование row num и сортировки сделать, это я понимаю, но как остальные четыре уместить? Результатом должна быть единственная пара Client_id, phone ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2021, 15:03 |
|
Заковыристая выборка контактных данных в Hadoop
|
|||
---|---|---|---|
#18+
derart, А поверх Hadoop / hdfs что? Hive там, Spark/Scala или какая-нибудь экзотика типа ADLA/U-SQL и пр.? Или может есть склонность всю логику цепью на mapreduce вручную писать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2021, 16:56 |
|
Заковыристая выборка контактных данных в Hadoop
|
|||
---|---|---|---|
#18+
vikkiv, поверх hadoop - hive Написал так, но может есть изящнее решение? Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2021, 09:41 |
|
Заковыристая выборка контактных данных в Hadoop
|
|||
---|---|---|---|
#18+
derart, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
можно конечно подготовить наборы отвечающие условиям (каждому отдельно) и потом join а в select уже определить из какой таблицы выводить данные.. но это уже в зависимости от размеров таблиц (у Hive проблемы с индексами), профайлинг нужен для определения оптимальности под конкретную плотность/распределение данных ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2021, 06:35 |
|
|
Start [/forum/topic.php?fid=48&tid=1856537]: |
0ms |
get settings: |
30ms |
get forum list: |
10ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
93ms |
get topic data: |
152ms |
get forum data: |
4ms |
get page messages: |
326ms |
get tp. blocked users: |
2ms |
others: | 150ms |
total: | 779ms |
0 / 0 |