Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
28.01.2021, 15:03
|
|||
---|---|---|---|
|
|||
Заковыристая выборка контактных данных в 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, 16:56
|
|||
---|---|---|---|
Заковыристая выборка контактных данных в Hadoop |
|||
#18+
derart, А поверх Hadoop / hdfs что? Hive там, Spark/Scala или какая-нибудь экзотика типа ADLA/U-SQL и пр.? Или может есть склонность всю логику цепью на mapreduce вручную писать? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.01.2021, 09:41
|
|||
---|---|---|---|
|
|||
Заковыристая выборка контактных данных в Hadoop |
|||
#18+
vikkiv, поверх hadoop - hive Написал так, но может есть изящнее решение? Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.01.2021, 06:35
|
|||
---|---|---|---|
Заковыристая выборка контактных данных в 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 проблемы с индексами), профайлинг нужен для определения оптимальности под конкретную плотность/распределение данных ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=48&mobile=1&tid=1856537]: |
0ms |
get settings: |
25ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
139ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 250ms |
0 / 0 |