GCP DataPrep-移动窗口

时间:2018-06-11 23:34:09

标签: google-cloud-platform google-cloud-dataprep

我有一个以下格式的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 :(得分:0)

我将从每行的格式重新格式化数据开始:

  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