【问题标题】:How to create value Buffer in Pentaho Kettle Transformation如何在 Pentaho Kettle Transformation 中创建 value Buffer
【发布时间】: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 SubjectN 0N
  • @Raste,在第一张图片中,每一行都有自己的时间戳,但在第二张图片中,每一行都是时间戳的聚合。根据事情的运作方式,这可能是一个需要首先解决的实际问题。我可以想到几种方法,但我需要数据。
  • @CristianCurti,时间戳只是我用于测试正在进行的步骤的 hacky 实现的剩余部分。基本上我让一切都保持不变,只是在我的代码中缓冲值,从那里产生值(这是一种不好的做法,这就是我想在 Spoon 中缓冲它们的原因。)。所以一切都很好:)

标签: sql pentaho kettle pentaho-spoon


【解决方案1】:

谢谢@jxc,

Analytic Query 步骤成功了。

这是我的截图。

正如@jxc 所说,你必须

添加 N+1 个字段,Subject = temp,Type = Lag N rows BACKWARD in get Subject 和 N 从 0 到 N

(在我的情况下,temp = Value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    相关资源
    最近更新 更多