GCP DataPrep-移动窗口(GCP DataPrep- moving window)

2019-11-04 20:31发布

我有以下的格式,我试图用GCP dataprep缠斗的CSV文件。

   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

数据在2周间隔5分钟延伸。 我想变换它使得在每次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。

我曾尝试窗函数与聚集,但似乎无法得到它的工作。

谢谢您的意见!

Answer 1:

我会通过重新格式化数据的每一行的形式是开始:

  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)

第一个参数是列名,第二个是前述的行,最后一个是在其上平均被计算以下的行数。 重复的湿度列上述功能。 结果应类似于以下内容:

接下来,过滤器行选项下,使用“行定期”功能,以保持每三排从第三项开始。 如下设置参数:

取出两个原始温度和湿度行,你会得到如下:

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


文章来源: GCP DataPrep- moving window