在尝试使用Talend构建数据仓库应用程序时,我们遇到了以下情况。如何扁平化一对多关系
我们有一个看起来像
表主
ID | CUST_NAME | CUST_EMAIL
------------------------------------
1 | FOO | [email protected]
事件表
ID | CUST_ID | EVENT_NAME | EVENT_DATE
---------------------------------------
1 | 1 | ACC_APPLIED | 2014-01-01
2 | 1 | ACC_OPENED | 2014-01-02
3 | 1 | ACC_CLOSED | 2014-01-02
有主站和事件表之间存在一个一对多的关系的两个表的表。由于给定的事件名称数量有限,我建议将该结构非规范化为看起来像
ID | CUST_NAME | CUST_EMAIL | ACC_APP_DATE_ID | ACC_OPEN_DATE_ID |ACC_CLOSE_DATE_ID
-----------------------------------------------------------------------------------------
1 | FOO | [email protected] | 20140101 | 20140102 | 20140103
THE DATE_ID
列是指时间维度表内的条目。
第一个问题:这是个好主意吗?这个计划的其他选择是什么?
第二个问题:我如何使用Talend Open Studio来实现这个功能?我想出了一种方法,将每个事件名称的数据与cust_id一起使用tMap
组件移到它自己的临时表中,然后使用另一个tMap
将它们链接在一起。有没有另外一种方法可以做到这一点?
非常感谢。这也会起作用。如何使用tPivotToColumnsDelimited组件? – Bazooka 2014-10-08 11:23:03
tPivotToColumnsDelimited输出分隔文件,因此不适合您的需要。可以说,你可以输出一个临时文件,然后再读回来,但是对于你的用例来说这很麻烦和不必要。 – ydaetskcoR 2014-10-08 14:39:25
我同意。谢谢。 – Bazooka 2014-10-08 14:57:14