GCP DataPrep - перемещение окна - PullRequest
0 голосов
/ 12 июня 2018

У меня есть файл CSV следующего формата, который я пытаюсь изменить с помощью GCP dataprep.

   Timestamp                 Tag           Value
   2018-05-01 09:00:00     Temperature     40.1
   2018-05-01 09:00:00     Humidity        80
   2018-05-01 09:05:00     Temperature     40.2
   2018-05-01 09:05:00     Humidity        80
   2018-05-01 09:10:00     Temperature     40.0
   2018-05-01 09:10:00     Humidity        82

Данные растягиваются с интервалом в 5 минут на 2 недели.Я хотел бы преобразовать его таким образом, чтобы на каждом 10-минутном интервале я отображал среднее (или минимальное / максимальное / среднее значение) предыдущих 10 минут, а также поворачивал его так, чтобы конечный результат, который я получил, был следующим:

  Timestamp             Temperature    Humidity
 2018-05-01 09:10:00      40.1         80.06

Таким образом, значение в 09:10 является средним значением значений в 09:00, 09:05 и 09: 10.

И значение в 09:25 будетсреднее значение в 09: 15,09: 20,09: 25.

Я пробовал оконные функции и агрегат, но, похоже, не смог заставить его работать.

Спасибо за вашвход!

1 Ответ

0 голосов
/ 01 августа 2018

Я бы начал с переформатирования данных, где каждая строка имеет вид:

  Timestamp                Temperature      Humidity 
  2018-05-01 09:00:00      40.1             80
  2018-05-01 09:05:00      40.2             80
  2018-05-01 09:10:00      40               82
  2018-05-01 09:15:00      41               81
  2018-05-01 09:20:00      40.8             81
  2018-05-01 09:25:00      40.2             84

Это уменьшит размер ваших данных в два раза и уменьшит объем используемого вами пространства хранения.Вы можете использовать функцию 'преобразование значений в столбцы' в Dataprep.Это создаст столбец для температуры и один для влажности.

В этом формате вы можете использовать оконную функцию ROLLINGAVERAGE для вычисления средних значений.Сделайте так, чтобы функция вычисляла среднее значение для двух предшествующих ей строк, установив следующие параметры:

rollingaverage(Temperature, 2, 0)

Первый аргумент - это имя столбца, второй - предыдущие строки, а последний - числоиз следующих строк, по которым вычисляется среднее.Повторите вышеуказанную функцию для столбца Влажность.Результаты должны выглядеть примерно так: enter image description here

Далее, под опцией фильтра строк, используйте функцию «строки через равные интервалы» , чтобы сохранить каждую третью строкуначиная с третьей записи.Установите этот параметр следующим образом: enter image description here

Удалите две исходные строки температуры и влажности, и вы получите следующее:

  Timestamp                Temperature      Humidity 
  2018-05-01 09:10:00      40.1             80.67
  2018-05-01 09:25:00      41               82
...