【发布时间】:2019-06-07 19:03:08
【问题描述】:
我有一些值随着时间(流)和一些不同的行进入,需要作为一行处理。
传入的数据看起来像这样:
|timestamp |temp|otherStuff|
|------------|----|----------|
|... | |other |
|04:20:00.321|19.0|other |
|04:20:01.123|20.5|other |
|04:20:02.321|22.5|other |
|04:20:03.234|25.5|other |
|04:20:04.345|23.5|other |
|...(new data coming in) |
我需要的可能是这样的:
|val0|val1|val2|...|valN |
|----|----|----| |------|
|... create new row, |
|as new data arrives |
|23.5|25.5|23.5|...|valN |
|25.5|22.5|20.5|...|valN-1|
|22.5|20.5|19.0|...|valN-2|
我没有找到用水壶解决这个问题的好方法。我还在使用数据服务(基本上是一个数据库,具有预定义的行数,一旦新数据集到达就会刷新),它以与第一个示例中显示的方式相同的方式保存数据。
这意味着我也可以使用 SQL 来翻转表格(我也不知道该怎么做)。它不会像使用水壶那样干净,但可以解决问题。
为了更好的理解,再举一个例子:这是进来的:
我需要将我的数据转换成这样的东西:
有什么好的方法可以实现吗?
干杯。
【问题讨论】:
-
使用
Analytic Query步骤,添加N+1字段,主题 =temp,类型 =Lag N rows BACKWARD in get Subject和N 从0到N -
@Raste,在第一张图片中,每一行都有自己的时间戳,但在第二张图片中,每一行都是时间戳的聚合。根据事情的运作方式,这可能是一个需要首先解决的实际问题。我可以想到几种方法,但我需要数据。
-
@CristianCurti,时间戳只是我用于测试正在进行的步骤的 hacky 实现的剩余部分。基本上我让一切都保持不变,只是在我的代码中缓冲值,从那里产生值(这是一种不好的做法,这就是我想在 Spoon 中缓冲它们的原因。)。所以一切都很好:)
标签: sql pentaho kettle pentaho-spoon