任何人都可以帮助我在Talend的下面的场景

时间:2016-12-07 15:24:23

标签: talend

任何人都可以在Talend的以下场景中帮助我: -

根据以下方案创建映射

来源结构及其数据,

STORE_NAME  Varchar2 (20)
Q1_SALES    number (10, 4)
Q2_SALES    number (10, 4)
Q3_SALES    number (10, 4)
Q4_SALES    number (10, 4)

DB_Store_Source :(平面文件)

STORE_NAME  Q1_SALES    Q2_SALES    Q3_SALES    Q4_SALES

XYZ 100 200 150 900
ABC 111 222 789 763
DEF 333 444 555 2000

FF_Store_Source :(平面文件)

STORE_NAME  Q1_SALES    Q2_SALES    Q3_SALES    Q4_SALES

XYZ 100 200 150 900
ABC 111 222 789 763
ZZZ 200 200 200 300

目标结构,

Store_Target:

SNo integer,
STORE_NAME varchar2 (20),
QUARTER_NAME varchar2 (20),
SALES_PER_QUARTER number (10, 4)

从上面的场景中,创建一个映射以合并来自DB_Store_Source和FF_Store_Source的数据,并将唯一记录传递到Store_Target。 应该使用序列生成的值填充SNo(第一个记录以1000开头),其余列根据规范化从源填充

我可以使用唯一的行进行提取。即使我能够规范化但无法实现最后一部分,即如何存储quarter_name。使用taggregaterow sum函数我能够得到求和函数

2 个答案:

答案 0 :(得分:3)

如果您要查找以下结果,请使用tsplitrow组件

enter image description here

tsplitrow组件属性位于下方图片

enter image description here

注意:在获取唯一记录后使用tsplitrow组件。

答案 1 :(得分:0)

您可以使用以下解决方案,如问题底部的屏幕截图所示,以获得输出结果。

我按顺序执行了以下步骤: -

  1. 读取FF_STORE和DB_STORE的数据,并将两个输入的所有记录传播到tHashOutput。

  2. 在下一步中,我已将tHashOutput中的数据转移到tUnite组件以合并两个数据源记录。

  3. 在进一步的步骤中,使用tSplitRow拆分要在Quarter_Name列中填充的Quarter列。

  4. 然后使用tUniqRow根据键列删除重复项。

  5. 请参考下图

    solution image