我想将两行两列反规范化为4行,每行一行

时间:2015-08-10 09:03:44

标签: mysql pentaho etl

请考虑以下事项:

Before Processing
ID1  ID2  Type Cabin Tier Fee ED
2733 2606   43     4    2 100 4.77273
2733 2606   43     4    2 140 7.90909

After Processing
ID1  ID2  Type Cabin Tier Fee1 Fee2 ED1     ED2
2733 2606   43     4    2 100  140  4.77273 7.90909

我使用Pentaho ETL进行工作。

第一步是表输入,其中我正在获取所有唯一的数据集 ID1,ID2,Type,Cabin,Tier ,行数大于3根据我的要求。

然后我正在使用数据库连接来获取上述一组参数的数据,其中两个ED值最接近1及其费用值。

我需要进一步对费用和ED进行一些计算,并认为将它们与ED1和ED2一起作为Fee1和Fee2很容易。

我尝试使用 Row Flattner ,但我一次只能更改一个列数据。我希望将两行费用 ED 平铺为4个不同的列,如图像“After Processing”中所示。

实现这一目标的好方法是什么?

1 个答案:

答案 0 :(得分:0)

评论太长,以及答案(希望有帮助):

<强>必需: 您的数据应该与您的示例类似(分组的前五个字段相同):

根据您的起始位置/在处理之前,它应该按照这些说明工作。

在处理前的情况之后:

  1. 步骤:排序依据(获取前5个字段按顺序对以下组进行排序)
  2. 步骤:按前5个字段分组(除了费用和ED之外,这两个字段将在聚合字段中设置为&#34;连接字符串分隔,&#34;) - &gt; &#34 ;;&#34;或&#34;,&#34;它在这里几乎相同,但在下一步将是重要的
  3. 预览:如果您进行预览,则会得到:
  4. ID1; ID2;类型;船舱;层;费用; ED

    2733;2606;43;4;2;**100,140**;**4.77273,7.90909**
    

    分组值费用和ED与&#34;,&#34;分开。在一个领域。

    1. 拆分字段 - 步骤: 现在是时候分割字段费用和ED(每个分区需要两个分割字段步骤。分割的分隔符是&#34;,&#34;在这里,你必须给出一个名称分割字段中的第二个字段 - 步骤。
    2. 最后的步骤会拆分字段,您可以在一行中使用值进行计算。