Переносить значения вперед в Presto - PullRequest
0 голосов
/ 15 марта 2020

Я использую приведенный ниже запрос для поворота моих данных и генерации CSV, но проблема в том, что у меня есть набор данных, в котором точки данных разбросаны с каждой отметкой времени.

with map_date as (
 SELECT 
 vin, 
 epoch,
 timestamp,
 date,
 map_agg(signalName, value) as map_values
 from hive.vehicle_signals.vehicle_signals_flat
where date(date) = date('2020-03-12')
and date(cast(from_unixtime(epoch) as timestamp) - interval '0' hour) = current_date - interval '2' day
and vin = '000011' 
and signalName in ('timestamp','epoch','msgId','usec','vlan','vin','msgName','value')
GROUP BY vin, epoch, timestamp, date
order by timestamp desc 
)
SELECT
  epoch
, timestamp
, CASE WHEN element_at(map_values, 'value') IS NOT NULL THEN map_values['value'] ELSE NULL END AS value
, vin
, current_date - interval '2' day AS date
from map_date

В результате я получаю следующий CSV. Есть ли способ перенести значение до тех пор, пока новое значение не будет найдено при более новой отметке времени? Как и на рисунке ниже, приходит значение «14 .3», а следующее значение «16 .5» появляется после нескольких отметок времени. Как я могу перенести значение «14 .3» до 7-й строки и повторить logi c для всего столбца. Как я могу сделать мое поле вывода похожим на столбец «G» на изображении с помощью Presto?

enter image description here

Заранее спасибо !!

1 Ответ

0 голосов
/ 15 марта 2020

Вы можете использовать mysql @variable для хранения последнего значения, например:

SELECT
  epoch
, timestamp
, CASE WHEN element_at(map_values, 'value') IS NOT NULL THEN @last_value:= map_values['value'] ELSE @last_value END AS value
, vin
, current_date - interval '2' day AS date
from map_date, (select @last_value:=0) v

Последняя часть, (select @last_value:=0) v, предназначена для инициализации переменной @last_value.

Учебник по основам c

https://www.mysqltutorial.org/mysql-variables/

Более сложный учебник с дополнительной информацией

https://www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/

...