У меня есть данные временных рядов в Импале, которые в этом формате.
Одна запись создается тогда и только тогда, когда есть изменения, обновленное значение представляет новые данные.
---------------------------------------
| Product | Year | Week | UpdatedValue |
---------------------------------------
|A | 2017 | 1 | 5 |
|A | 2017 | 5 | 10 |
|A | 2017 | 20 | 80 |
|B | 2017 | 8 | 90 |
|... | ... | ... | ... |
---------------------------------------
Предполагая, что наше временное окно - 2017 полный год с первой недели до недели 52. Приведенные выше данные говорят о том, что значение, измененное для продукта А на первой неделе, составило 5, 5-ю неделю до10 и 20-я неделя, чтобы быть 80. Я хочу заполнить пропущенное значение с помощью логики переноса последнего наблюдения, а если данные не начинаются с первой недели, то также заполнить пропущенные начальные значения следующейвхождение.
Это должно быть идеальным выходом.
---------------------------------------
| Product | Year | Week | UpdatedValue |
---------------------------------------
|A | 2017 | 1 | 5 |
|A | 2017 | . | 5 |
|A | 2017 | 4 | 5 |
|A | 2017 | 5 | 10 |
|A | 2017 | 6 | 10 |
|A | 2017 | . | 10 |
|A | 2017 | 20 | 80 |
|A | 2017 | . | 80 |
|A | 2017 | 52 | 80 |
|B | 2017 | 1 | 90 |
|B | 2017 | . | 90 |
|B | 2017 | 8 | 90 |
|B | 2017 | . | 90 |
|B | 2017 | 52 | 90 |
|... | ... | ... | ... |
---------------------------------------
Есть ли выполнимое решение Hive / Impala, в котором вы наверняка сможете использовать их расширенные аналитические функции, если это проще?Однако, если доступно универсальное решение SQL, это будет здорово.