|
Hadoop impala/hive подскажите, в какую сторону смотреть, что из функций можно использовать
|
|||
---|---|---|---|
#18+
Добрый вечер, уже сломала голову над задачей, может у кого-то будут дельные предложения: У меня есть витрина Hadoop, использую sql: В витрине содержатся данные вида инн(client), коэффициент (k), квартал(q), год(y) Т.е. например, Client K Q Y 1234 1 1 2015 1234 3 2 2015 1234 4 3 2015 1234 2 4 2015 1234 3 1 2016 1234 1 2 2016 1234 5 3 2016 Мне нужно посчитать значение Vn=0,8*k+0,2*Vn-1 Т.е. в моем примере 2014 будет 0, т.к его нет Q1/2015=0,8*1+0,2*0 Q1/2016=0,8*3+0,2*Q1/2015. И так за каждый квартал. Квартал сравниваем с таким же по очередности кварталом предыдущего года. Я понимаю как это сделать добавив ещё таблиц на каждый год - но это не вариант для промышленного решения. Использовала lag, но в рамках k, не могу найти как взять итог предыдущего вычисления ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 21:18 |
|
Hadoop impala/hive подскажите, в какую сторону смотреть, что из функций можно использовать
|
|||
---|---|---|---|
#18+
Сделал в оракле Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
результат ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 16:21 |
|
Hadoop impala/hive подскажите, в какую сторону смотреть, что из функций можно использовать
|
|||
---|---|---|---|
#18+
смысл в том, что формулу Vn = 0,8*k + 0,2 *Vn-1 можно представить в виде Vn = 0,8*k + 0,2 * 0,8 * k-1 + 0,2*0,2*Vn-2 +.. или Vn = 0,8*k*0,2**(Yn-Yn) + 0,8*k*0,2**(Yn-Yn-1) + .. для этого делаем лефт джойн таблицы с самой собой, чтобы получить для каждого квартала строки из предыдущих кварталов. Потом суммируем всё с соответствующими степенями 0,2. Для текущей строки степень будет 0, то есть просто 0,8*k. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 16:25 |
|
|
start [/forum/moderation_log.php?user_name=%D0%98%D0%B7+Oracle+%D1%84%D0%BE%D1%80%D1%83%D0%BC%D0%B0]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 665ms |
total: | 866ms |
0 / 0 |