mysql - 我想将两行两列非规范化为一行 4 个不同的列

标签 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、类型、客舱、层 3 根据我的情况要求。

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

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

我尝试使用Row Flattner,但一次只能更改一列数据。我希望将两行列 FeeED 展平为 4 个不同的列,如“处理后”图像中所示。

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

最佳答案

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

必填: 您的数据应与示例中类似(分组的前五个字段相同):

根据您的起始位置/处理之前,它应该按照以下说明进行操作。

就在处理前的情况之后:

  1. step:排序依据(获取前 5 个字段以对后续分组进行排序)
  2. 步骤:按前 5 个字段进行分组(因此,除了费用和 ED 之外,这两个字段将在“聚合”字段中设置为“连接由 ,”分隔的字符串)-->“;”或“,”这里几乎相同,但对下一步很重要
  3. 预览:如果您进行预览,您会得到:

ID1;ID2;类型;机舱;等级;费用;ED

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

分组值 Fee 和 ED 在一个字段中用“,”分隔。

  • 拆分字段 - 步骤: 现在是时候拆分字段 Fee 和 ED(每个字段都需要两个拆分字段步骤。拆分的分隔符是“,”,在这里,您必须为拆分字段步骤中的第二个字段指定名称。

    最后的步骤分割字段,您可以将值放在一行中,以便根据需要进行计算。

  • 关于mysql - 我想将两行两列非规范化为一行 4 个不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31915539/

    相关文章:

    sql-server - ETL 匹配代码页 SSIS 数据流

    java - 将某些 Flink 操作优先于其他操作

    Java MySQL事务和executeBatch

    mysql - 查询模型的不同实例 + 另一个字段

    Pentaho 水壶 "Use batch update for Inserts"选项

    formatting - pentaho cde 表组件中带有很多小数的数字

    testing - 如何在ETL过程中进行测试(单元测试)?

    MYSQL 表在 x 小时后删除

    mysql - 在 mysql 中连接结果值

    pentaho - Mondrian 支持像 mongodb 这样的 nosql