2016-12-07 26 views
1
下面的情形

谁能帮我在下面的情景在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.using的taggregaterow和功能,我能够获得和功能

+0

一点点不可读。你能精确些吗? –

+0

参见笏u必须做ü必须创建在Talend的作业,这将有一个目标像下面Store_Target: SNO整数, STORE_NAME VARCHAR2(20), QUARTER_NAME VARCHAR2(20), SALES_PER_QUARTER数(10,4 )但是在2个源文件中我们有Q1,Q2,Q3,Q4。怎么做?目标会是这样的SNO,STORE_NAME,QUARTER_NAME,SALES_PER_QUARTER 1001,XYZ,Q1,100 1002,XYZ,Q2,200 1003,XYZ,Q3,150 1004,XYZ,Q4,900 1005,ABC, Q1,111 – Abhijit

+0

@Abhijit:基本上我明白了,你需要做PIVOT,这意味着行到列,所以你可以在Talend中使用下面的组件:https://help.talend.com/display/TalendComponentsReferenceGuide61EN/tPivotToColumnsDelimited –

回答

2

如果您正在寻找如下的结果,然后用tsplitrow组件

enter image description here

tsplitrow组分性质列于下图像

enter image description here

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

+0

嗨你的回答很有用。:) – Abhijit

0

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

我按照以下顺序步骤: -

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

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

  3. 在进一步的步骤中,使用tSplitRow分割季度列以填充Quarter_Name列。

  4. 然后使用tUniqRow删除基于键列的重复项。

请参考下面的图片

solution image